PDA

Voir la version complète : securisation d'une installation asterisk



grocanar
30/03/2011, 18h30
Bonjour

Je suis en train de mettre en place une plateforme asterisk.
je m'interroge sur la mise en place d'un niveau de securité correct surtout que cette plateforme devra etre accessible de partout sur internet avec des softphones ou des smartphones mais egalement en interne par des hardphones.

- quelles solutions avez vous mis en place au niveau d'asterisk?

Il y a des choses que je pourrais imposer et pas d'autres.

- Est ce qu'il existe un moyen simple de crypter l'authentification SIP sans forcement crypter le contenu voix?

merci d'avance pour toutes reponses

Ricou76
31/03/2011, 00h02
Salut,

En fait, le gros souci va résider dans le nomadisme... Donc, pas possible de faire du filtrage par IP source avec IPtables, ni même avec les syntaxes "contactdeny=0.0.0.0/0.0.0.0" + "contactpermit" par la suite.

En connaissance de cause, il va être nécessaire d'ajouter en Fail2Ban sur ton IPBX, et surtout un IPtables bien renseigné pour limiter l'accès aux seuls services ToIP.

Aussi, j'ai pris l'habitude de faire un "module unload" de certains modules de mon Asterisk, dans le fichier module.conf :
; Nettoyage Asterisk
noload => chan_skinny.so
noload => chan_iax2.so
noload => chan_mgcp.so
noload => chan_unistim.so
noload => pbx_dundi.so

Comme ca, je n'ai que le 5060 qui ecoute. :)


Après, je ne peux t'en dire plus sur le SIP TLS, ni même sur le SRTP... Pas testé !


Edit : Ah oui, et petite astuce : evite les noms d'utilisateur composés uniquement de chiffres, mais complexifie les un peu plus, avec un nom dedans par exemple. Les Brute Forces se basent généralement sur des tentatives par dictionnaire avec des identifiants allant de 1 à 9999.

jean
31/03/2011, 02h34
salut

fail2ban impératif...
ce thread aussi: http://www.asterisk-france.net/showthread.php?t=8021
et ce post: http://forums.digium.com/viewtopic.php?f=1&t=76654#p152470

si tu as la main sur les clients, changer le port 5060 par un autre de ton choix limite énormément les attaques de robots... mais absolument pas les attaques de personnes te visant personnellement.

si tu as des $$$, il existe des firewall dédiés, qui font de l'analyse de protocoles, et peuvent détecter des tentatives d'intrusion sip.

pour la sécurisation, le TLS sécurise le SIP, indépendamment du flux RTP. C'est un peu de travail à mettre en oeuvre, mais surtout, il faut t'assurer que tes clients supportent ce protocole. mais c'est une très bonne solution !

have fun...

kmta
31/03/2011, 08h48
Salut,

Pour la mise en place du cryptage des paquets de signalisation SIP, regarde ce post : http://www.asterisk-france.org/showthread.php/811-Trixbox-et-TLS

Je l'ai fait hier et le cryptage SSL sur mon serveur Trixbox 2.8 avec Astérisk 1.6 fonctionne. Je pense que sa pourra t'aider.

fastm3
31/03/2011, 09h51
Vous avez oublié le vpn surtout pour le nomadisme.
J'avais fait un tuto la:
http://www.asterisk-france.org/content.php/37-Protection-des-postes-nomades-Asterisk-un-exemple-configuration-de-vpn-pptpd

1- Sur les installs asterisks, sur le port 5060 ou celui choisi, seuls les ips du fournisseurs sip, du subnet local et du vpn sont autorisées par iptables.
2- Utilisation du champs permit et autorisation du subnet correspondant: local et/ou vpn mais uniquement pour les nomades pour une 2eme protection.

En fait, aucune ip "qui n'est pas en white list" ne peut se connecter meme si elle connaissait le user/pass sip. Et meme avec un acces vpn, il faudrait connaitre le user/pass.
On combine ca avec un fail2ban, un changement de port et on commence a diminuer serieusement les possibilités de hack.

