You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today.
  • Déployer et gérer les services ROM

    Ce projet a consisté à déployer un serveur Asterisk sur Alpine Linux, puis à configurer des téléphones IP (FANVIL, CISCO) pour des appels voix, avec enregistrement manuel et via TFTP. Une interface web a été développée pour la gestion, et un portail de communication a été créé avec sip.js pour la voix, la vidéo et la messagerie instantanée via WebRTC, avec chiffrement TLS pour sécuriser les échanges.

    Télécharger le rapport technique ici, et mon auto-évaluation ici.

Outils & ressources utilisées

Étapes pour la réalisation du projet

Ce projet a consisté à mettre en œuvre une infrastructure de téléphonie IP reposant sur un serveur Asterisk installé sur une machine virtuelle Alpine Linux. Dans un premier temps, une machine virtuelle a été créée et intégrée au VLAN 800 afin de permettre une communication réseau adaptée au déploiement VoIP. Le serveur Asterisk a été installé manuellement depuis les sources ou via les paquets disponibles pour Alpine, puis testé à l’aide de commandes telles que asterisk -rvvv, core show version ou pjsip show endpoints pour confirmer son bon fonctionnement.

Dans une deuxième phase, deux téléphones IP, un modèle FANVIL et un modèle CISCO, ont été configurés pour se connecter au serveur Asterisk. Cela a nécessité la création de comptes SIP distincts dans les fichiers de configuration de PJSIP. Le téléphone FANVIL a été enregistré directement via ses paramètres d’interface, tandis que l’enregistrement du CISCO a exigé la mise en place d’un serveur TFTP pour lui fournir un fichier de configuration XML adéquat. Les deux méthodes d’enregistrement ont été mises en œuvre et documentées. Un plan de numérotation simple a été établi (par exemple 1001 et 1002), et des boîtes vocales ont été activées pour chaque poste. Une communication vocale a ensuite été établie entre les deux terminaux, et l’outil Wireshark a permis de capturer les échanges RTP pour prouver la bonne transmission des paquets audio.

La troisième étape a porté sur l’accès à l’administration d’Asterisk via HTTP, sans utiliser de solutions toutes faites comme FreePBX ou AsteriskNOW. En suivant les instructions disponibles sur le site officiel d’Asterisk, un serveur HTTP léger intégré a été mis en place pour accéder à l’interface de gestion du système. Une interface web simple a également été développée afin de consulter certains paramètres et informations du serveur, avec un temps de développement limité à deux séances, comme imposé.

Ensuite, une seconde machine virtuelle Alpine a été déployée pour héberger un serveur web (Apache ou NGINX). Le serveur a été installé et configuré, puis testé via une page d’accueil HTML affichant un message personnalisé pour confirmer son accessibilité.

Dans la continuité, une page web interactive a été développée sur ce serveur en utilisant la bibliothèque sip.js, afin de permettre un échange vocal via navigateur entre deux clients. Une étude préalable du protocole WebRTC, à partir du site officiel webrtc.org, a permis de comprendre son fonctionnement : capture média, signalisation, négociation et transport. À partir des exemples proposés sur sipjs.com, une communication voix a été établie entre deux navigateurs web connectés à l’infrastructure SIP. L’analyse des paquets réseau via Wireshark a mis en évidence l’utilisation des protocoles SIP, SDP, RTP et WebRTC.

Par la suite, l’interface web a été enrichie pour intégrer la vidéoconférence en exploitant les capacités vidéo de WebRTC. Une messagerie instantanée a également été ajoutée en exploitant les canaux de données WebRTC, permettant un échange en temps réel entre les utilisateurs. Ces fonctionnalités ont été réunies dans un portail web complet de communication multimédia (voix, vidéo et messagerie).

Enfin, une phase d’audit de sécurité a été menée sur les échanges entre le portail web et le serveur Asterisk. Des méthodes d’interception comme les attaques de type Man-In-The-Middle (MITM) ont été expérimentées pour évaluer la vulnérabilité des flux non chiffrés. Après cette analyse, des solutions de sécurisation ont été mises en œuvre, notamment la configuration du protocole TLS pour le chiffrement des sessions SIP et WebRTC. Une nouvelle capture réseau a permis de vérifier que les échanges étaient désormais chiffrés, garantissant la confidentialité des communications.

Tous les détails techniques se trouvent dans le rapport technique.

Difficultés rencontrés

La difficulté de ce projet a été surtout la partie WebRTC, qui été totalement inconnu, et très complexe à mettre en place.