Notes et transcriptions du cours “Administrez un système Linux” disponible sur la plateforme Openclassrooms.
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 !
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 !).
À 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.
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
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/
Ouvrez la trace avec Wireshark, 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 ?
Sélectionnez le paquet de données ICMP et faites un clic droit / show packet bytes afin de visualiser ces données.
La commande ping envoie quelques caractères tels que!“#$%&'()*+,-./01234567 au format hexadécimal, voilà une balle originale pour faire un ping/pong.
-p
permet de définir un motif (pattern) allant jusqu’à 16 Octets utilisé par la commande pour générer les données.
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 ?
ping -c 4 -s 128 -p 4c494e55582e2e2e server.local MOTIF : 0x4c494e55582e2e2e PING server.local (192.168.1.180) 128(156) bytes of data. ...
Sous Wireshark on peut observer que les données transmises par les ping ont été générées à l'aide du motif hexadécimal passé en paramètre