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.
  • 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 http://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

1- **FreePBX Administration **

2- **User Control Panel **

3- **Operator Panel **

4- **Get Support **

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

2.3. Configuration du PBX

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

2.4. Configuration des modules

http://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

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

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

http://wiki.freepbx.org/display/FPG/Asterisk+SIP+Settings et http://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 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

http://wiki.freepbx.org/display/F2/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
  2. Trunk name : Anveo
  3. Outbound CallerID : 32XXXXXXXX
  4. Trunk name : Anveo
  5. 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
    
  6. Register String : ACCOUNT_NUMBER:SIP_PASSWORD@sip.de.anveo.com:5010
  7. Submit

3.4. Route sortante

Pour les numéros fixes et cellulaires :

  1. Connectivity / Outbound Routes
  2. Route Name : Anveo
  3. Dial patterns :

0XXXXXXXX

0XXXXXXXXX
* Trunk Sequence for Matched Routes : Anveo * Submit

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

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=http://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 élctronique (messages vocaux).

Sous Debian/Ubuntu :

# apt-get remove exim4
# apt-get 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.

http://wiki.freepbx.org/display/F2/Voicemail

7. IVR

Admin / Feature Codes

http://wiki.freepbx.org/display/F2/System+Recordings+Module

http://wiki.freepbx.org/display/F2/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.

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

9. Sécurité

Activité sous Windows

http://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 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

...

Commentaires