La solution est facile a mettre en place sur un pc ou un iphone nomade car ils supportent en natif le vpn.

Vu les prix des forfaits fixe illimité sur portable et les difficultés d'avoir un hotspot wifi de qualité ou internet tout simplement quand on est nomade, l'interet me semble neanmoins de plus en plus limité . C'est tellement plus simple en tout lieu d'appeler le standard en gsm et d'acceder alors aux service de l'ipbx.

Fastm3.

celya
31/03/2011, 10h21
1 - utiliser des comptes SIP avec des chiffres et des lettres (C'est pas un jeu de mot, on est pas vendredi)
2 - Utiliser pwgen pour la génération des password
3 - Utiliser un FW qui sait reconnaitre les attaches par dictionnaire et les black-list (Pfsense c'est bien, sinon failtoban)
4 - Bloquer les scans de port

Ca sa devait déjouer 99.99 des attaques.

grocanar
31/03/2011, 11h40
Bonjour

merci pour toutes ces réponses. Je fais un petit récapitulatif de ce que vous m'avez répondu avec mes commentaires:

- Utiliser des comptes sip avec des noms qui ne sont pas les numéros et assez "compliqués".
En effet cela complique l'attaque par force brute. J'y vois deux contraintes mais que je vais devoir gérer
* cela complique le déploiement et la configuration des postes. Je ne suis pas encore dans la phase d'industrialisation du provisonning. Pour l'instant j'ai une dizaine de poste avec dix modelés différents donc cela n'est pas tres motivant.
* Cela complique aussi l'information qu'on doit donner aux utilisateurs pour configurer leur softphone ou smartphone.
- pour les nomades utiliser un vpn et n'autoriser que les connections depuis des reseaux ip bien défini.
Le souci est la disponibilite du vpn sur les plateformes clientes et la compatiblilté avec l'existant. On a déployé sur notre site une solution a base d'openvpn et j'ai bien vu qu'il n'etait pas disponible sur tous les smartphone.
- Utiliser fail2ban:
la j'ai rien à dire je me plonge de ce pas dans la documentation
- faire du TLS sur sip.
Cette configuration m'interesse enormement vu que les utilisateurs vont utiliser leur smartphone un peu partout et en particulier sur du wifi "ouvert". J'ai commencer a mettre cela en place mais je n'arrive pas a faire du SIP sur TLS sans faire du srtp. Je suis en asterisk 1.8.2.3. Je pense que je vais ouvrir un post plus specifique à ce sujet.

Merci pour toutes vos reponses.

Comdif
31/03/2011, 17h35
Les comptes Sip autres que des numéros c'est un peu compliqué pour appeler
le compte, non ?

A moins de créer un dialplan spécial pour le context interne
et on fait des comptes SIP mathématiquement avec une formule
par exemple on crée le compte 186a0XY100 ( 186a0 étant l'hexadécimal de 100*1000) qui vas sonner quand on compose 100

exten => _1XX,1,Set(TOCALL=${MATH(${CALLERID(number)}*1000| h))
exten => _1XX,n,Set(TOCALL=${TOCALL}XY${CALLERID(number)})
exten => _1XX,n,Dial(SIP/${TOCALL})
exten => _1XX,n,Hangup()


Ceci dit il existe également une bonne méthode de sécurisation pour les comptes SIP ne pas activer le register sur le serveur, ce qui les limites à juste
pouvoir appeler, mais la ça devient dur pour les SIP scan.
host=static
c'est une bonne méthode pour les plateformes d'appel

Ricou76
01/04/2011, 22h48
Non, je ne vois pas aussi compliqué...
De mon côté, on a pris l'habitude d'avoir une syntaxe XXXX-Entreprise, qui permet en même temps de dissocier les appels internes de chaque entreprise cliente.