Académique Documents
Professionnel Documents
Culture Documents
PRE-REQUIS
Pour réaliser ce TP vous devez avoir en votre possession :
- L'adresse IP de votre serveur VPS hébergé chez PulseHeberg
- Votre identifiant MMI (mmiXXxxx)
- Le mot de votre identifiant MMI créé lors de l'initialisation de votre VPS.
En cas de problème :
- Un accès à votre compte PulseHeberg pour lancer la console VNC
- Le mot de passe du compte root de votre VPS (premier mail de PulseHeberg)
Nous n'allons pas l'installer directement sur notre VPS, mais dans un container afin de pouvoir y accéder
directement grâce à une interface web qui nous sera fournie par Guacamole (un outil qui permet de
déporter en environnement graphique sur une interface web)
Nous allons aussi créer tout un environnement dans Docker pour illustrer le réseau en mode host que va
utiliser Wireshark pour accéder à nos interfaces réseaux.
Partie 1 : INTRANET
Architecture Docker :
Votre premier travail va être de créer un fichier docker-compose.yml qui permettra de construire
cet environnement. Je vous donne le nom des images (mais libre à vous d'en utiliser d'autres si
voulez - sauf pour wireshark ) que j'ai utilisées et récupérées sur le DockerHub .
N'hésitez pas à consulter leurs documentations pour avoir plus d'information .
NETWORKS:
Pour finir, notre intranet possède son propre réseau (172.17.0.0 dans le schéma) qui relie tous nos
containers entre eux (sauf wireshark) , ainsi que votre VPS qui se verra donc attribuée une nouvelle
interface réseau (de type br-ID) et une nouvelle adresse IP .
Pour déclarer vos containers (web, ftp et dns) dans cet intranet vous devez ajouter dans votre fichier :
Dans chaque déclaration de container les lignes suivantes :
networks:
- intranet
Attention, pas de tabulation pour l'indentation (4 espaces pour la première ligne, 8 pour la seconde)
IMPORTANT : Le réseau IP de votre intranet n'aura pas les mêmes adresses que dans l'exemple.
Elles seront sur un réseau privé de classe C, comme par exemple 192.168.176.0 .
Cette adresse est créée aléatoirement et peut donc être différente d'un VPS à l'autre,
et même à chaque fois que vous démarrez la stack Docker.
ENVIRONMENT:
Partie 2 : TESTS
PROCEDURES DE TEST :
Pour vérifier que le service FTP fonctionne, uploadez un fichier de votre choix sur le serveur.
Vous devriez retrouver le fichier dans /mmitrans/ftp
ls /mmitrans/ftp
Lorsque tous vos tests fonctionnent, copiez votre fichier docker-compose.yml dans le dossier /mmitrans
(Vérifiez que c'est bien celui que vous venez de créer et pas celui d'un TP précédent)
Le fichier docker-compose.yml est noté.
Lorsque l'invite de commandes vous le propose, saisissez un mot de passe de votre choix.
Pas trop simple quand même car c'est celui de l'utilisateur (abc) qui lancera wireshark et donc la capture
de trame. Et vous le verrez dans ce TP, si n'importe qui accède à votre container wireshark, il pourrait
découvrir pas mal de chose sur votre VPS.
Avant de continuer découvrons quelles sont les adresses IP qui ont été attribuées à nos différentes
machines. Cela simplifiera la compréhension de la capture des trames.
"Containers": {
"0500a1fa88abd810701a7d0a20203e6e0f3ffe06b421ad578daaa7f8110f37e6": {
"Name": "dns",
"MacAddress": "02:42:c0:a8:b0:04",
"IPv4Address": "192.168.176.4/20",
},
"2556b350030c914d682a9fbebe76c035cd12afeafb566cc2d741434bd5db761c": {
"Name": "web",
"MacAddress": "02:42:c0:a8:b0:03",
"IPv4Address": "192.168.176.3/20",
},
"d005b8d2ea1b7c94b0f357af64bb85314e2174513f02071191f8ef3cbe0875dd": {
"Name": "ftp",
"MacAddress": "02:42:c0:a8:b0:02",
"IPv4Address": "192.168.176.2/20",
Vous voyez ici les 3 containers sur le réseau de l'intranet avec leurs IP. Ici le réseau est 192.168.176.0,
l'adresse IP du VPS sur l'intranet est donc : 192.168.176.1 . Vous pouvez vérifier avec un ifconfig.
IMPORTANT : Comme vous pouvez le constater votre container wireshark, n'apparait pas dans cette liste.
Cela est tout à fait normal puisque nous ne l'avons pas connecté à notre réseau intranet.
Si vous avez respecté les consignes de configuration , vous avez d'ailleurs déclaré qu'il doit fonctionner en
mode réseau : host (network_mode: host) dans votre fichier docker-compose.yml. Ceci fait de votre
container un service à part entière de votre VPS, il voit et peut donc utiliser les mêmes IP que votre VPS.
A l'inverse, les autres containers fonctionnement en mode bridge et ne voient que les IP situées sur le
réseau que nous avons déclaré (mmitrans_intranet dans l'exemple)
Saisissez simplement le mot de passe que vous avez choisi lors du changement de mot de passe
Ensuite, choisissez l'interface réseau qui correspond à notre stack Docker et cliquez sur CAPTURE
C'est celle qui commence par br (bridge) . Ne tenez pas compte du numéro, il est différent sur chaque
machine. C'est un ID aléatoire attribué au réseau Docker lors de sa création.
La capture est lancée, mais il est fort probable que rien ne soit affiché.
Normal, si nous ne créons pas de trafic sur nos serveurs, il n'y aura aucune trame à afficher.
Ouvrez la page du site web : MMI.h205.online:8080 et faites un REFRESH (F5) de votre navigateur pour
que wireshark vous montre les trames capturées.
Zone 1 : Le trafic du réseau, donc toutes les trames capturées sur votre interface.
Zone 2 : Pour la trame sélectionnée dans la partie 1 (ici la trame 9),
nous retrouvons en partant du haut les informations des différentes couches
qui constituent la trame complète :
• Frame et Ethernet (La couche Matériel avec les adresses MAC),
• Internet Protocole Version 4 (Couche Internet) avec les adresses IP
• Transmission Control Protocol (Couche Transport) avec les ports TCP
• HyperText Transfer Protocol (Couche Applications) avec ici HTML
Si vous développez le contenu d'une couche en cliquant sur la flèche de gauche, vous obtenez le
détail des informations sur le protocole mis en œuvre. Exemple ici avec HTML
On voit ici l'entête http avec le message applicatif (GET / http) , le nom du navigateur utilisé (Mozilla 5.0),
le système de la machine émettant la requête (Windows NT 10 ) etc. …
La zone 3 contient l'affichage en Hexadécimal de la trame sélectionnée, ainsi qu'un aperçu des données si
elles sont émises en clair sur le réseau.
Il est évident qu'il devient rapidement difficile de retrouver une information si on laisse la capture se
dérouler ainsi. Une façon simple d'utiliser wireshark consiste en l'application de filtres qui vont pouvoir
limiter l'affichage à certaines trames en fonction de nos besoins.
L'utilisation des filtres est assez simple, il se saisissent dans la zone de texte juste sous la barre de menu.
On peut les sélectionner et les paramétrer en utilisant le bouton expression à droite ou simplement en les
entrant dans la zone de texte.
Exemple avec un filtre sur une adresse IP :
ip.addr == 90.109.128.2 n'affichera que les trames échangées avec la machine 90.109.128.2
Ici il s'agit de l'adresse publique de la box ou se situe mon poste de travail le jour de la capture.
Pour connaitre votre IP publique, allez sur le site : https://mon-ip.io/
Pour appliquer le filtre, saisissez le dans la zone de texte et cliquez sur la flèche à droite.
Ensuite, ouvrez un navigateur et retournez à l'adresse : MMI.h205.online:8080
On ne voit plus ici que les trames pour le trafic entre votre poste et la machine 192.168.128.2 qui héberge
le site MMI.h205.online:8080. Si vous développez la trame HTTP qui contient la réponse du serveur web
(ici trame 9) vous y verrez clairement le contenu de la page web envoyée par le serveur :
On voit donc ici que le contenu du message applicatif passe en clair sur le réseau.
Mais il n'y a pas que le contenu qui passe en clair sur le réseau.
Convaincu, que le SFTP serait mieux ? C'est pour cette raison que l'accès FTP classique a été désactivé de
votre VPS et que vous devez passer par le port 22 et SFTP.
Voilà pour cette présentation rapide de Wireshark, pour plus de détails (notamment sur les filtres) , je vous
invite à consulter la documentation : https://wiki.wireshark.org/DisplayFilters
Ouvrez une session SSH sur votre VPS et saisissez les commandes suivantes :
(Si vous le pouvez, vous pouvez observer le résultat en direct dans Wireshark)
curl localhost:8080
curl ftp://ftpuser@localhost (Ne tenez pas compte de l'erreur)
dig @localhost MMI.h205.online
curl localhost:5380
docker container exec -i dns ping -c 5 IP_FTP (remplacez IP_FTP par l'IP du container ftp)
Voilà nous avons une suite de trames assez représentatives d'un trafic réseau.
Cette capture est terminée, nous allons la sauvegarder pour pouvoir l'analyser tranquillement.
Les réponses dans le fichier sont à mettre comme d'habitude avec juste le numéro de la question (Q1,Q2
etc.) suivi de la réponse . S'il y a plusieurs réponses à la question, séparez-les par des ,
Pour répondre aux questions, observez votre capture de trame (Si vous l'avez fermée, vous pouvez ouvrir
le fichier sauvegardé) ou refaites le début de l'exercice (Partie3)
Q1: Quel est le nom de l'interface réseau ajoutée sur votre VPS pour l'intranet ?
Q2 : Quelle est l'adresse IP de votre VPS sur l'intranet ?
Q3 : Quelle est l'adresse IP du container web ?
Q4 : Quelle est la version de votre navigateur ? (user-agent dans les trames HTTP)
Q5 : Quelle est la version d'Apache installée sur le serveur web ?
Q6 : Quelle distribution Linux est installé sur le serveur web ?
Q7: Quel serveur DNS (sur internet) a répondu à la requête de notre relais ?