SIP – PFSense : Comment résoudre une perte d’enregistrement

Les postes sont localisés sur un site et passe par internet pour accéder au serveur de téléphonie VoIP SIP qui est situé derrière un PFSense.

Vous constatez un défaut d’enregistrement de vos téléphones SIP pendant plusieurs minutes, ceux-ci affichant un message « No service » ou « prov. server failed ».

Vous devez surement faire face à un timeout d’état de la table NAT du firewall PFSense. En effet, ce timeout doit-être inférieur à la fréquence de ré-enregistrement des postes SIP !

Les délais d’expiration UDP par défaut dans PFSense sont trop faibles pour certains services VoIP. Si les téléphones fonctionnent principalement, mais se déconnectent de manière aléatoire, il faut modifier les options d’optimisation du pare-feu sur les mettant sur « Conservateur » sous Système> Avancé, onglet Pare-feu / NAT.

Un système de keep-alive (ou autrement un ping SIP avec un message OPTION) ou une réinscription sur le poste téléphonique pendant une durée plus faible, environ 20 à 30 secondes, peut également aider, et est souvent une meilleure solution.

Sparrow : Wazo PBX sur Raspberry Pi

Le jeune projet Sparrow propose un build non officiel de l’architecture armhf de plateforme Wazo. Il vous permet d’héberger un système téléphonique VoIP Open Source complet et programmable sur un Raspberry Pi. Un autre projet qui semble maintenant peu maintenu permettait d’installer un système Xivo ou Wazo (mais en 18.03) sur Raspberry, Raspvivo.

J’apprécie particulièrement cette architecture, car elle permet de manière efficace et avec une faible consommation de faire fonctionner des services performants. Dans la même veine, mais j’en parlerai dans un autre article, j’ai fait fonctionner la plateforme de class 4 de Wazo sur un cluster Kubernetes à base de cartes Raspberry.

J’aime bien la définition de Wazo :

Wazo Platform is an Open Source project writen in python who gets the best from Asterisk and Kamailio to build a telecom platform.

Sparrow peut fonctionner sur n’importe quel système avec une architecture armhf. Il est néanmoins recommandé 2 Go de RAM et une carte SD rapide industrielle d’une taille d’au moins 16 Go. Attention au volume des messages de logs, des backups et surtout des messages vocaux, le chiffre annoncé étant un minimum !

La dernière version est basée sur Wazo 20.01. C’est la seconde version de Sparrow, la première release datant du 3 janvier 2020.

L’ensemble des fonctionnalités de Wazo Platform sont disponibles sous Sparrow  sauf le codec OPUS qui n’est pas fonctionnel. Mais cela n’impactera que les applications WebRTC. De plus, du fait des faibles ressources d’une carte raspberry PI, les capacités de transcodage sont fortement limitées. Veillez bien à correctement configurer vos paramètres SIP.

Le process d’installation est assez simple. Après avoir installé la distribution Raspbian en version minimale (basée sur debian Buster, les dernières releases de Wazo ne supportant plus Jessie mais uniquement Buster), l’installation se déroule en quelques simples lignes de commandes. Le process prend du temps, profitez en pour prendre un bon café et marcher un peu !

Je n’ai pas eu le temps de faire des tests de performances, mais on peut facilement estimer que pour une petite entreprise équipée de 1 ou 2 T0 (2 à 4 appels simultannés) ou une utilisation en homelab, le Raspberry sera suffisament performant.

La documentation est accessible ici : https://sparrow.b5.pm/docs

et le repo github : https://github.com/benasse/sparrow

Merci Benoit Stahl pour ce superbe travail qui met en valeur la force d’une communauté Open Source.

Vidéo d’installation et de déploiement d’une instance WAZO UC en moins de 3 minutes

Découvrez dans notre courte vidéo comment installer et déployer une solution UC en moins de 3 minutes avec la console de gestion Wazo Portal sur AWS.

 

2019-11-19: Critical FreePBX Security Vulnerability

Une vulnérabilité de sécurité critique découverte dans FreePBX permet l’exécution de code à distance sans authentification.

Les serveurs FreePBX en version 14 ou 15 sont automatiquement mises à jour. Par contre, les serveurs fonctionnant en version 12 ou 13 doivent-être mises à jour manuellement. Assurez-vous que votre serveur FreePBX est mis à jour avec les dernières versions  !

La vulnérabilité est corrigée dans:

  • (Version 12 inconnue pour le moment)
  • 13.0.197.14
  • 14.0.13.12
  • 15.0.16.27

Je me permets de vous rappeler qu’il est essentiel de tenir à jour ses serveurs et d’autant plus dans la VoIP qui est une cible particulièrement intéressante pour les assaillants !

