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.

 

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 :

Xivo : vidéo de présentation de l’IPBX libre

L’équipe Xivo vient de publier une vidéo en anglais présentant l’IPBX libre. Dans cette vidéo de 3:51 minutes, la communauté Xivo est présentée par Gregory Sanderson, développeur R&D de la team Xivo, les partenaires et les contributeurs. Enfin, vous trouverez un tutorial de prise en main de  Xivo en 3 étapes.

Bon visionnage.

Xivo et Raspberry PI 2 : l’IPBX idéal pour les petites sociétés ?

Intégrer Xivo, IPBX libre sur Asterisk, et une carte low cost, la Raspberry PI 2 pour proposer une solution de téléphonie low cost aux TPE.

Pouvoir utiliser une carte Raspberry PI pour faire un petit IPBX est un projet intéressant : compacité et faible consommation. Plusieurs manières existent afin d’atteindre cet objectif. Naturellement, installer un Asterisk ou un FreeSwitch tout frais sur une distribution adaptée à la carte, la Raspbian, est la première idée qui a germée dans mon esprit. L’exercice fut concluant, mais les performances assez limitées, entre 3 et 5 appels simultanés selon la configuration et le système. Un peu juste, et difficilement utilisable en production sans une interface graphique digne de ce nom (sauf pour des projets de niche).

Depuis, la carte Raspberry PI 2 a vu le jour avec des spécifications en hausse ouvrant ainsi d’intéressantes perspectives. Les limitations techniques de la carte étant repoussée, une utilisation en IPBX pour les petites entreprises devient envisageable. Cette carte embarque assez de puissance afin de pouvoir faire tourner Asterisk ou FreeSwitch et un petit serveur web pour la configuration et l’interface utilisateur. N’ayant pas eu beaucoup de temps disponible, ni de carte Raspberry PI 2 sous la main, je n’ai pas encore monté de lab.

Mais un intégrateur Nantais, Geoffroy RABOUIN a remonté ses manches et a passé quelques nuits blanches afin d’intégrer Xivo, un célèbre IPBX Open Source basé sur Asterisk offrant une interface web agréable,  à une carte Raspberry PI 2. Au passage, un grand merci à la community manager de Xivo, Valérie DAGRAIN, de m’avoir fait découvrir ce projet. Le nom de ce sympathique projet : simplement Raspivo, Xivo sur Raspberry PI 2.

A l’heure de la rédaction de cet article, Raspivo intègre la dernière version de Xivo, la 15.12.

La documentation d’installation est disponible en ligne : installation de Raspivo depuis les dépôts de Iris Networks (société de Geoffroy RABOUIN). Le process est vraiment simple. Selon le créateur, les performances sont très intéressantes. Il a en effet atteint 12 appels simultanés sans déformation de la voix. Reste à voir les limitations, je pense notamment à certaines fonctionnalités gourmandes en CPU et en I/O.

Ce projet mérite une attention toute particulière, de part la qualité de la distribution Xivo (une de mes 2 solutions de téléphonie libre préférées), et d’autre part par les caractéristiques de la carte Raspberry PI 2 : faible consommation, pas de pièces mobiles et taille réduite.

Dès que j’ai un peu de temps et une carte sous la main, je testerai Raspivo et je vous ferai un retour détaillé.

Raspivo présente une réelle alternative permettant aux petites sociétés de disposer d’une solution de téléphonie libre low cost, un IBPX asterisk simple et fiable.

Liste des IPBX libres

Le choix d’un IPBX est parfois compliqué : l’offre est importante et complexe. Sur le papier toutes les solutions se valent, proposent toutes les fonctionnalités utiles, sont sécurisées, facilement administrables … Quand on doit choisir une solution IPBX libre, le choix est plus difficile. La première difficulté est de lister les différentes solutions.

Je vais lister pour vous les différentes solutions qui s’offrent à vous, la contrainte étant que la solution doit-être libre et à même de mettre en place un IPBX en entreprise. Pas d’autre contrainte ! Les voici classées par ordre alphabétique :

  • Astlinux
  • Blue.box
  • FreePBX Distro
  • FusionPBX
  • Incredible PBX
  • PIAF : PBX in a flash
  • Wazo
  • Xivo
  • Yate (avec le module pbxassist)

