Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Université de Poitiers
Institut Universitaire de Technologie de Châtellerault
Département Réseaux et Télécommunications
Licence professionnelle Métiers des Réseaux Informatiques et Télécommunications
Spécialité Administration des Réseaux Multimédia
Présenté par :
Baptiste MOINE
Promotion 2016-2017
Apprenti au Centre Hospitalier Henri LABORIT
Sujet du rapport :
Projet Asterisk – Installation et configuration de l’IPBX Asterisk
Sauf mention contraire, ce rapport est mis à disposition selon les termes de la licencehttps://creativecommons.org/licenses/by-nc-sa/4.0/
RAPPORT D’INSTALLATION
TABLE DES MATIÈRES
Table des matières.................................................................................................................2Infrastructure réseau..............................................................................................................3 Réseau...............................................................................................................................3 Exemple de configuration de port sur sw-admin-a............................................................4Préparation du système.........................................................................................................5 Configuration de l’accès réseau.........................................................................................5Préparation de l’espace de travail (Workbench)..................................................................10 Installation de OpenSSH-Server......................................................................................10Installation d’Asterisk...........................................................................................................18 Installation de la chaîne de compilation...........................................................................18 Installation des dépendances..........................................................................................19 Installation d’Asterisk.......................................................................................................20Configuration d’Asterisk.......................................................................................................22 Configuration des utilisateurs locaux...............................................................................23 Configuration de la messagerie vocale............................................................................25 Configuration du plan de numérotation............................................................................27 Configuration de la QoS...................................................................................................28 Configuration de l’enregistrement SIP d’Asterisk sur IMS (pas utilisé pour le moment).29 Configuration du parking et transfert d’appels.................................................................30 Exécution d’Asterisk en tant qu’utilisateur.......................................................................30 Création d’un message vocal conditionnel de fermeture................................................31 Rechargement des configurations...................................................................................32Tests.....................................................................................................................................33 Installation de X-Lite........................................................................................................33 Configuration de X-Lite....................................................................................................33 Configuration d’un poste Polycom VVX300.....................................................................36
Baptiste MOINE 2 Installation et configuration d’Asterisk
INFRASTRUCTURE RÉSEAU
Réseau
Plan d’adressage : 172.28.128.0/24 pour commencer, mais les autres sous réseau172.28.128.0/18 sont disponibles ;
VLAN : 13, présent uniquement sur le sw-coeur et sw-admin-a ;
La prise A3-0-3 est branchée sur le port g3/0/13 de sw-admin-a ;
Route par défaut : 172.28.128.1 cœur de réseau HP, instance sites-voip :
• Le routage vers l’autocommutateur (appliances A et B) Alcatel (10.16.10.63) estassuré ;
• Le routage vers les sites distants ne fonctionne pas non plus (le routeur Adista neconnaît pas la route vers 172.28.128.0/24) ;
• Prise de main SSH depuis l’informatique OK (on passe par le SNS qui connaît laroute).
Serveur DHCP : tout est configuré sauf le serveur TFTP, les postes téléphoniques sonttous reconnus et déclarés dans le RADIUS. Les postes téléphoniques ont tous démarréssans problèmes.
Baptiste MOINE 3 Installation et configuration d’Asterisk
Illustration 1: Synoptique réseau infrastructure interconnexion voix
Exemple de configuration de port sur sw-admin-a
<sw-admin-a>disp cur int g3/0/13
#
interface GigabitEthernet3/0/13
description A3-0-3 Tests Asterisk
port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 4 13 tagged
port hybrid vlan 4000 untagged
port hybrid pvid vlan 4000
mac-vlan enable
broadcast-suppression 20
poe enable
stp edged-port enable
stp root-protection
mac-authentication
lldp voice-vlan 13
dhcp-snooping information enable
dhcp-snooping information remote-id string 00mil015
#
Baptiste MOINE 4 Installation et configuration d’Asterisk
PRÉPARATION DU SYSTÈME
Déclaration de variables de configuration contextuelle :
# export HOSTNAME=asterix
# export DOMAIN=miletrie.chl
# export IP=172.28.128.11 MASK=255.255.255.0
# export GW=172.28.128.1
# export DNS1=172.16.10.32 DNS2=172.16.10.33
# export PROXY=172.18.4.1:8080
Configuration de l’accès réseau
Configuration des contrôleurs d’interfaces réseaux et de la résolution de noms DNS :
# cat <<-EOF >/etc/network/interfaces
##
# Default configuration
#
iface default inet dhcp
##
# Loopback NIC configuration
#
auto lo
iface lo inet loopback
##
# Ethernet NIC configuration
#
auto eth0
allow-hotplug eth0
iface eth0 inet static
address ${IP}
netmask ${MASK}
gateway ${GW}
dns-search ${DOMAIN}
dns-nameservers ${DNS1} ${DNS2}
EOF
Baptiste MOINE 5 Installation et configuration d’Asterisk
Application des configurations au contrôleur d’interface réseau Ethernet eth0 :
# ifdown eth0 && ifup eth0
Régénération du fichier /etc/resolv.conf :
# resolvconf -u || systemctl restart networking.service || /etc/init.d/networking restart
Vérification de la résolution de nom et de l’accès réseau :
# dig ${DOMAIN} ANY +noall +answer +nocomments
Configuration du proxy :
# cat <<-EOF >>~/.bash_profile
http_proxy="http://${PROXY}/"
https_proxy="\${http_proxy}"
export http_proxy https_proxy
EOF
# source ~/.bash_profile
# printenv http_proxy https_proxy
Baptiste MOINE 6 Installation et configuration d’Asterisk
Configuration du nom d’hôte
Mise à jour du nom d’hôte associé au système :
# cat <<-EOF >/etc/hostname
${HOSTNAME}
EOF
# cat <<-EOF >/etc/hosts
# IPv4
127.0.0.1 localhost
127.0.1.1 ${HOSTNAME}.${DOMAIN} ${HOSTNAME}
# IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF
# hostname ${HOSTNAME}.${DOMAIN}
# hostname -b ${HOSTNAME}.${DOMAIN}
# domainname ${HOSTNAME}.${DOMAIN}
# domainname -b ${HOSTNAME}.${DOMAIN}
# hostnamectl set-hostname ${HOSTNAME}.${DOMAIN}
# sysctl kernel.hostname=${HOSTNAME}.${DOMAIN}
# systemctl restart networking.service || /etc/init.d/networking restart
Baptiste MOINE 7 Installation et configuration d’Asterisk
Configuration du gestionnaire de paquets APT
Configuration du proxy pour le gestionnaire de paquets :
# cat <<-EOF >>/etc/apt/apt.conf.d/70debconf
Acquire::http::Proxy "http://${PROXY}/";
Acquire::https::Proxy "https://${PROXY}/";
Acquire::socks::Proxy "socks://${PROXY}/";
EOF
Mise à jour des dépôts puis mise à niveau des paquets et de la release système :
# cat <<-'EOF' >/etc/apt/sources.list
# Dépôt de base de Debian Jessie
deb http://httpredir.debian.org/debian/ jessie main contrib
deb-src http://httpredir.debian.org/debian/ jessie main contrib
# Mises à jour distribution stable
deb http://httpredir.debian.org/debian/ jessie-updates main
deb-src http://httpredir.debian.org/debian/ jessie-updates main
# Mises à jour vers distribution stable
deb http://httpredir.debian.org/debian/ jessie-backports main
deb-src http://httpredir.debian.org/debian/ jessie-backports main
# Mises à jour de sécurité
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
EOF
Téléchargement et installation de la clé GPG (« GNU Privacy Guard ») du dépôt deDebian :
# gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553
# gpg -a --export 8B48AD6246925553 | sudo apt-key add -
Mise à niveau des paquets et du noyau système :
# apt-get update
# apt-get -fy upgrade && apt-get -fy dist-upgrade
Baptiste MOINE 8 Installation et configuration d’Asterisk
Configuration des utilisateurs
Création d’un utilisateur simple :
# export USR=user
# export GRP=users
# export USRID=1337
# useradd -u ${USRID} -UG cdrom,floppy,audio,dip,video,plugdev,netdev,ssh-users,${GRP} -s /bin/bash -d /home/${USR}/ ${USR}
# mkdir /home/${USR}/
# find /etc/skel/ -mindepth 1 -exec cp -r {} /home/${USR}/ \;
# chown -R ${USR}:${USR} /home/${USR}/
# chmod -R 700 /home/${USR}/
# passwd ${USR}
Suppression de la gestion sudo, l’exécution de commandes d’administrations sensibles neseront possibles que dans un contexte d’exécution privilégié (root) non hérité :
# apt-get purge sudo
OU Ajout de l’utilisateur aux membres du groupe sudo pour l’exécution rapide de tâchesdans un contexte d’exécution privilégié :
# apt-get install sudo
# usermod -aG sudo ${USR}
Baptiste MOINE 9 Installation et configuration d’Asterisk
PRÉPARATION DE L’ESPACE DE TRAVAIL (WORKBENCH)
Installation d’utilitaires usuels :
# apt-get -fy install curl dnsutils git mercurial netcat ntpdate python3.4 resolvconf subversion vim build-essential apt-utils
Configuration de la date et heure en utilisant un service NTP (« Network Time Protocol ») :
# ntpdate 0.fr.pool.ntp.org
Installation de OpenSSH-Server
Téléchargement du paquet openssh-server en utilisant le gestionnaire APT :
# apt-get -fy install openssh-server openssh-sftp-server openssh-client
Arrêt du service SSH pour préparer sa configuration :
# /etc/init.d/ssh stop || systemctl stop ssh.service
Génération de nouveaux nombres premiers de 4096 bits pour le Diffie-Hellman GroupExchange (à défaut d’unité de calcul graphique, cette étape est très coûteuse en termesde temps processeur) :
# ssh-keygen -G /tmp/moduli -b 4096
Test de sûreté et validation des nombres premiers et suppression des nombres premiers :
# ssh-keygen -T /etc/ssh/moduli -f /tmp/moduli && rm /tmp/moduli
Génération d’un nouveau jeu de clé publique et privée pour le serveur :
# rm /etc/ssh/ssh_host_*key*
# ssh-keygen -N '' -t ed25519 -f /etc/ssh/ssh_host_ed25519_key </dev/null
# ssh-keygen -N '' -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key </dev/null
Baptiste MOINE 10 Installation et configuration d’Asterisk
Ajout d’un message d’avertissement pour éviter tout problème en cas de procéduresjudiciaires suite à un potentiel piratage ou autre accès non autorisé :
# cat >/etc/issue <<-EOF
#############################################
# AVERTISSEMENT: L'accès à ce système est #
# restreint au personnel administratif de #
# la direction des systèmes d'information #
# du Centre Hospitalier Henri Laborit #
# #
# Tout accès non autorisé constitue une #
# violation sujette à poursuite judiciaire. #
#############################################
EOF
Baptiste MOINE 11 Installation et configuration d’Asterisk
Configuration du client
Sauvegarde de la configuration d’origine :
# cp /etc/ssh/ssh_config{,.bak}
Création d’une nouvelle configuration pour l’authentification SSH en tant que client :
# cat <<-'EOF' >/etc/ssh/ssh_config
# Configuration par défaut pour l'authentification sur tous les hôtes
Host *
# Pas d'authentification par mot de passe
PasswordAuthentication no
ChallengeResponseAuthentication no
# Authentification par clés publiques
PubkeyAuthentication yes
# Privilégie l'utilisation de EdDSA (Ed25519) à RSA
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_rsa
# Désactive le Roaming (CVE-2016-0777 et CVE-2016-0778)
UseRoaming no
# Variables d'environnement relatives à la langue
SendEnv LANG LC_*
# N'affiche pas les noms d'hôtes en clair
HashKnownHosts yes
# Divers
VisualHostKey yes
EOF
Baptiste MOINE 12 Installation et configuration d’Asterisk
Configuration du service
Sauvegarde de la configuration d’origine :
# cp /etc/ssh/sshd_config{,.bak}
Création d’une nouvelle configuration pour le service SSH :
# cat <<-'EOF' >/etc/ssh/sshd_config
#### Réseau ####
# Port d'écoute du service, non standard conseillé afin d'éviter les scans intempestifs (n’augmente en aucun cas le niveau de sécurité !)
Port 22
# Accélération du processus d’authentification pour les clients n’utilisant pasde paramètres DNS valides
UseDNS no
# Utilisation du protocole SSH-2 uniquement
Protocol 2
# Écoute IPv4 uniquement et sur le réseau d’administration
AddressFamily inet
ListenAddress 0.0.0.0
# Désactivation de la redirection du flux Xorg
X11Forwarding no
X11DisplayOffset 10
# Désactive les messages de type TCPKeepAlive, ces messages ne sont pas diffusés dans le canal chiffré
TCPKeepAlive no
# Alternative chiffrée au TCPKeepAlive, désauthentification après 3 min d’inactivité (3*60sec)
ClientAliveInterval 60
ClientAliveCountMax 3
Baptiste MOINE 13 Installation et configuration d’Asterisk
#### Clés ####
# Clés d’hôte pour le protocole SSH-2
# Privilégie l’utilisation de EdDSA (Ed25519) à RSA
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
# Séparation des privilèges, prévient les exploits de type privilege escalation
UsePrivilegeSeparation yes
UseLogin no
# Authentification par clé publique
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
#### Authentification ####
# Whitelist
AllowGroups ssh-users
# 30 secondes pour saisir la passphrase
LoginGraceTime 30
# Interdit l’authentification avec un utilisateur root
PermitRootLogin no
# Vérification des permissions sur les fichiers de clés et les répertoires
StrictModes yes
# N’utilise pas les fichiers ~/.rhosts et ~/.shosts
IgnoreRhosts yes
# Pas d’authentification basée sur l’hôte
HostbasedAuthentication no
Baptiste MOINE 14 Installation et configuration d’Asterisk
# Ne fait pas confiance en ~/.ssh/known_hosts pour l’authentification RhostsRSAAuthentication
IgnoreUserKnownHosts yes
RSAAuthentication yes
RhostsRSAAuthentication no
# Interdit l’authentification sans mot de passe
PermitEmptyPasswords no
# Utilisation de clés publique/privée pour l’authentification
PasswordAuthentication no
# Désactivation du ChallengeResponse (à activer pour une authentification TOTP)
UsePAM no
ChallengeResponseAuthentication no
#### Divers ####
# Journalisation dans /var/log/auth.log
SyslogFacility AUTH
LogLevel INFO
# Affichage de la dernière connexion
PrintLastLog yes
MaxAuthTries 2
MaxStartups 10:30:60
# Affichage d’une bannière de login
Banner /etc/issue
PrintMotd no
# Autorise les clients à passer des variables locales d’environnement
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
EOF
Baptiste MOINE 15 Installation et configuration d’Asterisk
Configuration de l’utilisateur « user »
Création d’un groupe et ajout de l’utilisateur autorisé pour l’authentification sur le serviceSSH (voir Whitelist) :
# groupadd ssh-users
# usermod -aG ssh-users ${USR}
Création des jeux de clés EdDSA (Edwards-curve Digital Signature Algorithm) et RSA(Rivest-Shamir-Addleman) pour l’authentification par clé privée (depuis le serveur) :
# mkdir /home/${USR}/.ssh/
# ssh-keygen -t ed25519 -f /home/${USR}/.ssh/${HOSTNAME}_ed25519
# ssh-keygen -t rsa -b 4096 -f /home/${USR}/.ssh/${HOSTNAME}_rsa
FACULTATIF : Création d’un jeu de clés EdDSA et RSA résistant aux attaques de typebruteforce, cette étape est recommandée, mais dans la mesure où elle contraint àl’utilisation d’un client SSH supportant le processus cryptographique de dérivation de clé(« key derivation function » ou KDF), il sera nécessaire d’apprécier les enjeux relatifs àl’utilisation d’un tel jeu de clé, notamment en termes de portabilité et rétrocompatibilité :
# ssh-keygen -t ed25519 -o -a 100 -f /home/${USR}/.ssh/${HOSTNAME}_ed25519
# ssh-keygen -t rsa -b 4096 -o -a 100 -f /home/${USR}/.ssh/${HOSTNAME}_rsa
Autorisation des clés publiques (depuis le serveur) :
# cat /home/${USR}/.ssh/${HOSTNAME}_{ed25519,rsa}.pub >/home/${USR}/.ssh/authorized_keys
Baptiste MOINE 16 Installation et configuration d’Asterisk
Affichage des clés privées et des paramètres du client SSH (depuis le serveur) :
# cat <<-_EOF_
# Commandes à lancer sur le client
cat <<-'EOF' >~/.ssh/${HOSTNAME}_ed25519
$(cat /home/${USR}/.ssh/${HOSTNAME}_ed25519)
EOF
cat <<-'EOF' >~/.ssh/${HOSTNAME}_rsa
$(cat /home/${USR}/.ssh/${HOSTNAME}_rsa)
EOF
cat <<-'EOF' >>~/.ssh/config
Host ${HOSTNAME}
Hostname ${IP}
User ${USR}
IdentityFile ~/.ssh/${HOSTNAME}_ed25519
IdentityFile ~/.ssh/${HOSTNAME}_rsa
EOF
touch ~/.ssh/known_hosts
_EOF_
Mise à jour des droits d’accès aux configurations SSH de l’utilisateur « user » etsuppression des clés (depuis le serveur) :
# chown -R ${USR}:${USR} /home/${USR}/.ssh/
# chmod 0500 /home/${USR}/.ssh/
# chmod 0400 /home/${USR}/.ssh/authorized_keys
# rm /home/${USR}/.ssh/${HOSTNAME}_{ed25519,rsa}{,.pub}
Test et validation de l’authentification par clé publique (depuis le client) :
# ssh asterix.miletrie.chl
Baptiste MOINE 17 Installation et configuration d’Asterisk
INSTALLATION D’ASTERISK
Installation de la chaîne de compilation
Afin de compiler Asterisk et le cas échéant, ses dépendances, il est nécessaire d’installersur le système, une chaîne de compilation.
Analyseurs lexicaux et syntaxiques
Composantes du début de la chaîne de compilation, les analyseurs consistent àdécomposer les chaînes de caractères en entités lexicales (« tokens ») en se basant surdes expressions rationnelles, définissant des séquences de caractères autorisés. Ceprocessus s’appelle la segmentation (« tokenization »). Les plus utilisés sont :
• GNU Bison : Compilateur de compilateur chargé de l’analyse sémantique etsyntaxique ;
• Flex : Analyseur de motifs lexicaux.
Installation
# apt-get -fy install bison flex
Autotools
Autotools désigne un ensemble d’outils de build du projet GNU, parmi lesquels onretrouve :
• GNU Make : Fournit une aide à la compilation et à l’édition de liens par la créationde fichier de description d’installation des dépendances appelés makefile ;
• GNU AutoMake : Permet la génération d’un makefile à partir d’une description deplus haut niveau ;
• GNU AutoConf : Permet la génération d’un script shell de configuration del’environnement de développement « configure » à partir de programmes basés surle préprocesseur GNU M4 ;
• GNU LibTool : Utilisé avec AutoConf et AutoMake afin de simplifier le processus decompilation, indépendamment du système utilisé, par la création de bibliothèquesdynamiques dépendantes au processus d’installation ;
• GNU AutoGen : Fournit une approche similaire à Flex dans la génération defichiers makefile.
Installation
# apt-get -fy install make automake autoconf libtool autogen m4
Baptiste MOINE 18 Installation et configuration d’Asterisk
Compilateur
Le compilateur GCC (« GNU Compiler Collection ») est un ensemble de compilateurnotamment utilisé pour le langage C et C++. En complément de cette bibliothèque decompilation, il est parfois nécessaire d’installer d’autre outils pouvant être utilisées dans lachaîne de compilation :
• GNU BinUtils : Ensemble d’outils permettant la création et la gestion deprogrammes binaires et sources assembleur ;
• GNU Debugger : Fournit une large ensemble d’outils pour tracer ou altérerl’exécution d’un programme (debugging) ;
• GNU C++ : Compilateur pour C++.
Installation
# apt-get -fy install binutils binutils-dev gcc gcc-multilib g++ g++-multilib gdb build-essential linux-headers-$(uname -r)
Installation des dépendances
# apt-get -fy install libncurses5 libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite3-dev libssl-dev libsrtp0-dev libspeex-dev libspeexdsp-devlibgsm1-dev libxslt1-dev libcurl4-openssl-dev libcap-ng-dev libcap-dev
Baptiste MOINE 19 Installation et configuration d’Asterisk
Installation d’Asterisk
Téléchargement de la dernière version stable d’Asterisk :
# export ASTERISK_VERSION=14
# cd /opt/
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${ASTERISK_VERSION}-current.tar.gz
# tar xvzf asterisk-${ASTERISK_VERSION}-current.tar.gz
# pushd asterisk-${ASTERISK_VERSION}*/
Pré-configuration d’Asterisk :
# ./configure --with-cap && make menuselect
Installation d’Asterisk en français avec le driver SIP :
1. Menu « Channel Drivers » :
• Cocher « chan_sip » ;
• Presser la touche [Échap] pour quitter ce menu ;
2. Menu « Core Sound Packages » :
◦ Cocher « CORE-SOUNDS-FR-ULAW » ;
◦ Cocher « CORE-SOUNDS-FR-ALAW » ;
◦ Presser la touche [Échap] pour quitter ce menu ;
3. Menu « Music On Hold File Packages » :
• Décocher « MOH-OPSOUND-WAV ;
• Cocher « MOH-OPSOUND-ULAW » ;
• Cocher « MOH-OPSOUND-ALAW » ;
• Presser la touche [Échap] pour quitter ce menu ;
4. Menu « Extras Sound Packages » :
• Cocher « EXTRA-SOUNDS-FR-ULAW » ;
• Cocher « EXTRA-SOUNDS-FR-ALAW » ;
• Presser la touche [Échap] pour quitter ce menu ;
5. Presser la touche [S] pour sauvegarder la configuration.
# make && make install && make samples && make config && popd
Baptiste MOINE 20 Installation et configuration d’Asterisk
Installation de DAHDI (Digium Asterisk Hardware Interface) :
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
# tar xvzf dahdi-linux-complete-current.tar.gz
# pushd dahdi-linux-complete-*/
# make && make install && make config
# popd
Installation de la suite audio pour la lecture et la synthèse vocale :
# apt-get -fy install perl libwww-perl sox mpg123 libsox-fmt-mp3 libpulse0 libmp3lame0 libice6 libasyncns0 libsm6 libmad0 libid3tag0 libtwolame0 pulseaudio
Installation de GoogleTTS (« Text to Speech ») :
# git clone https://github.com/zaf/asterisk-googletts.git
# cp /{opt/asterisk-googletts,var/lib/asterisk/agi-bin}/googletts.agi
# chmod +x /var/lib/asterisk/agi-bin/googletts.agi
# chown asterisk:asterisk /var/lib/asterisk/agi-bin/googletts.agi
Installation de FliteTTS :
# apt-get -y install flite1-dev
# git clone https://github.com/zaf/Asterisk-Flite.git
# pushd Asterisk-Flite/
# make && make install && make samples
# ls -alh /usr/lib/asterisk/modules/app_flite.so
# asterisk -rx "module load app_flite"
# asterisk -rx "core show application like flite"
Installation d’eSpeakTTS :
# apt-get -y install libespeak1 libespeak-dev libsndfile1 libsndfile-dev libsamplerate0 libsamplerate-dev
# git clone https://github.com/zaf/Asterisk-eSpeak.git
# pushd Asterisk-eSpeak/
# make && make install && make samples
# popd
Baptiste MOINE 21 Installation et configuration d’Asterisk
CONFIGURATION D’ASTERISK
Sauvegarde des fichiers de configuration d’Asterisk :
# cp /etc/asterisk/sip.conf{,.bak}
# cp /etc/asterisk/users.conf{,.bak}
# cp /etc/asterisk/extensions.conf{,.bak}
# cp /etc/asterisk/voicemail.conf{,.bak}
Configuration d’Asterisk en français :
# sed -i 's#;\(language=\)en#\1fr#' /etc/asterisk/sip.conf
Installation de Postfix en mode non-intéractif :
# debconf-set-selections <<< "postfix postfix/main_mailer_type select Internet with smarthost"
# debconf-set-selections <<< "postfix postfix/mailname string [email protected]"
# debconf-set-selections <<< "postfix postfix/relayhost string smtp.miletrie.chl"
# apt-get -y install postfix
Configuration du proxy :
# cat <<-'EOF' >/etc/systemd/system/asterisk.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://172.18.4.1:8080/"
Environment="HTTPS_PROXY=http://172.18.4.1:8080/"
Environment="NO_PROXY=localhost,127.0.0.0/8,*.miletrie.chl"
EOF
# systemctl daemon-reload
# systemctl show --property Environment asterisk.service
Baptiste MOINE 22 Installation et configuration d’Asterisk
Configuration des utilisateurs locaux
# cat <<-'EOF' >/etc/asterisk/users.conf
[general]
hasvoicemail=yes ; Les utilisateurs posséderont une boite vocale
hassip=yes ; L’utilisateur possède un compte SIP
hasiax=yes ; L’utilisateur possède un compte IAX
callwaiting=yes ; L’utilisateur peut mettre des appels en attente
threewaycalling=yes
callwaitingcallerid=yes
transfer=yes ; L’utilisateur peut transférer des appels
canpark=yes ; L’utilisateur peut mettre des appels dans le parking
cancallforward=yes
callreturn=yes
callgroup=1
pickupgroup=1
nat=yes ; L'utilisateur se trouve derrière un NAT
canreinvite=yes
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
qualify=yes ; Permet le monitoring
[template_local](!)
type=friend ; Type d'objet SIP (friend=utilisateur)
host=dynamic ; L'utilisateur n'est pas associé à une IP fixe
dtmfmode=rfc2833 ; Mode DTMF
disallow=all ; Interdit tous les codecs
allow=g722 ; Autorise le codec g722
allow=g729 ; Autorise le codec g729
allow=alaw ; Autorise le codec alaw
context=local ; Nom du contexte pour ce template
secret=youshallnotpass ; Secret utilisé par défaut pour les utilisateurs du template
[1001](template_local) ; Numéro SIP et template utilisé
fullname=John DOE
username=jodoe
mailbox=1001
Baptiste MOINE 23 Installation et configuration d’Asterisk
[1002](template_local)
fullname=Jane DOE
username=jadoe
mailbox=1002
[1003](template_local)
fullname=John SMITH
username=josmith
mailbox=1003
[1004](template_local)
fullname=Jane SMITH
username=jasmith
mailbox=1004
EOF
Baptiste MOINE 24 Installation et configuration d’Asterisk
Configuration de la messagerie vocale
# cat <<-'EOF' >/etc/asterisk/voicemail.conf
[zonemessages]
european=Europe/Paris|'vm-received' a d b 'digits/at' HM
[general]
tz=european
charset=UTF-8
locale=fr_FR.UTF-8
maxmessage=100 ; Nombre max de message sur la boite de messagerie
maxsecs=0 ; Durée max d'un message
minsecs=0 ; Durée minimum d'un message
maxlogins=3 ; Nombre d'essai maximum pour l'authentification d'un utilisateur sur sa boite vocale
review=yes ; Permet à l'appelant de réécouter son message avant de le transmettre à la boite de messagerie. Accessible en terminant le message par #
saycid=no ; Dicte le numéro de l'appelant avant dejouer le message qu'il a laissé
format=wav49|gsm|wav ; Formats utilisés pour enregistrer les messages vocaux (sauvegarde dans tous les formats indiqués)
[email protected] ; Permet d'identifier la source du serveur mail de notification
fromstring=Messagerie Vocale Asterisk
pagerfromstring=Messagerie Vocale Asterisk
attach=yes ; Permet d'envoyer en pièce jointe un fichier audio comprenant le message vocal
maxsilence=10 ; Temps maximum de silence autorisé avant fin d'appel
silencethreshold=128 ; Seuil de détection du silence
sendvoicemail=yes ; Permet à un utilisateur d'envoyer un message vocal à un autre utilisateur
; Corps du mail
emaildateformat=%A, %d %B %Y à %H:%M:%S
emailsubject=Messagerie Vocale Asterisk - Nouveau message dans la boîte ${VM_MAILBOX}
emailbody=Bonjour${VM_NAME},\n\nLe numéro ${VM_CALLERID} a tenté de vous joindre sans succès le ${VM_DATE}.\nCette personne vous a laissé un message de ${VM_DUR} secondes. Vous pouvez le consulter en appelant votre boîte vocale.\n\nBonne journée !
pagerfromstring=Messagerie Vocale Asterisk
pagersubject=Nouveau message vocal
Baptiste MOINE 25 Installation et configuration d’Asterisk
pagerbody=Nouveau message de ${VM_DUR} secondes dans la boîte ${VM_MAILBOX} laissé le ${VM_DATE} par ${VM_CALLERID}.
[local_vm]
1001 => 1234, John DOE, [email protected]
1002 => 1234, Jane DOE, [email protected]
1003 => 1234, John SMITH, [email protected]
1004 => 1234, Jane SMITH, [email protected]
EOF
Baptiste MOINE 26 Installation et configuration d’Asterisk
Configuration du plan de numérotation
# cat <<-'EOF' >/etc/asterisk/extensions.conf
[local]
include => parkedcalls
; Numéro de groupe
exten => 4000,1,Log(NOTICE, Incoming call from ${CALLERID(all)} to ${EXTEN})
exten => 4000,2,Dial(SIP/1001&SIP/1002,10)
exten => 4000,3,Hangup()
; paramètre t : autorise la fonction transfert pour l'appelé
; paramètre T : autorise la fonction transfert pour l'appelant
; paramètre x : autorise la fonction enregistrement pour l'appelé
; paramètre X : autorise la fonction enregistrement pour l'appelant
exten => _1XXX,1,Log(NOTICE, Incoming call from ${CALLERID(all)} to ${EXTEN})
exten => _1XXX,2,Dial(SIP/${EXTEN},10,TtxX)
exten => _1XXX,3,Voicemail(${EXTEN}@local_vm)
exten => _1XXX,4,Hangup()
; Messagerie vocale
exten => 600,1,Log(NOTICE, Dialing out from ${CALLERID(all)} to voicemail (${EXTEN}))
exten => 600,2,Voicemailmain(${CALLERID(num)}@local_vm)
; Personnalisation messagerie vocale (http://denisrosenkranz.com/tuto-asterisk-mise-en-place-dun-utilitaire-de-creation-dannonces-daccueils/)
exten => 601,1,Log(NOTICE, Dialing out from ${CALLERID(all)} to voicemail message customization tool (${EXTEN}))
exten => 601,2,Goto(voicemail-msg,s,1)
exten => 1234,1,Answer()
exten => 1234,n,agi(googletts.agi,"Ceci est un message de test en français",fr,any)
exten => 1234,n,agi(googletts.agi,"This is a simple google text to speech test in english.",en,any)
exten => 1234,n,agi(googletts.agi,"Esta es una simple prueba en español.",es,any)
exten => 1234,n,agi(googletts.agi,"Αυτό είναι ένα απλό τέστ στα ελληνικά.",el,any)
exten => 1234,n,agi(googletts.agi,"これは、日本の簡単なテストです。良い一日を。",ja,any)
Baptiste MOINE 27 Installation et configuration d’Asterisk
exten => 1234,n,agi(googletts.agi,"这是一个简单的测试,在中国。有一个愉快的一
天。",zh-CN,any)
exten => 1234,n,Hangup()
[voicemail-msg]
exten => s,1,Answer
exten => s,2,agi(googletts.agi,"Bienvenue dans l'outil de personnalisation de votre message d’accueil.",fr,any)
exten => s,3,agi(googletts.agi,"Veuillez annoncer votre message d’accueil aprèsle bip sonore puis validez par la touche dièse.",fr,any)
exten => s,4,Record(MSG-${CALLERID(num)}:alaw)
exten => s,5,agi(googletts.agi,"Voici votre message d’accueil: ",fr,any)
exten => s,6,Playback(MSG-${CALLERID(num)})
exten => s,7,agi(googletts.agi,"Si vous souhaitez le ré-enregistrer appuyez sur1",fr,any)
exten => s,8,agi(googletts.agi,"Sinon vous pouvez raccrocher.",fr,any)
exten => s,9,Set(TIMEOUT(response)=10)
exten => s,10,WaitExten()
exten => 1,1,Goto(voicemail-msg,s,3)
exten => _[2-9#],1,Goto(voicemail-msg,s,7)
exten => t,1,Goto(voicemail-msg,s,7)
EOF
Configuration de la QoS
# sed -i '{
s/;*\(tos_sip=\)[^ ]*\(.*\)/\1cs3\2/; # ToS pour les paquets SIP
s/;*\(tos_audio=\)[^ ]*\(.*\)/\1ef\2/; # ToS pour les paquets RTP audio
s/;*\(tos_video=\)[^ ]*\(.*\)/\1af41\2/; # ToS pour les paquets RTP vidéo
s/;*\(tos_text=\)[^ ]*\(.*\)/\1af41\2/; # ToS pour les paquets RTP texte
}' /etc/asterisk/sip.conf
Baptiste MOINE 28 Installation et configuration d’Asterisk
Configuration de l’enregistrement SIP d’Asterisk sur IMS (pas utilisé pour le moment)
# cat <<-EOF >/etc/asterisk/sip.conf
[general]
; http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf
dtmfmode=rfc2833 ; Mode DTMF
bindaddr=${IP} ; Adresse d'écoute
bindport=5060 ; Port d'écoute
language=fr ; Langage utilisé par Playback et Background
srvlookup=yes ; Autorise le serveur à utiliser le DNS
canreinvite=yes
defaultexpiry=3600 ; Durée avant expiration d'un enregistrement
registertimeout=30 ; Nombre max de secondes attendues avant réponse du registrar sip
registerattempts=0 ; Nombre max de messages REGISTER envoyés avant abandon
allowguest=yes ; Accepte les appels invités
nat=yes
context=local
register => [email protected]:0000:[email protected]@pcscf.open-ims.test:4060/asterisk-a
EOF
Baptiste MOINE 29 Installation et configuration d’Asterisk
Configuration du parking et transfert d’appels
# sed -i '{
s/;*\(blindxfer => \)[^ ]*\(.*\)/\1#1\2/; # Transfert aveugle
s/;*\(atxfer => \)[^ ]*\(.*\)/\1*2\2/; # Transfert sur un numéro composé
s/;*\(pickupexten=\)[^ ]*\(.*\)/\1*8\2/; # Interruption d’un appel sur le reseau
s/;*\(parkcall => \)[^ ]*\(.*\)/\1#72\2/ # Mise en parking d’un utilisateur
}' /etc/asterisk/features.conf
# sed -i '{
s/;*\(parkext => \)[^ ]*\(.*\)/\1700\2/; # Extension pour le parking
s/;*\(parkpos => \)[^ ]*\(.*\)/\1701-720\2/; # Plage de stockage sur leparking
s/;*\(context => \)[^ ]*\(.*\)/\1parkedcalls\2/ # Contexte associé au parking
}' /etc/asterisk/res_parking.conf
Exécution d’Asterisk en tant qu’utilisateur
# groupadd asterisk
# useradd -d /var/lib/asterisk -g asterisk asterisk
# chown -R asterisk:asterisk /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk
# chown -R root:asterisk /etc/asterisk
# chmod -R u=rwX,g=rX,o= /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
# chmod g+w /etc/asterisk/voicemail.conf
# chmod g+w,+t /etc/asterisk
# sed -i 's/^#*\(AST_\(\(USER\)\|\(GROUP\)\)\)=".*"$/\1="asterisk"/' /etc/default/asterisk
Baptiste MOINE 30 Installation et configuration d’Asterisk
Création d’un message vocal conditionnel de fermeture
Afin de synthétiser un message vocal, il est possible d’utiliser, par exemple, l’outil AcapelaBox (https://acapela-box.com/AcaBox/index.php) permettant de synthétiser vocalement unmessage textuel en utilisant plusieurs types de voix (ici, nous utilisons Manon). Une fois lasynthèse vocale du message effectuée, il sera possible de télécharger le fichier audiocorrespondant en utilisant, par exemple, le module complémentaire FlashGot.
Envoi du fichier audio sur le serveur IPBX :
# scp ferme.mp3 asterix:/tmp/
Ré-encodage du flux audio en aLaw, 8 kHz 16 bits, 1 canal :
# sox ferme.mp3 -r 8000 -c 1 -e a-law ferme.wav
# mv ./ferme.{wav,alaw}
Ajout du fichier dans les sons :
# mkdir /var/lib/asterisk/sounds/fr/custom/
# cp {.,/var/lib/asterisk/sounds/fr/custom}/ferme.alaw
Mise à jour du propriétaire et des permissions :
# chown -R asterisk:asterisk /var/lib/asterisk/sounds/fr/custom/
# chmod -R u=rwX,g=rX,o= /var/lib/asterisk/sounds/fr/custom/
Par exemple, la nouvelle extension pourrait être :
exten => 3000,1,GotoIfTime(8:00-18:00,mon-fri,*,*?open:closed)
same => n,Dial(SIP/1001,10,TtxX)
same => n(open),Dial(SIP/1001,10,TtxX)
same => n,Hangup()
same => n(closed),Playback(custom/ferme)
same => n,Hangup()
Ici, l’ouverture est du lundi au vendredi de 8 h à 18 h, le message sera donc jouéuniquement sur les périodes de fermeture.
Baptiste MOINE 31 Installation et configuration d’Asterisk
Rechargement des configurations
# systemctl start asterisk.service
# asterisk -rvvv
# reload
# sip show registry
# sip show peers
Baptiste MOINE 32 Installation et configuration d’Asterisk
TESTS
Pour tester l’IPBX Asterisk, nous allons commencer par utiliser un softphone, c’est-à-dire,un poste téléphonique SIP logiciel. L’utilisation d’un softphone permettra dans un premiertemps de valider la configuration de l’IPBX en évitant les problèmes éventuellementgénérés par l’utilisation de postes téléphoniques physiques (i.e., poste Polycom).
Installation de X-Lite
Pour installer X-Lite, se rendre sur le site officiel du développeur(http://www.counterpath.com/x-lite/) et télécharger et installer la dernière version stable dusoftphone.
Configuration de X-Lite
L’utilisation de X-Lite est simplifiée à l’extrême et ne nécessite que de très peu deconfigurations pour être exploitable. Dans notre cas, il suffit de modifier les codecs audio àutiliser, c’est-à-dire le A-LAW :
Baptiste MOINE 33 Installation et configuration d’Asterisk
Illustration 2: Configuration X-Lite - Codecs Audio
Configuration de l’enregistrement SIP pour John
Pour s’authentifier sur le serveur IPBX, le client nécessite tout d’abord de posséder uneconfiguration DNS et IP valide afin d’être en mesure de résoudre le nom DNS attribué àl’IPBX (i.e., asterix.miletrie.chl) et pouvoir initier son authentification au niveau de lacouche IP.
Une fois configuré, il suffit de se rendre dans la configuration pour l’enregistrement SIPdisponible sous l’onglet « Softphone / Account Settings » et spécifier les paramètresd’authentification associés à l’utilisateur :
Note : Le mot de passe et l’identifiant associé à l’utilisateur est décrit dans le fichier deconfiguration « users.conf » de l’IPBX (cf. Configuration des utilisateurs locaux).
Baptiste MOINE 34 Installation et configuration d’Asterisk
Illustration 3: Configuration X-Lite - EnregistrementSIP
Une fois complétés, valider les paramètres de configuration et vérifier que l’enregistrementSIP de l’utilisateur est effectif au niveau du client (voir Illustration 4) et/ou depuis la consoled’administration de l’IPBX :
# asterisk -rvvv
# sip show peer 1001
* Name : 1001
..snip..
Context : local
..snip..
Mailbox : 1001@default,1001
..snip..
Callerid : "John DOE" <>
..snip..
Addr->IP : 172.16.57.145:53740
..snip..
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username: john
..snip..
Codecs : (alaw)
..snip..
Status : OK (223 ms)
Useragent : X-Lite release 4.9.7.1 stamp 83372
Reg. Contact : sip:[email protected]:53740;rinstance=f426cff24decc075
..snip..
Configuration de l’enregistrement SIP pour Jane
Les étapes de configuration sont exactement les mêmes que celles utilisées pour laConfiguration de l’enregistrement SIP pour John.
Baptiste MOINE 35 Installation et configuration d’Asterisk
Illustration 4: Configuration X-Lite - ClientSIP authentifié
Configuration d’un poste Polycom VVX300
Pour commencer la configuration du poste téléphonique, il faut tout d’abord procéder à larécupération de son adresse IP en vérifiant, par exemple, les baux DHCP en se référant àl’adresse MAC indiquée dans le manuel ou au dos du poste téléphonique.
Les postes téléphoniques Polycom de la gamme VVX300, VVX400 et VVX500embarquent tous une interface de configuration WEB directement accessible via sonadresse IP (mot passe administrateur par défaut « 456 »).
Configuration des codecs audio
Dans notre cas, nous utilisons le codec A-LAW, il est donc nécessaire de modifier lapriorité des codecs audio via le menu « Configuration / Audio Codec Profiles » (voir Illustration 5: Configuration Polycom VVX300 - Priorité des codecs).
Baptiste MOINE 36 Installation et configuration d’Asterisk
Illustration 5: Configuration Polycom VVX300 - Priorité des codecs
Configuration de l’enregistrement SIP
Les paramètres de configuration standards pour l’enregistrement SIP sont accessibles viale menu « Configuration Simple / Serveur SIP » et « Configuration Simple / Identificationligne SIP » (voir Illustration 6: Configuration Polycom VVX300 - Configuration SIP).
Baptiste MOINE 37 Installation et configuration d’Asterisk
Illustration 6: Configuration Polycom VVX300 -Configuration SIP