Plus de détails sur la vulnérabilité sont disponibles sur le wiki de FreePBX.

Routage SIP asynchrone : performance et montée en charge chez Wazo

L’objectif de Wazo Platform est de proposer une solution télécom  flexible, facile à configurer et performante pour les opérateurs. Le composant clé de la solution est le routeur SIP basé sur le projet Kamailio, le serveur SIP open-source de premier plan.

Je vous partage un article écrit par Fabio de la team Wazo.

L’objectif de Wazo Platform est de proposer une solution télécom  flexible, facile à configurer et performante pour les opérateurs. Le composant clé de la solution est le routeur SIP basé sur le projet Kamailio, le serveur SIP open-source de premier plan.

L’objectif est, tout en offrant une grande flexibilité et une grande facilité de configuration, d’éviter tout compromis sur les performances.

Bonne lecture : Kamailio routing with rtjson and http_async_client

Sortie de Wazo Platform 19.13

La team Wazo vient d’annoncer la sortie de Wazo Platform 19.13.

Wazo Platform est une suite d’outils permettant de construire une infrastructure de communication IP programmable de classe opérateur. La suite est publiée en opensource, le code étant disponible sur le repo github de Wazo.

L’idée de fournir une solution de communication libre permettant de concevoir et de construire un système de communication adapté aux besoins spécifiques de chaque entreprise.

Les briques techniques sont construites autour de projets libres comme Asterisk, Kamailio, PostgreSQL et s’appuient fortement sur le langage de programmation python.

Pour ceux qui ne me connaissent pas, je travaille sur ce fabuleux projet, donc si vous avez des questions, n’hésitez pas.

Lien de la news : Introducing Wazo Platform 19.13

PyFreeBilling : softswitch voip 2.0 démo

La version définitive 2.0 de PyFreeBilling approche. La version beta publique a été rendue disponible.

Qu’est-ce que PyFreeBilling ?

Le logiciel PyFreeBilling est une solution sous licence Open Source AGPL permettant de gérer une activité d’opérateur télécom VoIP : gestion des clients, gestion des fournisseurs, gestion des grilles tarifaires ventes et achats, routage des appels et gestion des balances et reporting.

Merci à Hichem Ghazouani qui a mis à disposition la version 2.0 en démo.

Vous trouverez le lien ci-dessous :

https://51.255.173.122/ ( customer )
https://51.255.173.122/extranet/ (admin )

username : ghvoip
password: demo123 ( pmerci de ne pas changer le mot de passe !)

À qui est destiné PyFreeBilling ?

PyFreeBilling dans sa version 2 est destiné aux opérateurs VoIP permettant de router les appels entrants et sortants de ses clients vers différents opérateurs-fournisseurs de manière sûre, souple et simple.

 

RTPBleed et Asterisk : les appels d’Asterisk sous écoute

Asterisk souffre d’un problème assez grave permettant à un attaquant d’écouter simplement vos conversations. Une attaque de l’homme du milieu (man-in-the-middle), sans être vraiment au milieu d’ailleurs, permet de redirriger les flux RTP assez facilement.

Asterisk souffre d’un problème assez grave permettant à un attaquant d’écouter simplement vos conversations. Une attaque de l’homme du milieu (man-in-the-middle), sans être vraiment au milieu d’ailleurs, permet de rediriger les flux RTP assez facilement.

L’annonce a été faite il y a quelques jours (31/08/2017). Il s’agit en fait d’un vieux bug datant de 2011 qui a été réintroduit au premier trimestre 2013. Le premier report annonçant la régression date de mai dernier ainsi que le patch (fournit pour test). L’annonce officielle a été faite le 31 août dernier.

Quelles sont les versions vulnérables ?

Toutes les versions d’Asterisk entre la 11.4.0 à la 14.6.1 sont malheureusement touchées.

Dans quel cas le serveur Asterisk est vulnérable ?

Quand le serveur Asterisk fonctionne avec des postes derrière un routeur NAT, il est nécessaire de mettre en oeuvre des actions afin de router correctement les paquets voix. Le protocole SIP s’appuie sur le protocole RTP afin de transporter la voix et le protocole SDP afin que les user-agents (UA) puissent négocier entre eux des éléments comme les codecs, adresses et ports. Ces éléments sont échangés en clair sur le réseau.
Pour permettre ces négociations, le serveur Asterisk est configuré (fichier sip.conf) avec les options nat=yes et strictrtp=yes. De plus, ces options sont configurées ainsi par défaut !

Comment exploiter la faille ?