Il existe d’autres solutions, je n’ai indiqué que les plus utilisées. Le choix n’est pas simple. Vous pouvez commencer par choisir un moteur VoIP (Asterisk, FreeSwitch ou Yate) et regarder l’interface graphique. Des critères peuvent-être éliminatoires comme le support de certains protocoles (comme IAX2 ou H323 par exemple), de montée en charge …

Un IPBX doit être facile à administrer. N’oubliez pas non plus de regarder les évolutions des différents projets. Malheureusement certains projets prometteurs sont devenus propriétaires comme TrixBox CE qui est devenu Fonality et AskoziaPBX qui a changé de licence.

Le mieux est de les tester au sein d’une VM afin de se faire une bonne idée après avoir rédigé un cahier des charges précis.

Je me dois de répondre à la question qui brule vos lèvres : quelles solutions d’IPBX libres je préfère ? Selon l’usage, je vais préférer soit Astlinux soit Xivo. FusionPBX est intéressant mais est un peu lourd d’usage. L’interface d’administration mériterait un lifting.

Quelles solutions avez-vous testées ? et quel est votre retour d’informations ?

 

Historique :

  • 06/02/2019 : ajoût de Wazo (fork de Xivo par son créateur) et suppression d’Elastix (ce dernier est mort suite au rachat)

AstLinux 1.2.3 : corrections de sécurité

Quelques jours après la version 1.2.2, l’équipe d’AstLinux sort une nouvelle version corrigeant plusieurs failles de sécurité (35 !) touchant de nombreux paquets.
Voici la liste :

  • CVE-2015-3331 : patch linux
  • CVE-2014-8964, CVE-2015-2325, CVE-2015-2326 : pcre
  • CVE-2014-9680 : sudo
  • CVE-2015-1572 : e2fsprogs
  • CVE-2014-8128 : tiff
  • CVE-2015-0286, CVE-2015-0287, CVE-2015-0289, CVE-2015-0292, CVE-2015-0293, CVE-2015-0209, CVE-2015-0288, CVE-2015-4000, CVE-2015-1788, CVE-2015-1789, CVE-2015-1790, CVE-2015-1792, CVE-2015-1791 : OpenSSL (version 1.0.1o)
  • CVE-2015-2059 : prosody
  • CVE-2014-9297, CVE-2014-9298, CVE-2015-1798, CVE-2015-1799 : ntpd/sntp
  • CVE-2014-2285 : netsnmp
  • CVE-2015-1419 : vsftpd
  • CVE-2015-3294 : dnsmasq
  • CVE-2015-3144, CVE-2015-3145, CVE-2015-3148, CVE-2015-3143, CVE-2015-3153, CVE-2015-3236, CVE-2015-3237 : libcurl

Un renforcement de la sécurité a été opéré par la création d’un certificat auto-généré unique.

Les versions d’Asterisk ont aussi été mis à jour :

  • Asterisk 1.8.32.3
  • Asterisk 11.18.0
  • Asterisk 13.4.0

Autre nouveauté importante, l’interface graphique d’Asterisk, Digium Asterisk GUI n’est plus inclue dans la solution quelque soit la version d’Asterisk. Je n’ai jamais bien compris l’intérêt de cette interface graphique et de la valeur ajoutée par rapport à l’interface d’AstLinux. Pour rappel, Digium Asterisk GUI est abandonné par l’équipe Asterisk depuis longtemps !

Etant donné l’importance de cette mise à jour, je vous invite à l’appliquer au plus vite sur vos systèmes.

Nouvelle version d’Astlinux 1.2.2 supportant Asterisk 13

Astlinux 1.2.2 vient de sortir. Découvrez les nouveautés d’un IPBX Asterisk embarqué et sécurisé prêt à l’emploi.

L’équipe d’Astlinux vient de sortir une nouvelle version. En dehors des habituelles corrections de bugs ou autres correctifs de sécurité (glibc « GHOST » et OpenSSL), mises à jour (noyau 3.2.66 et Asterisk) et améliorations de l’interface web, la grande nouveauté vient de la prise en charge de Asterisk 13 incluant la stack PJSIP. Toutes les versions d’Astlinux 1.2.2 (version d’Asterisk 1.8 , 11 et 13) intègrent aussi l’application de monitoring monit.

