Solution FreePBX

On propose ici un exercice d’installation et de configuration d’un IP-PBX avec Astersik/FreePBX dans le but d’illustrer le déploiement VoIP dans une PME. Plus il y a d’utilisateurs et de périphériques, plus le lab est représentatif.

1. Introduction

Source : https://en.wikipedia.org/wiki/FreePBX

FreePBX est un GUI basé Web qui gère le serveur de téléphonie Asterisk. FreePBX est sous licence GNU General Public License version 3.

FreePBX a été acquis par Schmooze.com au début 2013 qui a été acquis par Sangoma Technologies Corporation au début 2015.

FreePBX peut être exploité :

  • A partir d’une installation native combiné au logiciel Asterisk et à une base donnée.
  • A partir d’une distribution FreePBX (FreePBX Distro), il existe des variantes comme AsteriskNow, Elastix ou Trixbox, FreePBX même.
  • A partir d’un matériel dédié et soutenu par les auteurs du projet, en proposant des appliances : https://www.freepbx.org/store/freepbx-appliances/, ce qui donne une idée du dimensionnement physique.

1.1. Fonctionnalités

PBX IP graphique complet et à usage avancé.

1.2. Topologie

Topologie
  • Serveur FreePBX/AsteriskNow (2-4Go RAM, 1-2 CPU)
  • UA Linphone
  • UA Hardphone
  • Infrastructure commutée connectée à L’Internet

2. Installation

2.1. Procédure d’installation

Source : https://wiki.asterisk.org/wiki/display/AST/Installing+AsteriskNOW

Télécharger le fichier AsteriskNOW-612-current-64.iso sur https://www.asterisk.org/downloads/asterisknow.

Le choix se porte aujourd’hui sur une installation standard de FreePBX 6.12.65 avec Asterisk 13.

2.2 Post-installation

Après redémarrage,

  • Prendre connaissance de l’adresse IP du serveur.
  • Sur un autre ordinateur, aller à l’adresse http du serveur PBX.

  • Remplir le formulaire de création de compte admin

 

Source de l’image

Le menu principal offre quatre options :

Source de l’image

  1. FreePBX Administration
  2. User Control Panel
  3. Operator Panel
  4. Get Support

Dans la suite, veuillez accomplir les actions suivantes :

  • Choisir le menu FreePBX Administration
  • Passer les étapes d’activation, firewall et SIPStation
  • S’attarder sur les offres

2.3. Configuration du PBX

https://wiki.freepbx.org/display/PPS/FreePBX+Distro+First+Steps+After+Installation

2.4. Configuration des modules

https://wiki.freepbx.org/display/FPG/Standard+Modules

  1. Mise à jour des modules
  2. Installation de nouveaux modules :
  3. Languages (voir plus haut)
  4. Endpoint Manager
  5. Time Conditions
  6. Ring Groups

Paramètres avancés et paramètres SIP

https://wiki.freepbx.org/display/FPG/Advanced+Settings

  • Adresse : Static
  • Adresse IP publique
  • Réseau local

https://wiki.freepbx.org/display/FPG/Asterisk+SIP+Settings et https://wiki.freepbx.org/display/FPG/NAT+Configuration+FreePBX+12

Changer éventuellement “Strong Passwords”

3. Connectivité

3.1. Ajout des extensions

Softphones SIP/IAX

Matériel VoIP

  • Polycom SoundPoint IP 321 (3)
  • Cisco SPA508G (3)
  • Cisco SPA504G (2)
  • Cisco SPA922 (6)
  • ATA Cisco PAP2T (2)
  • Power and Network Devices
  • PoE FS108P (4)
  • Cisco PoE SF300-24P (1)

Nomenclature des numéros internes

Nom de serveurExtensions
pbx012101, 2102, 2103, 2104
pbx022201, 2202, 2203, 2204
pbx032301, 2302, 2303, 2304
pbx042401, 2402, 2403, 2404
pbx052501, 2502, 2503, 2504
pbx062601, 2602, 2603, 2604
pbx072701, 2702, 2703, 2704
pbx082801, 2802, 2803, 2804
pbx092901, 2902, 2903, 2904
pbx0a3001, 3002, 3003, 3004
pbx0b3101, 3102, 3103, 3104
pbx0c3201, 3202, 3203, 3204
pbx0d3301, 3302, 3303, 3304
pbx0e3401, 3402, 3403, 3404
pbx0f3501, 3502, 3503, 3504

https://wiki.freepbx.org/display/FPG/Extensions+Module+-+SIP+Extension

  • Application / Extension / Add a SIP Extension
  • User Extension
  • Display Name
  • Devices Options / Secret
  • Voicemail : Enabled …

3.2. Configuration du compte Anveo

Numéros de téléphone en format 322XXXXXXX

https://www.anveo.com/faq.asp?code=sip_freepbx

  • Localized
  • 32 Belgium
  • 00

3.3. Configuration du Trunk SIP

  1. Menu “Connectivity” / “Trunks” / “Add A SIP Trunk”
    • Trunk name : “Anveo”
    • Outbound CallerID : “32XXXXXXXX”
  2. Onglet “SIP Settings”
    • Trunk name : “Anveo”
    • “Outgoing Settings” -> “PEER Details”, remplacer par le numéro de compte et le mot de passe :
       type=friend
       host=sip.de.anveo.com
       port=5010
       username=ACCOUNT_NUMBER
       secret=SIP_PASSWORD
       insecure=port,invite
       disallow=all
       allow=ulaw
       context=from-trunk
      
    • Enfin, dans “Incoming Settings” :
      • “Register String” : ACCOUNT_NUMBER:SIP_PASSWORD@sip.de.anveo.com:5010
      • “Submit” / “Apply”

