Fail 2 Ban est un outil propre aux systèmes Linux, permettant de se protéger contre les attaques de brute force ayant pour but de permettre à un attaquant de s’authentifier.
Il est possible de configurer Fail2Ban pour qu’il protège Asterisk.
Fail 2 Ban est un outil propre aux systèmes Linux, permettant de se protéger contre les attaques de brute force ayant pour but de permettre à un attaquant de s’authentifier.
Il est possible de configurer Fail2Ban pour qu’il protège Asterisk.
L’une des configurations les plus importantes dans un serveur Asterisk est la liaison avec l’opérateur de téléphonie.
En effet, cette liaison est indispensable pour permettre les appels entrants et sortants.
Pour diverses raisons, votre réseau téléphonique peut contenir plusieurs serveurs Asterisk.
Il sera alors nécessaire de les connecter, afin de permettre des appels entre eux.
Il s’agit là typiquement du genre de cas que l’on retrouve en dans les entreprises implantées sur plusieurs sites géographiques.
Le CDR ou Call Detail Record est une fonctionnalité d’Asterisk qui permet de recueillir des informations sur les appels qui transitent par le serveur.
Ces informations peuvent ensuite être utilisées pour facturer les appels surtaxés, ou bien simplement à des fins d’analyse.
Les files d’attente peuvent être utiles pour gérer les appels entrants.
Le concept de base fait penser aux Ring Group, même si les Queues permettent de mieux gérer la distribution des appels.
Dans cet article nous verrons comment mettre en place une file d’attente basique.
Le parcage d’appels permet de mettre des appels dans un parking, pour les récupérer plus tard.
Cela peut être pratique pour gérer plusieurs appels en même temps.
Les appels mis au parking peuvent aussi être récupérés sur autre poste.
Voyons comment mettre cela en place.
Les IVR – Interactive Voice Response ou Standard Automatiques sont très pratiques pour une entreprise.
Le principe est simple et très connu : après la lecture d’un message préenregistré, l’appelant peut faire un choix au clavier.
Cela permet par exemple de mettre l’appelant en relation avec la bonne personne.
Au travers de cet article, nous verrons comment mettre en place un IVR.
Les conférences téléphoniques peuvent être utiles pour réaliser des appels à plus de deux personnes.
La mise en place est très simple, et l’utilisation l’est tout autant.
Voyons ensemble comment Asterisk permet la réalisation de conférences téléphoniques.
Les conférences téléphoniques fonctionnent par salle.
Quand un utilisateur veut rejoindre une conférence, il appelle le numéro de la salle, afin d’y entrer.
Tous les utilisateurs ayant fait de même se retrouveront ensemble dans ladite salle.
Les utilisateurs peuvent alors dialoguer, quitter et rejoindre la salle à leur convenance, etc…
Anciennement, le module qui gérait les conférences dans Asterisk s’appelait MeetMe. Aujourd’hui, il est deprecated et ConfBridge a prit le relais.
Nous verrons les deux dans cet article, même si il est recommandé d’utiliser ConfBridge. Néanmoins, je vous recommande de lire la partie sur MeetMe dans tous les cas, afin de profiter des explications.
MeetMe a besoin de DAHDI pour fonctionner.
Si vous ne l’avez pas déjà installé, je vous renvoie à l’article traitant de l’installation d’Asterisk.
Quant à MeetMe, il est à activer (si ce n’est pas déjà fait) dans Asterisk.
Il faut pour cela aller dans Menuselect.
cd /usr/src/asterisk/asterisk-12.0.0/ make menuselect
Si et seulement si vous avez eu à activer MeetMe, il vous faut refaire la compilation et l’installation d’Asterisk :
make make install
Pour ce qui est de la configuration de MeetMe, elle est très simple.
Les fichiers qui entrent en jeux ici sont meetme.conf et extensions.conf.
Dans le fichier meetme.conf, la configuration est la suivante :
[rooms] conf => N° salle, MDP, MDP admin
Le numéro de salle peut être au choix :
En effet, le numéro à composer pour entrer dans la salle sera défini dans le DialPlan.
La bonne pratique veut que l’on utilise le même numéro dans extensions.conf que dans meetme.conf.
Nous allons créer trois salles :
La configuration sera alors la suivante :
[rooms] conf => 910 conf => 920,123 conf => 930,123,9876
Dans extensions.conf, il faudra ajouter la partie suivante :
exten => 910,1,MeetMe(910) exten => 920,1,MeetMe(920) exten => 930,1,MeetMe(930)
Pour que les salles de conférence soient accessibles par tout le monde, le mieux est de créer un contexte global, qui sera inclus dans les autres contextes.
Comme ceci :
[global] exten => 910,1,MeetMe(910) exten => 920,1,MeetMe(920) exten => 930,1,MeetMe(930) [dept_1] include => global [dept_2] include => global
Il est possible d’ajouter des options pour l’accès aux conférences.
Voici certaines d’entre elles :
Au moment de rejoindre la conférence, si l’utilisateur est administrateur, et qu’un mot de passe admin a été configuré, l’utilisateur devra entrer ce dernier.
Un fois dans la conférence, l’utilisateur aura accès à des options avancées à l’aide du menu.
Il est donc indispensable que le menu soit activé (option « s »).
Ces options sont à configurer dans extensions.conf.
Nous pouvons par exemple utiliser la configuration suivante :
[global] exten => 910,1,MeetMe(910,cMs) exten => 920,1,MeetMe(920,cMS) exten => 930,1,MeetMe(930,cMs) [dept_1] include => global exten => 930,1,MeetMe(930,acMs) [dept_2] include => global
De cette manière, nous aurons une salle de conférence 910, qui sera publique, avec les options suivantes :
Nous aurons ensuite une salle 920, pareille que la salle 910 mais avec un mot de passe.
Quant à la salle 930, les utilisateurs du contexte dept_1 y accèdent en mode admin, alors que les utilisateurs du contexte dept_2 y accèdent en mode utilisateur.
Par conséquent, ils ne fourniront pas le même mot de passe à l’entrée.
Par ailleurs, si un utilisateur accède à une conférence en mode admin, et que celle-ci n’a pas de mot de passe admin de configuré, l’utilisateur devra fournir le mot de passe classique.
Si vous avez gardé un range pour les numéros spéciaux dans la numérotation de vos départements, vous pouvez fournir une à plusieurs salles de conférence spécifiques à chaque département.
Par exemple en réservant les 10 derniers numéros :
Dept_1 :
Dept_2 :
La configuration de ConfBridge repose sur deux fichiers :
Voici un exemple de configuration pour confbridge.conf
[User_NoAuth] type=user admin=no music_on_hold_when_empty=yes announce_user_count=yes [User_Auth] type=user admin=no music_on_hold_when_empty=yes announce_user_count=yes pin=1234 [User_Admin] type=user admin=yes music_on_hold_when_empty=yes announce_user_count=yes pin=5678 [ConfRoom_1] type=bridge max_members=10 [ConfRoom_2] type=bridge max_members=100
Nous retrouvons la définition de trois profils d’utilisateurs.
Le premier permet d’entrer dans une salle de conférence sans authentification, le deuxième nécessite d’entrer un mot de passe et le troisième permet d’entrer en tant qu’admin.
Dans les trois cas, une musique d’attente est jouée si la salle est vide. De plus, le nombre d’utilisateurs présents dans la salle est annoncé lors de la connexion.
Ensuite, deux salles sont définies. L’une peut accueillir 10 utilisateurs et l’autre 100.
Voici à présent en exemple de configuration pour le fichier extensions.conf
exten => 900,1,ConfBridge(Room_1,ConfRoom_1,User_NoAuth) exten => 901,1,ConfBridge(Room_1,ConfRoom_1,User_Admin) exten => 903,1,ConfBridge(Room_2,ConfRoom_2,User_Auth) exten => 904,1,ConfBridge(Room_2,ConfRoom_2,User_Admin)
Les paramètres de Confbridge en parenthèse fonctionnent comme suit :
1er paramètre : nom de la salle. Ne fait pas référence au contenu de Confbridge.conf.
2e paramètre : salle à rejoindre lors ce que l’on compose le numéro
3e paramètre : profil d’utilisateur
Ainsi, si quelqu’un compose le 900, il pourra entrer dans la salle ConfRoom1 avec le profil User_NoAuth.
Si quelqu’un compose le 903, il pourra entrer dans la salle ConfRoom2 avec le profil User_Auth (un code pin lui sera alors demandé).
La musique d’attente est une des fonctionnalités les plus utilisées dans la téléphonie.
Le principe est simple, faire patienter un utilisateur avec une musique plutôt qu’un blanc.
A travers cet article nous verrons l’utilisation de musique pour la mise en attente durant un appel, mais aussi la lecture de musique pour faire patienter un appelant avant que l’appelé décroche.
Les groupements d’appels, ou Ring Groups sont très utilisés en entreprise.
Le principe est de regrouper plusieurs utilisateurs dans un group, et d’y définir un comportement en cas d’appel.
Voyons les configurations qu’il est possible de mettre en place.
Tout d’abord, définissons un Ring Group.
Comme dit précédemment, il s’agit de regrouper des utilisateurs, pour un comportement bien précis en cas d’appels.
Un exemple pourrait être le standard d’une entreprise.
Lors-ce que quelqu’un appelle le numéro d’une entreprise, il va tomber sur l’utilisateur en charge du standard.
Sauf que si cet utilisateur n’est pas disponible, il n’y aura personne pour prendre en charge les appels.
Le scénario idéal serait donc le suivant :
Il serait aussi possible de faire une boucle. C’est à dire refaire sonner le poste 100 si le poste 102 ne répond pas.
Autre solution, faire sonner tous les postes en même temps.
Le scénario serait alors le suivant :
Nous pouvons donc mettre en place deux types de configuration dans Ring Group :
Commençons par la configuration Round Robin.
Cette dernière avait été rapidement présentée dans l’article traitant de la configuration basique d’Asterisk.
Bien entendu, la configuration se fera dans le DialPlan (fichier extensions.conf).
Pour rappel, nous disposons de 3 utilisateurs pour le moment :
Pour l’occasion, nous ajouterons l’utilisateur 102.
Dans users.conf :
[102](default_template) fullname = Bertrand Matthieu username = bmatthieu secret=password mailbox = 102 context=dept_1
Nous allons donc utiliser le scénario précédent :
Comme nous n’avons pas encore relié notre Asterisk à un ITSP, nous ne disposons pas de numéro public.
Nous ferons donc la manipulation pour la création d’un standard en interne à l’entreprise (ex : standard interne d’une grande entreprise, support IT, etc…).
Le numéro du standard sera le numéro 1000.
Voici donc la configuration à mettre en place dans le fichier extensions.conf :
exten => 1000,1,Dial(SIP/100,5) exten => 1000,2,Dial(SIP/101,5) exten => 1000,3,Dial(SIP/102,5) exten => 1000,4,Voicemail(100)
A vous de personnaliser le Timeout en fonction de ce que souhaitez obtenir.
Cette configuration peut être placée dans différents contextes.
Soit dans le contexte 100, ce qui empêchera les utilisateurs des autres contextes (200) d’appeler le standard.
Le mieux est de placer cette configuration dans un contexte général, qui sera inclus dans les autres contextes.
Voici donc la configuration idéale :
[global] exten => 1000,1,Dial(SIP/100,5) exten => 1000,2,Dial(SIP/101,5) exten => 1000,3,Dial(SIP/102,5) exten => 1000,4,Goto(dept_1,100,2) exten => 1000,5,Hangup() [dept_1] include => global exten => _1[0-8]X,1,Dial(SIP/${EXTEN},40) exten => _1[0-8]X,2,Voicemail(${EXTEN}@dept_1_vm) exten => 199,1,Answer() exten => 199,2,VoiceMailMain(${CALLERID(num)}@dept_1_vm) exten => _2XX,1,Goto(dept_2,${EXTEN},1) [dept_2] include => global exten => _2[0-8]X,1,Dial(SIP/${EXTEN},40) exten => _2[0-8]X,2,Voicemail(${EXTEN}@dept_2_vm) exten => 299,1,Answer() exten => 299,2,VoiceMailMain(${CALLERID(num)}@dept_2_vm) exten => _1XX,1,Goto(dept_1,${EXTEN},1)
Avant de tester, relancer Asterisk.
A présent, vous pouvez appeler le numéro 1000, et voir les postes sonner les uns après les autres.
Lancement de l’appel depuis le poste 200 :
Immédiatement, le poste 100 sonne :
Puis, au bout de quelques secondes, le poste arrête de sonner, puis c’est au tour du poste 101 :
Et enfin, le poste 102 sonne :
La configuration Ring All est encore plus simple.
Le scénario sera le suivant :
Dans le contexte [global] retirer l’ancienne configuration, et placer celle-ci :
[global] exten => 1000,1,Dial(SIP/100&SIP/101&SIP/102,30) exten => 1000,2,Voicemail(100@dept_1_vm)
En appelant le numéro 1000, vous pourrez voir tous vos postes sonner en même temps.
Après 30s, vous tomberez sur la messagerie du poste 100.