Créer votre serveur Asterisk : dans Linux Pratique été 2015

Le nouveau Linux Pratique vient de sortir avec un article intitulé « Créez votre serveur Asterisk ». Lisez attentivement cet article, et ensuite je vous invite à découvrir pour ceux qui ne connaissent pas encore 2 solutions top basées sur Asterisk :

  • Xivo : une solution créée et éditée par une entreprise française, Avencall. XiVo est une solution complète permettant de déployer un IPBX d’entreprise avec toutes les fonctionnalités nécessaires. L’interface d’administration est claire et complète et le nouveau XiVo Client (bandeau utilisateur permettant de gérer la présence, l’annuaire, le tchat, l’envoi de fax et les renvois de poste) est pratique et agréable. XiVo est construit sur une plateforme Debian et est dédié à être installé sur un serveur (vous pouvez aussi acheter un serveur avec XiVo pré installé).
  • Astlinux : une solution alternative plutôt orientée pour les TPE mais qui connaissent déjà Asterisk. Astlinux fournit une plateforme sécurisée intégrant Firewall, VPN, routage, QoS ainsi qu’une interface web légère. Les utilisateurs disposent d’un accès web dédié permettant de gérer renvois, messagerie vocale, annuaire. Mais pour gérer les appels, vous devrez savoir programmer le dialplan Asterisk (c’est pas bien compliqué non plus). Astlinux fonctionne sur un OS Linux embarqué et très léger avec pour objectif d’être installé sur des mini serveur comme les soekris.

Dans ce numéro de Linux Pratique Juillet / Août 2015, vous avez aussi un article sur une plateforme de CMS basée sur Django, Mezzanine. Je vous recommande cette solution, du Python, du PostgreSQL et une bonne VM et vous pouvez accueillir des milliers de visiteurs sur votre site. Django, le célèbre framework Python, intègre toutes les briques essentielles, et cela nativement afin de sécuriser les applications web. L’installation est super simple (pip install mezzanine) et pour créer un nouveau projet, vous devez taper 2 commandes supplémentaires (qui ne sont pas plus compliquées). Je vous invite à regarder les sites existants fonctionnant sous Mezzanine ainsi que la démonstration (surtout la partie admin, car la partie front est un peu pourrie par les utilisateurs !!!). Et pour les habitués de WordPress, il existe aussi des thèmes pour Mezzanine CMS disponibles en téléchargement (gratuits et payants). En voici un que j’aime bien qui s’appelle Singularity :

thème Mezzanine CMS Singularity Django

Et je profite de cet apparté sans grand rapport avec Asterisk (un peu quand même, on pourrait utiliser Django pour faire un GUI sympa à Asterisk pour des applications spécifiques comme je le fais pour FreeSwitch), pour vous présenter un premier lien regroupant l’ensemble des solutions CMS basées sur le framework Django et les solutions de blog basées aussi sur Django. Je vous recommande Zinnia, développé par un Français. J’ai hésité à migrer mon blog vers sa solution, mais je manque de temps (et il faut que je change d’hébergement !)

Zinnia blog CSM Django

Je vous laisse maintenant acheter ce magazine en ligne ou chez votre marchande de journaux, un bon petit numéro pour avoir un peu de lecture saine (pas Voici ou Mickey) sur la plage cet été.

FreePBX : Frederic Dickey Interview – Asterisk – Sangoma

Sangoma is a leading provider of hardware and software components that enable or enhance IP Communications Systems for both telecom and datacom applications.
Frederic Dickey is the VP of Product Management and Customer Services for Sangoma and we met up with him at FreePBX World in Las Vegas to discover more about their new products and how they interact with the FreePBX® EcoSystem.

SIP : comment débugger ?

Introduction

Votre nouveau serveur VoIP est en place. Mais pour une raison que vous ignorez vos appels ne fonctionnent pas comme prévus. Pas de panique, je vais vous présenter quelques outils en ligne de commande qui vont vous aider à déterminer la source du problème. En effet, le protocole SIP n’est pas toujours aussi simple à l’usage que dans la théorie. Les informations fournies par les systèmes de téléphonie Open Source (Asterisk, Freeswitch, Yate …) ou propriétaires ne sont pas toujours d’une grande aide (manque de lisibilité, de souplesse …).