3.4. Route sortante

Pour les numéros fixes et cellulaires :

  1. “Connectivity” / “Outbound Routes”
  2. “Route Name” : “Anveo”
  3. “Dial patterns” :
     0XXXXXXXX
    
     0XXXXXXXXX
    
  4. “Trunk Sequence for Matched Routes” : “Anveo”
  5. “Submit” / “Apply”

3.5. Route entrante

Par numéro de téléphone routé sur le PBX :

  1. “Connectivity” / “Inbound Routes”
  2. “DID Number” : “32XXXXXXXX”
  3. “Set Destinations” : p. ex. Extensions/numéro
  4. “Submit” / “Apply”

5. Francisation

A partir de la version 13, de FreePBX, un module se charge des fichiers de langues nécessaires.

Version FreePBX 13 minimum.

  1. Admin/Sound Languages
  2. Filtrer selon “French”
  3. Ajouter les packs de langues FR (alaw)
  4. Aller dans “View Custom Languages”
  5. Action/edit sur “language fr”
  6. Ajouter “French” dans la description et valider
  7. Revenir dans Admin/Sound Languages
  8. Aller dans change “Global Sound Language”
  9. Choisir French et valider

Avec les versions précédentes, 12 et inférieures, il sera nécessaire de placer soi-même les fichiers de langues FR au bon endroit.

On devrait trouver au minimum dans le dossier /var/lib/asterisk/sounds/fr le contenu décompressé des fichiers suivants :

Plusieurs méthodes sont envisageables pour placer ces fichiers sur le PBX. Le plus facile est de se connecter sur la console du PBX et d’exécuter le script disponible à cette adresse https://gist.github.com/goffinet/7835fb38aa1ce29544acc079ecfdbe6d.

Soit, on peut l’exécuter directement dans la console Linux :

# wget -qO- https://gist.githubusercontent.com/goffinet/7835fb38aa1ce29544acc079ecfdbe6d/raw/55513cb8ac796ee8abb3ab133d3b397c619a4f31/astpbx_fr.sh | sh

Source du script :

#!/bin/sh
##1. Dans le GUI :
##Modules Administration/Download and install Languages/Apply Config
##Asterisk SIP Settings/Advanced General Settings/Language = fr/Apply config
##2. En console :
##amportal restart
##3. Téléchargement des fichiers
REP=https://downloads.asterisk.org/pub/telephony/sounds
DIR=/var/lib/asterisk/sounds/fr
mkdir $DIR
cd $DIR
wget $REP/asterisk-core-sounds-fr-alaw-current.tar.gz
wget $REP/asterisk-extra-sounds-fr-alaw-current.tar.gz
wget $REP/asterisk-moh-opsound-alaw-current.tar.gz
gunzip *.gz
tar xfv asterisk-core-sounds-fr-alaw-current.tar
tar xfv asterisk-extra-sounds-fr-alaw-current.tar
tar xfv asterisk-moh-opsound-alaw-current.tar
rm asterisk-*

Ensuite, on pourra définir la langue par défaut ou la langue des utilisateurs

  • Modules Administration/Download and install Languages/Apply Config

  • Asterisk SIP Settings/Advanced General Settings/Language = fr/Apply

6. Boîtes vocales

Au minimum, on se souciera de la livraison du courrier électronique (messages vocaux).

Sous Debian/Ubuntu :

apt-get -y remove exim4
apt-get -y install postfix

Choisir installation satellite ou Internet smarhost : serveur SMTP par exemple, smtp.colt.net, relay.skynet.be

Par exemple sous Centos 6 (AsteriskNow), une installation de type smarthost (relay SMTP) :

echo "relayhost = smtp.colt.net" >> /etc/postfix/main.cf
service postfix reload

On ira consulter la documentation officielle pour la configuration des boîtes vocales.

https://wiki.freepbx.org/display/FPG/Voicemail

7. IVR

Admin / Feature Codes

https://wiki.freepbx.org/display/FPG/System+Recordings+Module

https://wiki.freepbx.org/display/FPG/IVR+Module

8. Trunk IAX2 intersites

Inter-Asterisk eXchange (IAX) est un protocole de couche application natif au logiciel PBX. Il est supporté par quelques autres produits de type systèmes PBX ou téléphones orientés OSS. Le protocole existe aujourd’hui dans sa version 2 et a été formalisé en 2010 dans le RFC 5456 de type informational (non-standards-track). Il remplit aussi bien les fonctions de signalisation que de transport des medias (voix/vidéo). Il utilise un seul port UDP 4569.

IAX remplit les objectifs suivants :

  • Réduction de la bande passante utilisée sur les liaisons inter-sites
  • Chiffrement AES-128 inclus
  • Traversée aisée des routeurs NAT et pare-feux

La documentation ci-dessous suggère une solution fonctionnelle à travers les pare-feux de connexion entre deux PBX distants. Les adresses IP publiques des systèmes téléphoniques doivent être connus.

https://wiki.freepbx.org/pages/viewpage.action?pageId=4161588

9. Sécurité

Activité sous Windows

https://www.oxid.it/cain.html

  1. Capture et crack de mot de passe SIP.

  2. Mise en place d’une Attaque MitM ARP Poison Routing entre un PBX et deux téléphones.

  3. Capture et reconstitution d’un appel.

10. Fail2ban

Dans AsteriskNow, on peut constater que la prison “pbx-gui” vérifie les logs de sécurité d’Asterisk (/var/log/asterisk/freepbx_security.log)

# fail2ban-client status
Status
|- Number of jail:	7
`- Jail list:		apache-tcpwrapper, recidive, pbx-gui, apache-badbots, ssh-iptables, asterisk-iptables, vsftpd-iptables

11. Support du Fax