Un attaquant doit envoyer des paquets RTP au serveur Asterisk sur un port alloué pour recevoir un flux RTP. Si le serveur est vulnérable, alors le serveur Asterisk répond à l’assaillant en relayant les paquets RTP du destinataire véritable. Il est ensuite aisé avec des outils comme Wireshark de décoder le flux audio.

Quelles sont les actions de mitigation envisageable ?

  • La première recommandation est de ne pas transporter les flux SIP et RTP sur internet en clair, mais d’utiliser un tunnel VPN. Si cela n’est pas possible pour diverses raisons bonnes ou mauvaises, voici d’autres solutions :
  • application du patch fournit par Asterisk (https://raw.githubusercontent.com/kapejod/rtpnatscan/master/patches/asterisk/too-short-rtcp-bugfix.diff) qui actuellement limite la fenêtre temps de l’attaque aux toutes premières millisecondes.
  • éviter l’option nat=yes si possible
  • chiffrer les flux RTP avec SRTP (je vous invite aussi à chiffrer les flux SIP et à utiliser le protocole de transport TCP uniquement pour ce dernier afin de fiabiliser les échanges au lieu de l’UDP)
  • ajouter une option de configuration à vos peers SIP afin de prioriser les paquets RTP venant de l’adresse IP apprises au travers de l’échange initial effectué via le protocole SIP.

Par ailleurs, si vos postes IP et vos fournisseurs de trunk SIP utilisent des adresses IP fixes et connues, la mise en oeuvre d’une règle sur votre firewall bloquant l’accès aux ports UDP 10000 à 20000 (ports RTP utilisés par défaut par un serveur Aterisk) uniquement à partir de ces adresses apporte une protection suffisante.

Comment vérifier si mon serveur Asterisk est vulnérable ?

L’outil rtpnatscan permet de tester votre serveur Asterisk.

Références :

freeswicth ansible role 2.0 just released

Je viens de publier la nouvelle version du role ansible permettant une installation / mise à jour automatisée de FreeSwitch avec plusieurs bonus optionnels comme fail2ban, sngrep … Le role est fait pour fonctionner exclusivement avec Debian Jessie. J’intégrerai Stretch le moment venu.

Contrairement à la version précédente, l’installation se fait à partir des paquets fournis par la team FreeSwitch (je suis leurs recommandations).

L’utilisation est présentée dans le README.

Vous le trouverez dans la galaxy ansible : https://galaxy.ansible.com/mwolff44/freeswitch-mw/

N’hésitez pas à me faire des retours.

Note : le repo officiel est hébergé par framagit : https://framagit.org/mwolff44/freeswitch-mw/ même si une copie existe sur github pour ansible-galaxy.

 

Modifications :

  • 12/04/2017 : v2.1 : mise à jour du kernel via les backports (performance) / installation de locales spécifiques / installation de paquets complémentaires – Ces 3 fonctions sont désactivées par défaut.

Installer FreeSwitch sur Ubuntu à partir des paquets

L’équipe de FreeSwitch vient de publier les paquets pour Ubuntu 14.04 LTS et 16.04 LTS. Une excellente nouvelle pour les utilisateurs d’Ubuntu. L’installation est maintenant simplifiée.

Pour Ubuntu 16.04 LTS, voici les commandes à taper pour installer la dernière version stable de FreeSwitch :

wget -O - https://files.freeswitch.org/repo/ubuntu-1604/freeswitch-unstable/freeswitch_archive_g0.pub | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/ubuntu-1604/freeswitch-unstable/ xenial main" > /etc/apt/sources.list.d/freeswitch.list
 
# you may want to populate /etc/freeswitch at this point.
# if /etc/freeswitch does not exist, the standard vanilla configuration is deployed
apt-get update && apt-get install -y freeswitch-all

Pour Ubuntu 14.04 LTS :

wget -O - https://files.freeswitch.org/repo/ubuntu/freeswitch-unstable/freeswitch_archive_g0.pub | apt-key add -
 
echo "deb http://files.freeswitch.org/repo/ubuntu/freeswitch-unstable/ trusty main" > /etc/apt/sources.list.d/freeswitch.list
 
# you may want to populate /etc/freeswitch at this point.
# if /etc/freeswitch does not exist, the standard vanilla configuration is deployed
apt-get update && apt-get install -y freeswitch-all

Attention : les paquets permettant de gérer les flux vidéos ne sont pas installés. Des étapes complémentaires sont à prévoir.

Toutefois, l’équipe de FreeSwitch ne recommande d’utiliser cette méthode pour un usage en production pour le moment. Sur Ubuntu, seule la méthode en téléchargeant et compilant les sources est recommandée.

La documentation de la team FreeSwitch pour installer FreeSwitch sur Ubuntu.