Asterisk – Fail 2 Ban

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.

Lire la suite ›

Tagués avec :
Publié dans Sécurité

Asterisk – Liaison ITSP

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.

Lire la suite ›

Tagués avec : , ,
Publié dans Liaison ITSP

Interconnexion de serveurs Asterisk

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.

Lire la suite ›

Tagués avec : ,
Publié dans Interconnexion Asterisk

Asterisk – CDR – Call Detail Record

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.

Lire la suite ›

Tagués avec :
Publié dans Fonctionnalités

Asterisk – Queues

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.

Lire la suite ›

Tagués avec :
Publié dans Fonctionnalités

Asterisk – Call Parking

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.

Lire la suite ›

Tagués avec : , , ,
Publié dans Fonctionnalités

Asterisk – IVR – Standard Auto

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.

Lire la suite ›

Tagués avec : , ,
Publié dans Fonctionnalités

Asterisk – Conférences

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.

 

1) Fonctionnement

 

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.

 

2) MeetMe

 

Installation

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

 

Asterisk menuselect Meetme

 

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.

 

Configuration

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 :

  • Le numéro utilisé pour entrer dans la salle
  • Un numéro arbitraire

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 :

  • 910 : une salle ouverte
  • 920 : une salle avec un mot de passe
  • 930 : une salle avec un mot de passe et un mot de passe administrateur

 

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 :

  • s : permet d’accéder au menu de la conférence avec la touche « * » (mode mute, augmenter / réduire volume, etc…)
  • M : permet de jouer une musique d’attente quand l’utilisateur est seul dans la conférence
  • c : permet d’annoncer le nombre de participant actuel quand l’utilisateur rejoint la conférence
  • a : rend l’utilisateur administrateur de la conférence

 

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 « »).

 

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 :

  • Menu basique accessible
  • Musique d’attente lors-ce que l’utilisateur est tout seul
  • Annonce du nombre de participant

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 :

  • Numéro 190 : salle 190, sans MDP
  • Numéro 191 : salle 191, avec MDP

Dept_2 :

  • Numéro 290 : salle 290, sans MDP
  • Numéro 291 : salle 291, avec MDP

 

3) Confbridge

 

La configuration de ConfBridge repose sur deux fichiers :

  • extensions.conf
  • confbridge.conf

 

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é).

 

 

Tagués avec : ,
Publié dans Fonctionnalités

Asterisk – Music On Hold

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.

Lire la suite ›

Tagués avec : , , ,
Publié dans Fonctionnalités

Asterisk – Ring Group

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.

 

1) Qu’est-ce qu’un Ring Group

 

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 :

  • Lors d’un appel sur le numéro public, faire sonner le poste 100
  • Si pas de réponse après 10s, faire sonner le poste 101
  • Si pas de réponse après 10s, faire sonner le poste 102
  • Si toujours pas de réponse, renvoyer l’appelant sur la messagerie du poste 100

 

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 :

  • Lors d’un appel sur le numéro public, faire sonner les postes 100, 101, 102
  • Si pas de réponse, renvoyer l’appelant sur la messagerie du poste 100

 

Nous pouvons donc mettre en place deux types de configuration dans Ring Group :

  • Round Robin : faire sonner les postes les uns après les autres
  • Ring All : faire sonner tous les postes en même temps

 

2) Configuration Round Robin

 

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 :

users.conf

 

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 :

  • Lors d’un appel sur le numéro public, faire sonner le poste 100
  • Si pas de réponse après 10s, faire sonner le poste 101
  • Si pas de réponse après 10s, faire sonner le poste 102
  • Si toujours pas de réponse, renvoyer l’appelant sur la messagerie du poste 100

 

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 :

Appel Test Ring Group

Immédiatement, le poste 100 sonne :

Appel Test Ring Group

Puis, au bout de quelques secondes, le poste arrête de sonner, puis c’est au tour du poste 101 :

Appel Test Ring Group

Et enfin, le poste 102 sonne :Appel Test Ring Group

 

3) Configuration Ring All

 

La configuration Ring All est encore plus simple.

 

Le scénario sera le suivant :

  • Lors d’un appel sur le numéro 1000, les postes 100, 101 et 102 sonnent en même temps
  • En cas de non réponse, renvoyer l’appelant sur la boite vocale de l’utilisateur 100

 

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.

 

Tagués avec : , ,
Publié dans Fonctionnalités