Sécurisation du service VoIp - CardinPatson/SysAdmin GitHub Wiki
L'utilisation d'outils connectés à Internet augmente les risques potentiels pour la sécurité quelque soit le service et la dépendance des entreprises aux réseaux informatiques les rend de plus en plus vulnérables aux cybermenaces. En ce qui concerne la VoiP, le risque de sécurité est lié à la probabilité de perte ou d'exposition à une cyberattaque ou à une violation des données.
Le but d'une attaque de type DDos est de rendre indisponible un service en submergeant toute la bande passante afin d'empêcher les utilisateurs de l'utiliser. Dans ce cadre-ci, un réseau de botnets inonde les services VoiP de demandes de données ou de connexion, les rendant inopérants.
L'attaquant intercepte le trafic des messages SIP de signalisation d'appel et se fait passer pour l'appelant. Il peut, dès lors, détourner des appels via un serveur de redirection.
Cette attaque traque les terminaux. Elle récupère les messages INVITE et BYE en écoutant le réseau et peut ainsi récolter des informations comme l'heure, le temps de la conversation et les protagonistes.
Similaire aux tentatives de Phishing et autres spams dans les emails. Ces appels SPAM sont des attaques qui effectuent des appels automatiques et lancent un enregistrement lorsque le service concerné décroche.
L'usurpation d'identité basé sur la VoiP est un processus par lequel un pirate vous appelle en se faisant passer pour une source de confiance afin de soutirer des informations sensibles (mots de passe,, numéros de cartes de crédit...)
Tout comme n'importe quel application Internet, la VoiP est vulnérable aux vers, virus et autres malwares. Bon nombre de ces programmes malveillants peuvent créer des portes dérobées dans le système ce qui permet à leurs auteurs d'écouter les appels et de voler des informations importantes.
Un attaquant avec un accès au réseau VoiP peut sniffer le trafic et décoder la conversation vocale à l'aide par exemple d'un logiciel appelé VOMIT (Voice Over Misconfigured Internet Telephones) qui convertit une conversation téléphonique en un fichier wave. L'attaquant peut dès lors avoir accès à des informations sensibles (mots de passe, numéro de comptes...) ou d'autres informations utiles qu'il réutilisera à l'envi.
Les pirates tentent de perturber les appels en cours, soit en injectant des paquets de bruit ce qui rend la qualité instable, soit en retardant la livraison des paquets ce qui rend la communication inégale et instaure de longues périodes de silence.
Les pirates pénètrent dans le système VoiP afin de passer des appels interurbains, de modifier les forfaits d'appels, d'ajouter plus de crédits de compte et de passer les appels téléphoniques supplémentaires qu'ils souhaitent, au frais de l'utilisateur.
Quelques contre-mesures générales peuvent être mises en place afin de garantir la sécurité du système VoiP.
- Cryptage des données
- Des mots de passe forts et variés
- Tests réguliers du réseau pour les vulnérabilités de sécurité
- Mises à jour régulières des outils utilisés
- Formation des employés sur l'attitude à tenir en cas de phishing
Quelques mesures à mettre en place :
- Connexion internet distincte et dédiée uniquement à la VoiP
En plus des contre-mesures décrites ci-dessus, il faut :
- Eviter les réseaux Wifi publics et non sécurisés
- Installer un cryptage WAP/WEP fort sur les points d'accès
En plus des contre-mesures décrites ci-dessus, il faut envisager l'implémentation d'un pare-feu.
- Eviter de fournir des informations par téléphone à toute personne prétendant appartenir à un organisme sensible (Banque, Mutuelle, Sécurité Sociale...)
- Rejoindre le registre des numéros de téléphone exclus
- Ne pas répondre aux invites vocales via des réponses vocales ou des tonalités
En plus des contre-mesures décrites ci-dessus, il ne faut pas négliger l'installation d'un antivirus complet de nouvelle génération.
- Utilisation de SRTP afin que le protocole Voip soit crypté
- Sécuriser le trafic avec TLS
- Utiliser un VPN pour sécuriser les données en utilisant la méthode du tunneling
- Utiliser un fournisseur VoiP qui crypte les appels avant qu'ils ne soient envoyés
- Activer le chiffrement de bout en bout,
- Utiliser TLS pour authentifier les paquets de données
- Utiliser un logiciel de détection de point de terminaison.
Il est difficile de repérer l'intrusion d'un phreaker. Pour prévenir ces attaques, il faut garder à l'esprit les contre-mesures générales décrites plus haut ainsi que des vérifications régulières du trafic et bien sûr des factures
Fail2ban est un utilitaire gratuit qui cherche les tentatives répétées de connexions dans les logs des divers services et procède à un bannissement en ajoutant une règle au pare-feu.
- Installation de fail2ban
sudo apt install fail2ban - Démarrage de fail2ban
sudo systemctl start fail2ban - Configuration de fail2ban : Les fichiers à configurer se trouvent dans le répertoire /etc/fail2ban.
Il s'agit des fichiers /etc/fail2ban/fichier.d/asterisk.conf et /etc/fail2ban/jail.conf.
Par défaut, fail2ban autorise 5 tentatives de connexions (maxretry=5) toutes les 10 minutes (findtime=600s) et banni l'IP pour 10 minutes (bantime=600s).
Il faut éditer le fichier /etc/fail2ban/jail.conf :
ignoreip = 127.0.0.1/8 192.168.0.0/16 #permet de ne pas bannir ces ranges d'adresse IPs
findtime = 600 #permet de renseigner la période de temps d'examination des logs
bantime = 3600 #permet de renseigner la durée de bannissement
On rajoute une section pour le serveur Asterisk :
[asterisk-iptables] #le nom de la prison
enabled = true #active/désactive un filtre
filter = asterisk #pointe vers le fichier filtre qui sera créé ci-dessous
port = 5060 #spécifie le port qui sera bloqué
action = iptables-allports[name=ASTERISK, protocol=all] #définit l'action du filtre
logpath = /var/log/asterisk/messages
maxretry = 3 #nombre de tentatives
findtime = 21600 #par défaut
bantime = 86400 #par défaut
On définit le filtre Asterisk, en rajoutant les lignes suivantes dans le fichier /etc/fail2ban/filter.d/asterisk.conf. Ces lignes vont permettre de préciser les expressions que le programme doit retrouver dans les logs :
[INCLUDE]
[Definition]
failregex = NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – Wrong password
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – No matching peer found
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – No matching peer found
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – Username/auth name mismatch
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – Device does not match ACL
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – Peer is not supposed to register
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – ACL error (permit/deny)
NOTICE.* .*: Registration from ‘.*’ failed for ‘:.*’ – Device does not match ACL
NOTICE.* .*: Registration from ‘\ ».*\ ».*’ failed for ‘:.*’ – No matching peer found
NOTICE.* .*: Registration from ‘\ ».*\ ».*’ failed for ‘:.*’ – Wrong password
NOTICE.* <HOST> failed to authenticate as ‘.*’$
NOTICE.* .*: No registration for peer ‘.*’ \(from \)
NOTICE.* .*: Host <HOST> failed MD5 authentication for ‘.*’ (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
NOTICE.* .*: <HOST> failed to authenticate as ‘.*’
NOTICE.* .*: <HOST> tried to authenticate with nonexistent user ‘.*’
VERBOSE.*SIP/-.*Received incoming SIP connection from unknown peer
SECURITY.* SecurityEvent= »FailedACL ».*RemoteAddress= ».+?/.+?//.+? ».*
SECURITY.* SecurityEvent= »InvalidAccountID ».*RemoteAddress= ».+?/.+?//.+? ».*
SECURITY.* SecurityEvent= »ChallengeResponseFailed ».*RemoteAddress= ».+?/.+?//.+? ».*
SECURITY.* SecurityEvent= »InvalidPassword ».*RemoteAddress= ».+?/.+?//.+? ».*
- Créer le démarrage automatique
sudo systemctl enable fail2ban - Contrôler la bonne installation
sudo systemctl status fail2ban
- Installation de openssl
sudo apt install openssl srtp-utils - Création des clés pour le serveur Asterisk.
- Création du dossier qui contiendra les clés
mkdir /etc/asterisk/keys - Création des clés : le script se trouve dans le fichier
cd /usr/src/asterisk/asterisk-12.0.0/contrib/scripts/ - Exécuter le script
./ast_tls_cert -C asterisk.networklab.com -O "NetworkLab" -d /etc/asterisk/keys - Les fichiers suivants sont créés :
root@debian:/usr/src/asterisk/asterisk-18.12.0/contrib/scripts# ls /etc/asterisk/keys/
asterisk.crt asterisk.csr asterisk.key asterisk.pem ca.cfg ca.crt ca.key tmp.cfg
- Il faut faire de même pour les clients
./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone101.networklab.com -O "NetworkLab" -d /etc/asterisk/keys -o 101
Répéter l'opération pour tous les postes de l'entreprise 4. Configurer Asterisk pour autoriser l'utilisation de TLS, cela se fait dans le fichier sip.conf :
[general]
tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1
- Autoriser les postes à utiliser TLS, cela se fait dans le fichier users.conf et rajouter la ligne``transport=tls`pour les postes amenés à utiliser le service VoiP.
- Configurer les postes. Ils doivent avoir 2 fichiers
ca.crtetclient.pem. Dans l'application client, ajouter l'adresse du serveur Asterisk comme Proxy, spécifier le port 5061 et forcer le TLS. Terminer en renseignant les chemins des fichiers__client.pem__et__ca.crt__.
- Ajouter le support SRTP à Asterisk Télécharger la librairie SRTP à installer
cd srtp
./configure CFLAGS=-fPIC --prefix=/usr
make
make install
- Relancer Asterisk pour qu'il prenne en charge SRTP
cd /usr/src/asterisk/asterisk-18.12.0/
make clean
./configure
make
make install
- Ensuite charger le module SRTP
asterisk –rv
module load res_srtp.so
- Forcer l'utilisation de SRTP sur les postes visés en ajoutant la ligne
encryption=yesdans__users.conf__ - Relancer Asterisk
- Configurer les postes dans l'application client pour qu'ils utilisent SRTP .
Sources
https://aircall.io/blog/tech/voip-security/
https://getvoip.com/blog/2020/05/06/voip-security/
https://www.cloudtalk.io/blog/5-common-voip-security-risks-that-might-threaten-your-business/
https://actualiteinformatique.fr/cybersecurite/definition-vishing-hameconnage-vocal-ou-voip
https://www.vskills.in/certification/tutorial/voip-attacks/
https://www.voip-info.org/asterisk-security/
https://pastel.archives-ouvertes.fr/pastel-00559130/document
https://blog.malandra.be/comment-configurer-fail2ban-pour-votre-serveur-asterisk/