Guide Final de rédaction de mémoire de fin d'étude
Rapport voip
1. 1
Rapport projet :
Simulation protocole SIP avec ASTERISK
Elaboré par : Chaouachi Khouloud
Khalfi Hichem
Encadré par :
2. 2
Table des matières
Partie théorique .................................................................................................................................. 4
I. Etude générale Voix sur IP ....................................................................................................... 5
1. Principe fonctionnement Voix sur IP : .............................................................................. 5
2. Architecture de la VoIP : .................................................................................................. 5
II. Les protocoles de la VoIP..................................................................................................... 6
1. LE PROTOCOLE SIP (SESSION INITIATION PROTOCOL) ..................................... 6
Partie pratique ................................................................................................................................... 11
I. ASTERISK............................................................................................................................. 12
1. Fonctionnalités :.............................................................................................................. 12
II. Installation et configuration du serveur Asterisk pour la VoIP:......................................... 13
1. Matériels requis :............................................................................................................. 13
2. Mise en place d’un PABX-IP avec Asterisk :................................................................. 13
3. Configuration d’Asterisk : .............................................................................................. 14
4. Clients :........................................................................................................................... 20
5. Test de bon fonctionnement............................................................................................ 22
6. Attaque Eaveasdropping................................................................................................. 22
III. CONCLUSION .................................................................................................................. 24
3. 3
Table des figures
Figure 1 Architecture VoIP: ................................................................................................................. 6
Figure 2: la pile protocolaire du protocole SIP................................................................................... 8
Figure 3 : principe fonctionnement Asterisk..................................................................................... 12
Figure 4 : mise à jour du système ..................................................................................................... 13
Figure 5 : installation Asterisk........................................................................................................... 13
Figure 6: sauvegarde fichiers Asterisk............................................................................................... 14
Figure 7 : configuration fichier SIP.conf............................................................................................ 16
Figure 8 : configuration users SIP.conf.............................................................................................. 17
Figure 9 : verification des users ........................................................................................................ 17
Figure 10 : configiration fichier extensions.conf............................................................................... 19
Figure 11 : configuration fichier VoiceMail.conf............................................................................... 20
Figure 12 : configuration SoftPhone client1 ..................................................................................... 21
Figure 13 : configuration SoftPhone client2 ..................................................................................... 21
Figure 14 : test du bon fonctionnement ........................................................................................... 22
Figure 15 : Attaque Eaveasdropping 1 .............................................................................................. 23
Figure 16 : Attaque Eaveasdropping 2 .............................................................................................. 23
Figure 17 : Attaque Eaveasdropping................................................................................................. 23
Table des tableaux
Tableau 1: la liste des requêtes SIP..................................................................................................... 9
Tableau 2 : Les requêtes SIP................................................................................................................ 9
Tableau 3 : une transaction SIP......................................................................................................... 10
5. 5
I. Etude générale Voix sur IP
La Voix sur IP, comme est bien clair du nom ; est le fait de transmettre de la Voix sur un réseau IPP
qui transporte les données sous forme de paquets. La voix est soumise à des traitements spécifiques
afin qu’elle puisse être envoyée sur un réseau IP, elle st digitalisée, compressée puis envoyée au
récepteur par paquets de données. Les données reçues par la destination sont décompressées et
converties en voix audibles.
1. Principe fonctionnement Voix sur IP :
La voix pour qu’elle soit transmise sur le réseau IP, elle aboutisse un certain nombre de traitements
physiques dans un ordre chronologique bien précis.
- La numérisation : cette étape consiste à capturer des points à intervalles de temps réguliers de la
voix acquise, cette durée est fixée selon la fréquence d’échantillonnage choisie.
Chacun de ses échantillons est ensuite codé par chiffre.
- La compression : le signal numérique ainsi formé, est compressé selon l’un des formats des
codecs et le principal but de la compression est de minimiser l’utilisation de la bande passante.
- L’encapsulation : pour se convertir rn des paquets, les données ainsi obtenues doivent être
enrichies par des entêtes avant d’être expédier sur le réseau IP.
Côté destination les paquets reçus sont décompressés ; en utilisant le même format du codec qu’à
l’émission ; puis converties en un signal analogique en utilisant un convertisseur N/A
(Numérique/Analogique).
2. Architecture de la VoIP :
La topologie d’un réseau Voix sur IP, comprend des terminaux, un serveur de communication et si
nous avons deux types de réseaux différents, l’utilisation d’une passerelle devient nécessaire.
Acquisition de la
voix
Numérisation Compression Encapsulation Emission/
Transport
6. 6
Figure 1 Architecture VoIP:
II. Les protocoles de la VoIP
Les protocoles de la VoIP sur IP sont divisés en deux parties, ils existent des protocoles pour la
signalisation et l’établissement de connexions entre les entités VoIP et des protocoles pour le
transport des flux multimédia. Nous allons étudier les principaux protocoles de signalisation VoIP,
H.323 développé par l’UIT-T, SIP (Session Initiation Protocole) qui est un standard de l’IETF et
SCCP (Skinny Client Control Protocol) qui est un protocole propriétaire CISCO. Après
l’établissement de la communication, le transport et le contrôle des flux média sont assurés par les
protocoles RTP (Real-time Transport Protocol) et RTCP (Real-time Transport Control Protocol).
Dans notre travail on s’intéresse uniquement au protocole SIP.
1. LE PROTOCOLE SIP (SESSION INITIATION PROTOCOL)
i. Description générale du protocole SIP
Description générale du protocole SIP est un protocole de signalisation VoIP, de la couche
application. Son rôle est l’établissement, la modification et la libération des sessions multimédias
sur le réseau IP. Il est basé à la fois sur le protocole de transfert d’hypertexte HTTP (Hyper Text
Transport Protocol) ; car il utilise des requêtes et des réponses pour les transactions entre ces entités
; et sur le protocole de messagerie SMTP (Simple Mail Transport Protocol) car les messages
transmis entre les équipements SIP sont sous forme électronique (E-mails). SIP a été développé par
l’IETF (), organisation de normalisation de l’IP, sa version la plus récente est décrite dans la RFC
3261. SIP utilise généralement les ports 5060 et/ou 5061. Il encapsule le protocole SDP1 (Session
Description Protocol) qui permet de décrire une session SIP. Chaque utilisateur SIP est attribué à
une identité unique URI (Uniform Ressources Indicator), comparable à une adresse e-mail, qui est
sous la forme suivante : ‘sip:Nom-Utilisateur@Addresse-Serveur-SIP’. 1 SDP (Session Description
Protocol) : est un protocole qui permet aux entités SIP de négocier certains paramètres sur la
connexion à établir tel que le choix de codec, etc.
7. 7
ii. Les fonctions SIP
SIP a des fonctions multiples :
Fixation d’un compte SIP : un compte SIP identifiable par un nom unique et associé à un serveur
SIP d’adresse fixe, sera attribué à un utilisateur SIP pour qu’il soit toujours joignable,
Changement des caractéristiques durant une session : un utilisateur SIP peut modifier les
caractéristiques d’une session active, par exemple il peut changer la configuration de la session de «
voice-only » en « voice-video »,
Gestion des participants : dans une session déjà active, de nouveaux participants peuvent joindre
cette session directement, en étant transférés ou en étant mis en attente,
Adressage : chaque utilisateur dispose d’un compte SIP unique.
iii. Les composants SIP
Dans un système SIP, on trouve deux types de composants, les Users Agents (UA) et les serveurs
SIP :
UA : c’est l’utilisateur final, il peut être soit un Softphone (logiciel s’exécutant sur un ordinateur
qui offre à ce dernier les fonctionnalités d’un téléphone IP) soit un Hardphone. L’UA est la
combinaison d’agent d’utilisateur client (UAC : User Agent Client) et d’agent d’utilisateur serveur
(UAS : User Agent Server) :
UAC : est une entité qui envoie des requêtes SIP,
UAS : entité qui génère des réponses aux requêtes SIP. Ces réponses peuvent être une
acceptation, un refus ou une redirection de la requête reçue.
Les Serveurs SIP : Il existe une multitude de serveurs SIP :
RG (le Registrar): il reçoit les requêtes REGISTER envoyées des UA pour faire leurs
inscriptions, après une éventuelle mobilité,
Proxy SIP : encore appelé serveur mandataire, le proxy est utilisé lorsque les deux UA ne
connaissent pas leurs emplacements. Il effectue des requêtes pour le compte des UAC, il les route
afin de les acheminer à une entité plus proche de destination. Et pour ce faire il interroge la base de
données (URI<->Adresse IP) stockée dans le Registrar,
RS (Redirect Server) : il aide à localiser les UA SIP en fournissant une adresse alternative
à laquelle l’utilisateur appelé peut-être joint,
8. 8
LS (Location Server) : est un serveur qui fournit la position actuelle d’un utilisateur SIP.
Les informations mémorisées dans le LS sont utilisées par le RS ou le Proxy SIP. Le LS peut être
basé sur un serveur LDAP ou une base de données.
iv. La pile de protocoles SIP
SIP définit un cadre de technologies complet pour les communications multimédia, fondé sur les
protocoles suivants :
SDP (Session Description Protocol),
RTSP (Real Time Streaming Protocol),
RSVP (ReSerVation Protocol) pour la réservation de la bande passante,
RTP (Real-Time Transport Protocol
Figure 2: la pile protocolaire du protocole SIP
v. Les messages SIP
Les messages SIP sont codés en utilisant la syntaxe du message HTTP/1.1 et comme nous avons
déjà dit que SIP est basé sur un modèle d’architecture Client/Serveur, donc ces messages sont
divisés en deux parties ; les requêtes et les réponses. Les champs toujours présents dans l’entête SIP
sont:
Call-ID: ce champ contient un identificateur unique pour un appel,
From: est l’identificateur de l’appelant,
To : est l’identificateur de l’appelé,
Via : ce champ est utilisé pour enregistrer la route d’une requête, de manière à permettre
aux serveurs SIP intermédiaires de faire suivre aux réponses un chemin exactement inverse,
9. 9
Encryption: ce champ spécifie que le corps du message et éventuellement certains en-
têtes ont été chiffrés,
Content-Type: ce champ décrit le type de média contenu dans le corps du message,
Content-Length : il s’agit du nombre d’octets du corps du message.
Le tableau suivant présente la liste des requêtes SIP :
Tableau 1: la liste des requêtes SIP
Suite au traitement de la requête reçue de la part d’un UAC, l’UAS envoie une réponse sous forme
d’un code d’état, indiquant à l’UAC la façon avec laquelle sa requête a été traitée. Ces codes sont
découpés en 6 catégories qui sont décrites dans le tableau suivant,
Tableau 2 : Les requêtes SIP
10. 10
vi. Transaction SIP
Le diagramme de séquence de le tableau 3, présente un exemple du déroulement d’une transaction
SIP entre deux User-Agents et un serveur SIP
Tableau 3 : une transaction SIP
12. 12
I. ASTERISK
Asterisk est un PABX logiciel libre, multi plateforme, publié sous licence GPL. Asterisk permet
entre autres, la messagerie vocale, la conférence, les serveurs vocaux, la distribution des appels.
Asterisk implémente les protocoles H.323 et SIP, ainsi qu'un protocole spécifique nommé IAX. Il
permet la communication entre client et serveur Asterisk ainsi qu'entre deux serveurs.
Figure 3 : principe fonctionnement Asterisk
1. Fonctionnalités :
Asterisk offre les fonctionnalités suivantes :
• Messagerie vocale ;
• Conférence téléphonique ;
• Répondeur vocal interactif ;
• Mise en attente d’appels ;
• Services d'identification de l'appelant ;
• VoIP ;
13. 13
II. Installation et configuration du serveur Asterisk
pour la VoIP:
1. Matériels requis :
• Machine serveur : Sur laquelle installé un système d’exploitation Linux Ubuntu 14.04 LTS
et le serveur de VoIP, « Asterisk ».
• Deux ordinateur avec un logiciel VoIP : deux machines sur laquelle on installe un système
d’exploitation Windows et un client X-Lite.
Mise en place d’un PABX-IP avec Asterisk :
2. Mise en place d’un PABX-IP avec Asterisk :
Le serveur qui héberge la plateforme Asterisk est un serveur GNU/Linux fonctionnant avec un
système d’exploitation Ubuntu 16.
Commençant par mettre à jour notre distribution. Pour cela on utilisera les commandes suivantes :
Figure 4 : mise à jour du système
Pour installer Asterisk On tape la commande :
Figure 5 : installation Asterisk
14. 14
Le serveur Asterisk permet d’interagir directement avec le système sans avoir à modifier les
fichiers de configuration avec la CLI « Interface de ligne de commande ».
Nous utiliserons cette interface uniquement pour afficher et vérifier la configuration et l’état des
téléphones.
Cette CLI est exécutée en tapant la commande suivante : Pour se connecter à la CLI d'Asterisk : #
asterisk –r
Une fois connecté à Asterisk via la console, plusieurs commandes utiles, internes à la console sont
disponibles :
« help » : liste des commandes et aide associée ;
« reload » : recharge tous les fichiers de configurations ;
« restart now » : relance complètement et immédiatement Asterisk ;
« sip reload » : recharge le fichier sip.conf ;
« sip show peers » : voir le status des peers SIP ;
« sip set debug » : permet de voir les messages SIP qui passent par le serveur ;
« dialplan reload » : recharge le fichier extensions.conf ;
« sip show users » : voir le statut des utilisateurs SIP.
3. Configuration d’Asterisk :
Pour configurer notre serveur Asterisk nous allons modifier les fichiers suivants :
Le fichier sip.conf : pour la configuration générale et les utilisateurs d’Asterisk.
Le fichier extensions.conf : pour la configuration du Dialplan.
Le fichier voicemail.conf : pour la configuration de la boite vocale.
C’est fichiers se trouvent dans le dossier /etc/asterisk, tout en gardant la configuration par défaut du
système en cas du problème.
Figure 6: sauvegarde fichiers Asterisk
15. 15
i. Configuration générale d’Asterisk (Sip.conf) :
On va éditer le fichier /etc/asterisk/ sip.conf
Dans ce fichier de configuration nous avons créé un template appelé (general) et ce template est
appelé pour la création des deux utilisateurs :
allowguest : Autoriser ou rejeter les appels invités. La valeur par défaut est yes.
allowoverlap : Activer/désactiver la prise en charge de la composition de chevauchement.
Oui par défaut
bindaddr = IP_Address : Adresse IP à lier (écoutez). Valeur par défaut 0.0.0.0 (toutes les
interfaces réseau).
bindport = Number : Port UDP auquel se lier (écouter). Port utilisé dans Asterisk v1.0.x.
Valeur par défaut 5060.
srvlookup = Activez les recherches DNS SRV sur les appels. Par défaut oui. (La valeur par
défaut est no antérieure à la version 1.4.14)
disallow = all : Interdire tous les codecs (configuration globale)
autodomain = Activer/désactiver la capacité d’Asterisk à ajouter des noms d’hôte locaux
et une adresse IP locale à la liste des domaines. externip ou externhost sont également pris
dans la liste des domaines. Par défaut no.
allow=ulaw : est le codec autorisé. Cette commande n'a d'effet que si disallow=all apparaît
avant.
canreinvite = update|yes|no|nonat (paramètre global): Pour une raison quelconque, la valeur
par défaut est yes
nat = Cette variable modifie le comportement d’Asterisk pour les clients derrière un pare-
feu.
localnet = NetAddress/Netmask : réseau local et masque.
16. 16
Voici un exemple de fichier sip.conf
La configuration de nouveaux clients SIP se fait dans le fichier
/etc/asterisk/ sip.conf dans lequel on ajoute une entrée pour chaque client.
Plusieurs options permettent de définir et de paramétrer un client :
type : Type de client (peer, user ou friend)
username : Identifiant de l'utilisateur
secret : Mot de passe de l'utilisateur
host : Méthode pour trouver le client (dynamique, nom d'hôte ou adresse IP)
context = appels : Contexte (on verra ça dans le fichier extensions.conf)
Pour chacun des paramètres précédents, plusieurs valeurs sont disponibles selon la configuration
désirée.
Type :
Peer : Client SIP auquel Asterisk pourra envoyer des appels
user : Client SIP qui pourra passer des appels via Asterisk
Friend : Client qui sera à la fois en mode 'peer' et 'user'
dynamic : Le client s'enregistre auprès du serveur
nom d'hôte : Nom d'hôte du client
adresse IP : Adresse IP du client
Figure 7 : configuration fichier SIP.conf
17. 17
Voici un exemple de configuration avec deux utilisateurs comme numéros respectifs 100 et 2000 :
Figure 8 : configuration users SIP.conf
EXPLICATION
[1000] : Numéro SIP.
type=friend : type d’objet SIP, friend = utilisateur.
host=dynamic : Vous pouvez vous connecter à ce compte SIP à partir de n’importe quelle
adresse IP
secret = secret : Mot de passe du compte SIP
context = internal : Contexte (on verra ça dans le fichier extensions.conf)
Une fois le fichier sip.conf enregistré nous allons dans la console Asterisk, tapez reload enfin puis
on tape la commande Sip show peers.
Les trois comptes d’utilisateurs que nous venons de créer, devrait y apparaitre
Figure 9 : verification des users
18. 18
ii. Configuration du Dialplan (extensions.conf) :
Nos utilisateurs sont créés, mais ils n’ont pas encore la possibilité de s’appeler.
Nous allons maintenant éditer le fichier extensions.conf qui permet de configurer le Dialplan.
On va éditer le fichier /etc/asterisk/ extensions.conf
Sur ce fichier on va configurer le Dialplan :
Le Dialplan ou plan de numérotation est le fichier de configuration d’Asterisk qui permet de
configurer en gros: « Que se passe-t’il si j’appelle tel numéro? »
Nous allons donc configurer Asterisk de tel sorte que l’utilisateur 1000 puisse appeler le numéro
2000.
Explication:
[appels] : est le contexte c’est une sorte de conteneur dans lequel les utilisateurs faisant partis de ce
contexte pourront communiquer entre eux. Lors de la création de nos trois utilisateurs nous avons
spécifié le contexte appels.
exten => : déclare l’extension (on peut aussi simplement dire numéros) ;
_1XXX : Prend les extensions (ou numéros) de 1000 à 1999 ;
Ordre de l’extension ;
Answer() : une application qui répond à un canal qui sonne. On l’utilise très souvent comme
première application pour extension ;
Dial () : application fondamentale qui fait sonner l’extension passée en paramètre SIP: Protocole
qui va être utilisé ;
${EXTEN} : variable de l’extension composé, si on appelle le 1000 la variable ${EXTEN} prendra
comme valeur 1000; et on considere 60 comme temps d’attente avant de passer à l’étape suivante.
Donc la ligne exten => _1XXX,2,Dial(SIP/${EXTEN},60) se traduit par :
Quand un utilisateur appelle un autre utilisateur par exemple 1000 appelle le numéro 2000 et si au
bout de 60 secondes il n’y a pas de réponse on passe à la ligne du dessous.
19. 19
Dans le cas du numéro 1000 la ligne devient comme ceci :
exten => 1000,2,Dial(SIP/1000,60) , mais l’avantage de la ligne précédente est qu’elle permet
d’appeler les numéros de 1000 à 1999.
Playback() : une application qui joue un fichier sonore à destination de l’interlocuteur ; elle est
similaire à l’application background ;
VoiceMail() : La quatrieme ligne: exten => _1XXX,4,Voicemail(${EXTEN}@ main) se traduit
par : quand un utilisateur appelle un autre et que ce dernier n’est pas joignable cette ligne te permet
de laisser message ;
exten =>900,4,VoiceMailMain(${CALLERID(num)}@ main) est configurée pour la boite vocale
quand un utilisateur appelle le numéro 1000 il pourra écouter sa messagerie vocale.
Hangup () : permet de raccrocher le canal en cours. Cela permet de libérer un canal proprement.
Maintenant, vous pouvez enregistrer votre fichier extensions.conf et faire un reload dans la console
d’Asterisk.
Figure 10 : configiration fichier extensions.conf
iii. Configuration de la boite vocale (voicemail.conf)
On va éditer le fichier /etc/asterisk/voicemail.conf
La messagerie vocale est utilisée pour laisser un message si personne ne répond à votre appel.
Vous pouvez déclarer la boîte aux lettres dans le contexte de boîte aux lettres par défaut – [valeur
par défaut] ou en créer d’autres. Notez que les contextes de boîte aux lettres et ceux
20. 20
d’extensions.conf n’ont aucune relation entre les deux. Ils ne sont qu’une sorte de séparateurs dans
deux fichiers différents, la commande ressemble à ceci :
mailbox_number => mot de passe
Figure 11 : configuration fichier VoiceMail.conf
4. Clients :
Le client SIP (Softphone) est un programme logiciel qui offre des fonctionnalités de téléphonie. Un
softphone utilisera, comme un téléphone matériel, les protocoles aux standards ouverts SIP et RTP
pour l’initialisation des appels et la transmission de la voix.
Tout appareil tel que :
• Ordinateurs (Windows, Mac, Linux)
• Tablettes (Android, iOS)
Smartphones (Android, iOS)
Dans notre simulation on va utiliser 2 softphones : zoiper5 et 3cx phone
22. 22
5. Test de bon fonctionnement
6. Attaque Eaveasdropping
i. Procédure :
Cette attaque est utilisée pour écouter et enregistrer les conversations entre les interlocuteurs mais
aussi de récupérer un ensemble d’informations confidentielles
ii. Prérequis :
Il faut réaliser préalablement une attaque de type MITM (Man In The Middle) pour rediriger le
trafic vers la machine de pirate.
Wireshark : C’est l’un des logiciels les plus utilisés pour ce qui est de la surveillance, intrusion et
capture dans les réseaux. Non seulement il peut capturer et analyser des trames, mais aussi, dans le
cas de conversations téléphoniques, convertir ces trames en fichiers audio.
iii. Lancer Wireshark :
Il suffit de taper dans le terminal de la machine pirate Wireshark ou installer le logiciel Wireshark
pour Windows.
Figure 14 : test du bon fonctionnement
24. 24
III. CONCLUSION
La VoIP est la solution la plus rentable pour effectuer des conversations. Actuellement il est évident
que la VoIP va continuer à évoluer.
La téléphonie IP est une bonne solution en matière d’intégration, fiabilité et de coût. On a vu que la
voix sur IP étant une nouvelle technologie de communication, elle n’a pas encore de standard
unique. Chaque standard possède ses propres caractéristiques pour garantir une bonne qualité de
service.
En effet, le respect des contraintes temporelles est le facteur le plus important lors du transport de la
voix.
Asterisk est ouvert à tous, gratuit et simple d’utilisation. Asterisk a de quoi s’imposer. Ces vrais
concurrents sont plutôt les PBX Hardware. Qui sont chers mais performant et fiable. Les solutions
libres peuvent fournir les outils les plus performants et les mieux documentés sans procurer un
même service relationnel.
Ce projet nous a permis de mettre en pratique nos connaissances théoriques acquises.
Nous nous sommes de ce fait, initier au travail collectif et avons acquis de multiples connaissances
tant dans la conception d'un réseau VoIP, que dans les multiples fonctionnalités avancées d'un
PABX logiciel. Nous avons de ce fait constaté que le logiciel libre Asterisk pouvait faire de
l’ombre aux gros centraux téléphoniques.
Ce projet a été une expérience fructueuse qui nous a permis de mieux s’approcher du milieu
professionnel.
Cette expérience nous a permis de savoir comment gérer et optimiser le temps dans le but d’en
profiter au maximum.