Différences entre versions de « Tcpdump »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 31 : Ligne 31 :
 
   +--------+                      +----+---+                    +-----------+
 
   +--------+                      +----+---+                    +-----------+
 
192.168.100.2          192.168.100.200 | 192.168.20.254        192.168.20.253
 
192.168.100.2          192.168.100.200 | 192.168.20.254        192.168.20.253
 +
bridge100                      enp0s5 | enp0s6                enp0s5
 
</pre>
 
</pre>
  

Version du 25 décembre 2023 à 22:39

Introduction

La commande tcpdump permet de voir le trafique qui circule sur une machine. Vous pouvez l'utiliser pour :

  • vous assurer que certain paquet arrive sur une machine (eg. ICMP)
  • voir les modifications sur les entêtes (eg. NAT, PAT, ...)
  • vérifier que le messages ont les bonnes entêtes (eg. header HTTP présent)
  • ...

tcpdump va littéralement dumper (afficher de manière brute) les entêtes et même le contenu des messages. Vous pouvez également rediriger la sortie dans un fichier pour faire une exploitation graphique grâce à Wireshark

Voici quelques options intéressantes de tcpdump :

Option Description
-nn Ne convertie pas les adresses IP, les protocoles et numéro de port en noms
-vv Sortie verbeuse pour avoir des détails sur les champs des paquets capturés
-i Permet de spécifier le nom d'une interface
-K Ne pas vérifier la somme de contrôle des paquets
-A Affiche le contenu des paquets en ASCII

Pour les exemples suivants, nous allons considérer le réseau ci-dessous :

                                      NAT
               192.168.100.0/24        |        192.168.20.0/24
  +--------+                      +----+---+                    +-----------+
  |   PC   +----------------------+Firewall+--------------------+Serveur Web|
  +--------+                      +----+---+                    +-----------+
192.168.100.2          192.168.100.200 | 192.168.20.254         192.168.20.253
bridge100                       enp0s5 | enp0s6                 enp0s5

Réception d'un message ICMP

Depuis le serveur web, nous allons pinger le PC :

[root@web ~]# ping 192.168.100.2
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_seq=1 ttl=63 time=0.969 ms
64 bytes from 192.168.100.2: icmp_seq=2 ttl=63 time=1.83 ms
64 bytes from 192.168.100.2: icmp_seq=3 ttl=63 time=1.30 ms

Sur le PC :

[root@pc ~]# tcpdump -nn -vv -i bridge100 icmp
tcpdump: listening on bridge100, link-type EN10MB (Ethernet), snapshot length 524288 bytes

18:50:15.952573 IP (tos 0x0, ttl 63, id 20778, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.100.200 > 192.168.100.2: ICMP echo request, id 2, seq 1, length 64
18:50:15.952666 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84, bad cksum 0 (->f08d)!)
    192.168.100.2 > 192.168.100.200: ICMP echo reply, id 2, seq 1, length 64
18:50:16.955821 IP (tos 0x0, ttl 63, id 20853, offset 0, flags [DF], proto ICMP (1), length 84)

On peut voir le paquet source :

18:50:15.952573 IP (tos 0x0, ttl 63, id 20778, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.100.200 > 192.168.100.2: ICMP echo request, id 2, seq 1, length 64
  • machine source : 192.168.100.200
  • machine destination : 192.168.100.2