Mis à jour le 07/07/2023
5.3.7 – Travaux Pratiques – Présentation de Wireshark
Remarque à l’intention de l’instructeur : la couleur de police rouge ou les surlignages gris indiquent que le texte n’apparaît que dans la copie de l’instructeur.
Topologie de Mininet
Objectifs
Partie 1 : Installer et vérifier la topologie Mininet
Partie 2 : Capturer et analyser les données ICMP avec Wireshark
Contexte/scénario
La machine virtuelle CyberOps inclut un script Python qui, lorsque vous l’exécutez, installe et configure les périphériques illustrés dans la figure ci-dessus. Vous aurez ainsi accès à quatre hôtes, un commutateur et un routeur sur votre machine virtuelle. Vous pourrez simuler différents services et protocoles réseau sans avoir à configurer un réseau de périphériques physique. Par exemple, au cours de ces travaux pratiques, vous utiliserez la commande ping entre deux hôtes de la topologie Mininet et capturerez ces requêtes ping à l’aide de Wireshark.
Wireshark est un analyseur de protocoles (analyseur de paquets) utilisé pour dépanner les réseaux, effectuer des analyses, développer des logiciels et des protocoles et s’informer. L’analyseur « capture » chaque unité de données de protocole (PDU) des flux de données circulant sur le réseau. Il permet de décoder et d’analyser leur contenu conformément aux spécifications RFC ou autres appropriées.
Wireshark est un outil utile pour tous ceux qui souhaitent dépanner des réseaux ou analyser leurs données. Vous utiliserez Wireshark pour capturer des paquets de données ICMP.
Ressources requises
- Poste de travail CyberOps VM
Note à l’instructeur : l’utilisation d’un renifleur de paquets, tel que Wireshark, peut être considérée comme une violation de la politique de sécurité de l’école. Il est recommandé d’obtenir l’autorisation avant d’exécuter Wireshark pour ce laboratoire. Si l’utilisation d’un renifleur de paquets, tel que Wireshark, est un problème, l’instructeur peut souhaiter assigner le laboratoire comme devoir ou effectuer une démonstration pas à pas.
Instructions
Partie 1 : Installer et vérifier la topologie Mininet
Dans cette partie, vous utiliserez un script Python pour configurer la topologie Mininet sur la machine virtuelle CyberOps. Vous enregistrerez ensuite les adresses IP et MAC pour H1 et H2.
Étape 1: Vérifiez les adresses d’interface de votre ordinateur.
Démarrez et connectez-vous au poste de travail CyberOps que vous avez installé au cours d’un TP précédent en utilisant les informations d’identification suivantes :
Nom d’utilisateur : analyst Mot de passe : cyberops
Étape 2: Exécutez le script Python pour installer la topologie Mininet.
Ouvrez un émulateur de terminal pour lancer Mininet et saisissez la commande suivante à l’invite. Lorsque le système vous y invite, saisissez le mot de passe cyberops.
[analyst@secOps ~]$ sudo ~/lab.support.files/scripts/cyberops_topo.py [sudo] password for analyst:
Étape 3: Enregistrez les adresses IP et MAC pour H1 et H2.
a. À l’invite mininet, démarrez les fenêtres du terminal sur les hôtes H1 et H2. Cela ouvrira des fenêtres distinctes pour chacun des hôtes. Chaque hôte aura sa propre configuration de réseau, notamment des adresses IP et MAC uniques.
*** À partir de l'interface de ligne de commande : mininet> xterm H1 mininet> xterm H2
b. À l’invite Node: H1, saisissez ip address pour vérifier l’adresse IPv4 et enregistrez l’adresse MAC.
Répétez l’opération pour Node: H2. Une adresse IPv4 et une adresse MAC sont mises en surbrillance cidessous pour référence.
[root@secOps analyst]# ip address <output omitted> 2: H1-eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ba:d4:1d:7b:f3:61 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.0.0.11/24 brd 10.0.0.255 scope global H1-eth0 valid_lft forever preferred_lft forever inet6 fe80::b8d4:1dff:fe7b:f361/64 scope link valid_lft forever preferred_lft forever
Host-interface | Adresse IP | Adresse MAC |
---|---|---|
H1-eth0 | 10.0.0.11 | Les réponses peuvent varier. ba:d4:1d:7b:f3:61 comme exemple |
H2-eth0 | 10.0.0.12 | Les réponses peuvent varier. 4e:b8:9c:5a:aa:50 comme exemple. |
Partie 2 : Capturer et analyser les données ICMP avec Wireshark
Dans cette partie, vous allez envoyer des requêtes ping entre deux hôtes du réseau Mininet et capturer les requêtes et les réponses ICMP dans Wireshark. Vous examinerez également les PDU capturées pour obtenir des informations spécifiques. Cette analyse devrait vous aider à mieux comprendre la façon dont les en-têtes de paquet sont utilisés pour transporter les données vers leur destination.
Étape 1: Examiner les données capturées sur le même réseau local.
Au cours de cette étape, vous allez examiner les données qui ont été générées par les requêtes ping de l’ordinateur du membre de votre équipe. Les données Wireshark sont divisées en trois parties :
- La première partie présente la liste des trames PDU capturées, accompagnées d’un résumé des informations relatives au paquet IP listées.
- La partie centrale propose une liste des informations PDU pour la trame sélectionnée dans la partie supérieure de l’écran et divise une trame PDU capturée en couches de protocole.
- La partie inférieure présente les données brutes de chaque couche. Les données brutes sont affichées sous forme hexadécimale et décimale.
a. Sur Node: H1, saisissez wireshark & pour lancer Wireshark (le message d’avertissement n’est pas important pour ce TP.). Cliquez sur OK pour continuer.
[root@secOps]# wireshark & [1] 1552 [root@secOps ~]# ** (wireshark:1552): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-f0dFz9baYA: Connection refused Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
b. Dans la fenêtre Wireshark, sous l’en-tête Capture, sélectionnez l’interface H1-eth0. Cliquez sur Start pour capturer le trafic de données.
c. Sur Node: H1, appuyez sur la touche Entrée, le cas échéant, pour afficher une invite de commande. Saisissez ensuite ping -c 5 10.0.0.12 pour envoyer cinq requêtes ping à H2. L’option de commande -c spécifie le nombre de requêtes ping. Le chiffre 5 indique que cinq requêtes ping doivent être envoyées. Ces requêtes ping vont toutes aboutir.
[root@secOps analyst]# ping -c 5 10.0.0.12
d. Accédez à la fenêtre Wireshark et cliquez sur Stop pour interrompre la capture des paquets.
e. Un filtre peut être appliqué pour afficher uniquement le trafic d’intérêt.
Saisissez icmp dans le champ Filter, puis cliquez sur Apply.
f. Le cas échéant, cliquez sur les premières trames PDU de requête ICMP dans la partie supérieure de Wireshark. Notez que la colonne Source a l’adresse IP de H1 et que la colonne Destination a l’adresse IP de H2.
g. Tandis que cette trame PDU est toujours sélectionnée dans la partie supérieure, accédez à la partie centrale. Cliquez sur la flèche à gauche de la ligne Ethernet II pour afficher les adresses MAC de la destination et de la source.
L’adresse MAC de la source correspond-elle à l’interface de H1 ?
Oui
L’adresse MAC de la destination dans Wireshark correspond-elle à celle de H2 ?
Oui
Remarque : dans l’exemple précédent d’une requête ICMP capturée, les données ICMP sont encapsulées dans une unité de données de protocole (PDU) de paquet IPv4 (en-tête IPv4) qui est ensuite encapsulée dans une PDU de trame Ethernet II (en-tête Ethernet II) en vue de sa transmission sur le réseau local (LAN).
Étape 2: Examiner les données capturées sur le réseau local distant.
Vous enverrez des requêtes ping aux hôtes distants (les hôtes ne figurant pas sur le réseau local (LAN)) et examinerez les données générées à partir de ces requêtes ping. Ensuite, vous déterminerez en quoi ces données diffèrent des données examinées dans la partie 1.
a. À l’invite mininet, démarrez les fenêtres du terminal sur les hôtes H4 et R1.
mininet> xterm H4 mininet> xterm R1
b. À l’invite Node: H4, saisissez ip address pour vérifier l’adresse IPv4 et enregistrez l’adresse MAC.
Répétez l’opération pour Node: R1.
[root@secOps analyst]# ip address
Host-interface | Adresse IP | Adresse MAC |
---|---|---|
H4-eth0 | 172.16.0.40 | Les réponses peuvent varier. |
R1-eth1 | 10.0.0.1 | Les réponses peuvent varier. |
R1-eth2 | 172.16.0.1 | Les réponses peuvent varier. |
c. Démarrez une nouvelle capture Wireshark sur H1 en sélectionnant Capture > Start. Vous pouvez également cliquer sur le bouton Start ou saisir Ctrl-E Cliquez sur Continue without Saving pour démarrer une nouvelle capture.
d. H4 est un serveur distant simulé. Envoyez une requête ping H4 depuis H1. La requête ping devrait aboutir.
[root@secOps analyst]# ping -c 5 172.16.0.40
e. Examinez les données capturées dans Wireshark. Examinez les adresses IP et MAC auxquelles vous avez envoyé des requêtes ping. Notez que l’adresse MAC est destinée à l’interface R1-eth1. Répertoriez les adresses IP et MAC de destination.
Adresse IP : 172.16.0.40.
Adresse MAC : Celui-ci sera associé à l’interface R1-eth1, qui est la passerelle par défaut pour les hôtes H1, H2 et H3 dans ce LAN.
f. Dans la fenêtre principale de la machine virtuelle CyberOps, saisissez quit pour arrêter Mininet.
mininet> quit *** Stopping 0 controllers *** Stopping 4 terms *** Stopping 5 links ..... *** Stopping 1 switches s1 *** Stopping 5 hosts H1 H2 H3 H4 R1 *** Done
g. Pour supprimer tous les processus qui ont été utilisés par Mininet, saisissez la commande sudo mn -c à l’invite.
analyst@secOps ~]$ sudo mn -c [sudo] password for analyst: *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes killall controller ofprotocol ofdatapath ping nox_core lt-nox_core ovs-openflowd ovscontroller udpbwtest mnexec ivs 2> /dev/null killall -9 controller ofprotocol ofdatapath ping nox_core lt-nox_core ovs-openflowd ovs-controller udpbwtest mnexec ivs 2> /dev/null pkill -9 -f "sudo mnexec" *** Removing junk from /tmp rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log *** Removing old X11 tunnels *** Removing excess kernel datapaths ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/' *** Removing OVS datapaths ovs-vsctl --timeout=1 list-br ovs-vsctl --timeout=1 list-br *** Removing all links of the pattern foo-ethX ip link show | egrep -o '([-_.[:alnum:]]+-eth[[:digit:]]+)' ip link show *** Killing stale mininet node processes pkill -9 -f mininet: *** Shutting down stale tunnels pkill -9 -f Tunnel=Ethernet pkill -9 -f .ssh/mn rm -f ~/.ssh/mn/* *** Cleanup complete.