Groupe pour la Promotion de GNU/Linux en Royans Vercors

tcpdump

samedi 28 août 2010, par Zedraken

Présentation

L’outil tcpdump est un outil livré de base avec toute distribution GNU/Linux et existe depuis très longtemps. Il s’agit d’un outil très puissant permettant d’écouter un réseau informatique à des fins d’analyse et de maintenance. Il s’exécute en ligne de commande et doit être lancé avec les droits du super-utilisateur (root) afin de pouvoir accéder à l’interface réseau en mode promiscuous. Dans un tel mode, tcpdump enregistre tous les paquets, même ceux qui ne sont pas destinés à la machine sur laquelle il s’exécute.

Il dispose de nombreuses options que nous ne détaillerons pas ici. En revanche, ce mini-guide va vous en présenter quelques unes au travers de cas concrets d’utilisation.

En général, tcpdump est utilisé pour écouter le trafic entrant et sortant au niveau d’un serveur, aussi le plus efficace est de le lancer directement dans une console sur ce serveur. Mais cela n’est pas toujours possible. Dans ce cas, il peut être lancé sur une autre machine du réseau mais s’il y a un switch qui inter-connecte le serveur et la machine utilisée pour l’écoute, il convient de configurer le switch afin que le trafic allant sur le serveur soit également distribué vers la machine d’écoute, sinon tcpdump ne pourra rien voir. Cette opération est possible sur des switch dits managed.

Cas d’utilisation

Utilisation brute

Écouter tout ce qui passe sur le réseau, sans aucune distinction.

# tcpdump -v

Cette commande capturera le moindre paquet passant sur le réseau. Vu la quantité d’informations que cela peut représenter, son analyse peut être fastidieuse. C’est la raison pour laquelle il est possible de demander à tcpdump de ne capturer que certains paquets selon des règles de filtrage qu’il faut lui indiquer.

Utilisation simple

Ecouter le traffic à partir de l’interface eth0 en protocole TCP sur le port HTTP (port 80) :

# tcpdump -xX -i eth0 tcp and http

Les options -xX permettent de formater l’affichage de sortie en hexadécimal et en ASCII (pratique pour voir passer du texte en clair).

Ecouter un intervalle de ports

# tcpdump -xX -i eth0 tcp and portrange 60000-61000

Cette ligne indique à tcpdump d’écouter tout échange sur les ports allant de 60000 à 61000 inclus et utilisant le protocole TCP.

Écouter le trafic sur un port spécifié en provenance d’une machine

# tcpdump -xX -i eth0 src 1.2.3.4 and tcp and port 21

Cette ligne indique à tcpdump d’écouter tout trafic en provenance de la machine dont l’adresse IP est ici 1.2.3.4 sur le port 21 et utilisant le protocole TCP.

Spécifier le nombre d’octets à capturer

# tcpdump -xX -i eth0 -s 416 src 1.2.3.4 and udp and port 5000

Cet exemple montre comment intercepter exactement 416 octets sur des paquets utilisant le protocole UDP à destination de l’adresse IP 1.2.3.4 sur le port 5000. De plus, le contenu des paquets est affiché en hexadécimal et en ASCII, ce qui est pratique pour leur analyse.

Options pratiques

Certaines options sont plus adaptées dans des cas particuliers. En voici quelques unes :
- -A : affiche les paquets en ASCII. Ce mode est pratique pour visualiser du contenu non chiffré (exemple : des pages web).
- -D : affiche la liste des interfaces sur lesquelles il est possible d’écouter.
- -i  : réalise les opérations sur l’interface spécifiée (ex : eth0)
- -w  : enregistre le résultat de la capture dans le fichier dont le nom est spécifié. Ce fichier pourra ensuite être relu en relançant tcpdump avec l’option -r.
- -r  : lit le contenu de la capture préalablement enregistrée dans le fichier spécifié.
- -s  : indique le nombre d’octets maximal à capturer.

Les options classiques pour augmenter la verbosité :

- -v
- -vv
- -vvv

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0