Capturer le trafic d’une interface réseau avec TCPDump

tcpdump

Aujourd'hui, mon serveur Web a subi des attaques de type FLOOD (une multitude de connection sur le serveur Web sous forme de requêtes de type GET).

J'ai dû analyser le trafic passant sur mon interface réseau afin de voir qui floodait mon serveur Web sur le port 80.

Sur un serveur Windows, il suffirait d'utiliser le logiciel Wireshark afin de capturer le trafic réseau pour l'analyser. Mon serveur étant sous Linux Debian, nous utiliserons donc TCPDump.

TCPDump est ce que l'on appelle classiquement un "packet analyzer".

Présentation de TCPDump

TCPDump est un logiciel de supervision réseau et d'acquisition de données réseau. Il est principalement utilisé pour débugger et trouver les problèmes relatifs aux trames et paquets qui circulent sur le réseau.

Utilisation de TCPDump

TCPDump est un logiciel très complet qui offre de nombreuses options pour l'utiliser.

Monitorer tout le trafic d'une interface

tcpdump -i eth1

Monitorer tout le trafic d'une interface sur le port 80 (HTTP)

tcpdump -i eth1 'port 80'

Monitorer tout le trafic d'une interface sur le port 25 (SMTP)

tcpdump -vv -x -X -s 1500 -i eth1 'port 25'

 

Voici le détail des options utilisées:

  • -vv : sortie écran
  • -x : affiche les données de chaque paquet en plus du header
  • -X : affiche les données de chaque paquet au format hexadécimal et ASCII sauf la couche de niveau 2. Cette fonction est pratique car elle nous retourne de nombreuses informations pratiques pour le débuggage et la programmation.
  • -s 1500: permet d'indiquer le nombre de bytes à capturer pour chaque paquet. Par défaut, la valeur utilisée est 68 bytes.
  • -i eth1 : monitorer l'interface eth1

Utiliser un cron pour capturer le trafic

Dans mon cas, je souhaite capturer et analyser le trafic suite à une attaque. La capture des paquets se faisant à un instant T, il ne sert à rien de lancer une capture l'attaque finie.

Par chance (ou malchance), les attaques se répètent chaque jour entre minuit et une heure. Il est donc intéressant de capturer à ce moment précis. Pour celà, nous allons lancer la capture via un cron mais qui limitera la capture à 100000 paquets (afin de ne pas charger le disque dur du serveur). Voilà la commande utilisée:

@midnight /usr/sbin/tcpdump -n -c 100000 -w /home/jhd/http_80.trace

Pour lire le fichier de capture (http_80.trace), il suffit de faire:

tcpdump -X -vv -r /home/jhd/http_80.trace

TCPDump est vraiment un super logiciel qui vous rendra bien des services. Ses fonctionnalités sont nombreuses donc n'hésitez pas à consulter l'aide via "man tcpdump".

Pour l'anecdote, ce qui floodait ma machine était tout simplement une application de test de proxy que j'étais en train de développer.

Leave a Reply

Your email address will not be published. Required fields are marked *