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
- 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
Le menu principal offre quatre options :
- FreePBX Administration
- User Control Panel
- Operator Panel
- 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
Mise à jour des modules- Installation de nouveaux modules :
Languages (voir plus haut)- Endpoint Manager
- Time Conditions
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
- Zoiper
- Linphone
- Ekiga
- Jitsi
- Yate
- 3CX Phone
- SJPhone
- Voir https://fr.wikipedia.org/wiki/Liste_des_logiciels_SIP#Clients_SIP
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 serveur | Extensions |
---|---|
pbx01 | 2101, 2102, 2103, 2104 |
pbx02 | 2201, 2202, 2203, 2204 |
pbx03 | 2301, 2302, 2303, 2304 |
pbx04 | 2401, 2402, 2403, 2404 |
pbx05 | 2501, 2502, 2503, 2504 |
pbx06 | 2601, 2602, 2603, 2604 |
pbx07 | 2701, 2702, 2703, 2704 |
pbx08 | 2801, 2802, 2803, 2804 |
pbx09 | 2901, 2902, 2903, 2904 |
pbx0a | 3001, 3002, 3003, 3004 |
pbx0b | 3101, 3102, 3103, 3104 |
pbx0c | 3201, 3202, 3203, 3204 |
pbx0d | 3301, 3302, 3303, 3304 |
pbx0e | 3401, 3402, 3403, 3404 |
pbx0f | 3501, 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
- Menu “Connectivity” / “Trunks” / “Add A SIP Trunk”
- Trunk name : “Anveo”
- Outbound CallerID : “32XXXXXXXX”
- 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”
- “Register String” :
3.4. Route sortante
Pour les numéros fixes et cellulaires :
- “Connectivity” / “Outbound Routes”
- “Route Name” : “Anveo”
- “Dial patterns” :
0XXXXXXXX 0XXXXXXXXX
- “Trunk Sequence for Matched Routes” : “Anveo”
- “Submit” / “Apply”
3.5. Route entrante
Par numéro de téléphone routé sur le PBX :
- “Connectivity” / “Inbound Routes”
- “DID Number” : “32XXXXXXXX”
- “Set Destinations” : p. ex. Extensions/numéro
- “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.
- Admin/Sound Languages
- Filtrer selon “French”
- Ajouter les packs de langues FR (alaw)
- Aller dans “View Custom Languages”
- Action/edit sur “language fr”
- Ajouter “French” dans la description et valider
- Revenir dans Admin/Sound Languages
- Aller dans change “Global Sound Language”
- 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 :
- https://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-fr-alaw-current.tar.gz
- https://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-fr-alaw-current.tar.gz
- https://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-alaw-current.tar.gz
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
Capture et crack de mot de passe SIP.
Mise en place d’une Attaque MitM ARP Poison Routing entre un PBX et deux téléphones.
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
…