Pourquoi des outils en ligne de commande : l’installation est simple et très rapide, fonctionnent sur toutes les distributions linux, et l’information souhaitée est facilement et rapidement accessible. Il est tout à fait possible d’utiliser ces outils afin de sauvegarder les informations collectées dans un fichier afin de réaliser des analyses plus fines avec des logiciels intégrant une interface graphique, comme le renommé Wireshark.

Pré requis

Vous vous êtes assuré de la bonne configuration de vos comptes SIP (du moins sur le papier), que le routage (diaplan) est correctement fait et que les appels sont possibles (droits d’accès à la route bien affectés, balance financière positive …). Si pour vous, vous ne voyez pas de loup à cette étape, nous allons entrer dans le dur.

Procédure

Je vais maintenant vous expliquer comment trouver de manière efficace la source du problème. Nous allons du plus général vers le plus détaillé. Tout d’abord, vérifier que les échanges de messages SIP se passent comme prévus (je ne vais pas les rappeler ici, je vous laisse ressortir vos cours. J’écrirais peut-être un de ces jours un article les détaillants) : enregistrement, établissement d’un appel, raccroché de l’appel. Si une des étapes est manquantes, il va falloir trouver des informations détaillées. Nous allons voir ces étapes dans le paragraphe suivant.

Comment tracer les messages SIP

Nous allons dans un premier temps vérifier que les messages SIP échanger sont conforment. Nous n’avons pas besoin de tout le détail, juste du type de message SIP (100, 180, 407, 404 …). On va ainsi pouvoir voir très simplement à quelle étape le problème se pose. Le serveur distant souhaite que le compte soit enregistrer avant d’autoriser un appel (merde, on m’avait dit que c’était une authentification par IP ?), le serveur distant vous répond par un bon 404 ? …

Pour cela, je vais utiliser tshark, outil renommé de tout bon administrateur linux. Il utilise la librairie pcap pour capturer le traffic de l’interface déclarée (avec l’option -i) et affiche (ou enregistre dans un fichier avec l’option -w) les informations décodées de paquets capturés. Les fichiers de capture créés peuvent être lus par Wireshark.

Nous allons utiliser toute la puissance de filtrage de tshark afin de trouver l’information souhaitée. Par exemple, il faut vérifier que l’invite correspond bien au format attendu.

tshark -i eth0 -R "ip.addr==78.x.y.10 and sip.CSeq.method eq INVITE" (-V)

Si vous souhaitez capturer l’ensemble du traffic SIP d’une adresse ip spécifique et d’un port spécifique :

tshark -i eth0 -R "ip.addr==78.x.y.10 and port==5060" -z sip,stat

Un autre outil fort utile peut être utilisé, j’ai nommé tcpdump.

tcpdump est un analyseur de paquet. Il utilise libpcap, une librairie C/C++ afin de capturer les paquets.  Vous devez avoir les droits de super utilisateur afin de pouvoir l’utiliser.

Nous allons voir le détail de la commande à utiliser :

-i eth0 — le nom de l’interface à écouter

-n — afin de ne pas résoudre les hostnames

host 1.2.3.4 — filtre le traffic sur cette adresse IP (peut être remplacé par net pour capturer un réseau ex : net 1.2.3.0/24)

proto udp — en général on utilise de l’udp

-w /tmp/file.pcap — pour enregistrer la capture dans un fichier. Mais comme on souhaite avoir le retour en console, on ne vas pas ajouter cette option.

Vous trouverez le détail des options de la commande de tcpdump sur cette page.

Conclusion

Nous venons de voir de manière simple comment débugger un chance SIP entre 2 machines. Vous pouvez utiliser la capture afin de l’importer dans un GUI comme Wireshark afin de réaliser des recherches plus poussées, afficher une vue graphique des échanges ou générer des statistiques.

Il est aussi possible d’utiliser d’autres outils comme ngrep. Je vous présenterai dans un prochain article l’outil HOMER.