L'objectif de ce TP est d'utiliser la surveillance réseau et les outils évoqués dans la partie 4 du cours pour analyser un peu plus dans le détail le trafic généré par les fameuses commandes ping
.
Allez, on sort sa loupe de Sherlock et c'est parti !
Étape 1
Connecté sur votre serveur Linux (console physique ou terminal) vérifiez que vous pouvez lancer une commande ping
sur une autre machine joignable sur votre réseau local. (Dans l'exemple ici, je lance la commande ping
sur la machine qui héberge la VM Linux).
seb@debServer:~$ ping 172.20.10.2 PING 172.20.10.2 (172.20.10.2) 56(84) bytes of data. 64 bytes from 172.20.10.2: icmp_seq=1 ttl=64 time=0.401 ms 64 bytes from 172.20.10.2: icmp_seq=2 ttl=64 time=0.574 ms 64 bytes from 172.20.10.2: icmp_seq=3 ttl=64 time=0.479 ms 64 bytes from 172.20.10.2: icmp_seq=4 ttl=64 time=0.528 ms ^C --- 172.20.10.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3728ms rtt min/avg/max/mdev = 0.401/0.495/0.574/0.064 ms seb@debServer:~$
Vous allez constater que sous Linux, la commande ping
ne s'arrête pas toute seule… Pour la stopper, utilisez le signal SIGINT
vu pendant le cours et la combinaison de touche CTRL+c (heureusement pour nous que cette commande écoute ce signal !).
Étape 2
À l'aide d'une connexion secondaire (seconde console physique ou nouvelle session via un terminal), sous le compte root
, lancez la commande tcpdump
en indiquant en paramètre le protocole utilisé par la commande ping
: icmp
. Et vérifiez depuis la première connexion en relançant la commande ping
que vous parvenez à relever le trafic icmp
. Vous devriez obtenir quelque chose ressemblant à ça :
root@debServer:~# tcpdump icmp tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes 17:17:00.011565 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 1, length 64 17:17:00.012004 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 1, length 64 17:17:01.270579 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 2, length 64 17:17:01.271290 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 2, length 64 17:17:02.294303 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 3, length 64 17:17:02.294849 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 3, length 64 17:17:03.321463 IP 172.20.10.13 > 172.20.10.2: ICMP echo request, id 4673, seq 4, length 64 17:17:03.322027 IP 172.20.10.2 > 172.20.10.13: ICMP echo reply, id 4673, seq 4, length 64 ^C 8 packets captured 8 packets received by filter 0 packets dropped by kernel
Idem ici, tcpdump
écoute SIGINT, donc un petit CTRL+c pour l'arrêter.
Étape 3
Réitérez cette opération en indiquant un fichier d'enregistrement pour tcpdump
, par exemple/tmp/traficICMP.dump
. Capturez ainsi quelques paquets ICMP (entre 4 et 8 par exemple) tels que :
root@debServer:~# tcpdump icmp -w /tmp/traficICMP.dump tcpdump: listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes ^C6 packets captured 6 packets received by filter 0 packets dropped by kernel
Étape 4
Transférez cette trace réseau sur un poste de travail disposant de wireshark. Dans l'exemple ci dessous, je transfère ce fichier sur un poste Ubuntu via scp
, tel que :
root@debServer:~# scp /tmp/traficICMP.dump seb@172.20.10.2:/home/seb/ The authenticity of host '172.20.10.2 (172.20.10.2)' can't be established. ECDSA key fingerprint is SHA256:XD+IBQsATgzNTJ0PVKyOkCYKHekM9b408PvSA7cGF1o. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '172.20.10.2' (ECDSA) to the list of known hosts. seb@172.20.10.2's password: traficICMP.dump 100% 708 1.2MB/s 00:00 root@debServer:~#
Étape 5
Ouvrez la trace avec Wireshark telle que :
Étape 6
Dépliez les différentes couches OSI de la trace et notamment la couche ICMP, pouvez-vous relever les données envoyées par la commande ping
? Quelle taille fait le paquet ICMP ?
Étape 7
Sélectionnez le paquet de données ICMP et faites un clic droit / show packet bytes (ou CTRL+SHIFT+O) afin de visualiser ces données :
En gros la commande ping
envoie quelques caractères tels que!"#$%&'()*+,-./01234567
au format hexadécimal, voilà une balle originale pour faire un ping/pong 😁
Étape 8
Cherchez dans les options de la commande ping
comment passer la taille du paquet ICMP à 128 bits et effectuez une nouvelle capture. Que devient notre balle de ping pong ?
Réponse : Elle est complétée entre autres avec les caractères de l’alphabet en minuscule et majuscule !