alphaspirit - stock.adobe.com

Réseau : comment utiliser tcpdump pour capturer et analyser le trafic

Les administrateurs réseau utilisent tcpdump pour analyser le trafic dans les systèmes Linux. Apprenez à installer et à utiliser tcpdump, ainsi qu’à examiner les résultats du trafic capturé.

Les analyseurs de protocole, également appelés renifleurs de paquets ou encore sniffers, capturent les données réseau afin, pour les administrateurs, de les afficher ou de les utiliser. Les captures comprennent le contenu de la couche transport, les informations de la couche application et les informations d’en-tête, telles que les adresses physiques et logiques. Les administrateurs réseau trouvent généralement ces informations plus utiles que les données elles-mêmes.

Voici les trois principales raisons pour lesquelles les administrateurs réseau capturent des paquets :

  • La Sécurité. Les paquets capturés exposent des données non sécurisées, que ce soit dans le cadre de tests de pénétration ou d’attaques malveillantes par écoute clandestine.
  • Le dépannage. Les informations d’en-tête sont utiles pour dépanner tout ce qui concerne le DNS ou les filtres de paquets sur les routeurs.
  • L’audit. Les captures affichent exactement ce qui se trouve sur le réseau et pas seulement ce que vous pensez qu’il pourrait y avoir. Les audits vérifient que les types de trafic réseau attendus sont bien présents.

Tcpdump est un outil Linux, Open source, couramment utilisé pour analyser les paquets. Il est rapide, simple et léger. Wireshark est un outil similaire souvent utilisé en conjonction avec tcpdump. Cet article explique comment utiliser tcpdump pour capturer et afficher des paquets. Il explique également comment afficher les captures tcpdump dans Wireshark.

L’utilitaire tcpdump s’exécute sur la ligne de commande Linux. Tcpdump est une application simple qui fonctionne bien sur les serveurs Linux sans périphériques réseau basés sur Linux, interface graphique ou divers nœuds IoT. Ces caractéristiques confèrent à tcpdump un avantage par rapport aux analyseurs plus puissants, basés sur une interface graphique, tels que Wireshark. Tcpdump est également scriptable, ce qui signifie qu’il peut permettre des captures programmées.

Comment installer tcpdump

De nombreuses distributions Linux incluent tcpdump, en particulier celles utilisées pour les réseaux d’entreprise. Si votre distribution préférée ne l’inclut pas, utilisez votre gestionnaire de paquets préféré pour l’installer.

Sur Red Hat et les distributions similaires, tapez la commande suivante :

# dnf install tcpdump

Sur Debian et les distributions similaires, tapez la commande suivante :

# apt install tcpdump

Les utilisateurs de macOS peuvent gérer tcpdump à l’aide de la commande brew suivante :

# brew install tcpdump

Comme tcpdump est open source, vous pouvez également le compiler vous-même. Consultez le site officiel pour plus d’informations et de documentation.

Tcpdump est prêt à l’emploi immédiatement après son installation.

Comment utiliser tcpdump

Tcpdump contient de nombreuses options et personnalisations qui peuvent vous aider à trouver exactement ce que vous recherchez. N’oubliez pas de consulter la page principale pour obtenir des explications et des exemples.

1/ Lancez une capture. Pour commencer à utiliser tcpdump, tapez la commande suivante dans le terminal Linux :

# tcpdump

Notez que vous aurez peut-être besoin des privilèges sudo.

Tcpdump affiche les paquets capturés en temps réel. Cela est utile si vous savez ce que vous recherchez et s’il n’y a pas beaucoup de trafic sur l’interface. Cependant, il est beaucoup plus probable que votre écran défile rapidement avec des informations presque incompréhensibles.

Exemple de capture d'écran en temps réel faite avec tcpdump.
Utilisez la capture en temps réel avec tcpdump.

Interrompez la capture avec Ctrl+C lorsque cela se produit.

Vous devez trouver un moyen d’afficher uniquement les informations utiles pour la tâche que vous effectuez. Les sections suivantes explorent les options permettant de concentrer tcpdump sur ce dont vous avez besoin.

2/ Sélectionnez une interface. Une façon de restreindre la capture consiste à spécifier l’interface réseau locale sur laquelle l’analyseur effectue la capture. Par exemple, les captures sont possibles sur les interfaces filaires et sans fil d’un ordinateur portable. Il peut y avoir encore plus d’interfaces sur les serveurs réseau équipés de plusieurs cartes d’interface réseau ou sur les routeurs connectés à plusieurs sous-réseaux.

Utilisez l’option -i pour sélectionner l’interface. Pour afficher les interfaces disponibles, tapez tcpdump -D.

Capture d'écran de l'affichage des interfaces disponibles à l'aide de l'option -D.
Affichez les interfaces disponibles à l'aide de l'option -D.

Une fois que vous avez identifié l’interface que vous souhaitez utiliser, tapez son nom après l’option -i :

# tcpdump -i eth0

Ce filtre permet d’éviter que les résultats de la capture ne génèrent un volume de données trop important. Cependant, vous souhaiterez probablement filtrer davantage les résultats.

3/ Sélectionnez les informations sur l’hôte. Vous avez probablement une bonne idée de ce qu’il faut rechercher dans les scénarios de dépannage ou de tests d’intrusion. Vous savez également d’où proviennent ou où vont les paquets dont vous avez besoin. Spécifiez les adresses IP source ou destination que vous souhaitez que tcpdump surveille à l’aide des indicateurs suivants.

Indicateur Détail
host

Tous les paquets contenant cet hôte dans les champs source ou destination.

src

Tous les paquets dont le champ source contient cet hôte.

dst Tous les paquets dont cet hôte figure dans le champ de destination.
src and dst

Tous les paquets dont l’hôte figure à la fois dans les champs source et destination.

src or dst

Tous les paquets contenant cet hôte dans le champ source ou dans le champ destination.

Pour capturer les paquets provenant d’un hôte spécifique, tapez la commande suivante :

# tcpdump -i eth0 host 10.1.1.42

Si vous souhaitez que le trafic provienne uniquement de l’adresse 10.1.1.42, tapez la commande suivante :

# tcpdump -i eth0 src host 10.1.1.42

Développez des paramètres de capture plus complexes à l’aide des opérateurs and ou or.

4/ Filtrer par numéro de port. Vous pouvez être davantage intéressé par un type de trafic que par les hôtes impliqués. Dans ce cas, utilisez un filtre basé sur les numéros de port. Si vous avez besoin du trafic SMTP (Simple Mail Transfer Protocol), tapez la commande suivante :

# tcpdump -i eth0 dst port 25

Si vous souhaitez détecter un trafic Web non sécurisé, tapez la commande suivante :

# tcpdump -i eth0 dst port 80

5/ Écrire la capture dans un fichier. L’un des inconvénients des exemples ci-dessus est que tcpdump affiche tous les résultats à l’écran. Ceux-ci peuvent défiler trop rapidement pour permettre leur analyse ou la détection de modèles. Il est généralement préférable d’écrire les résultats de la capture dans un fichier.

Utilisez l’option -w avec un nom de fichier pour spécifier une destination.

# tcpdump -i eth0 -w capture.pcap

Veillez à utiliser l’extension de fichier .pcap. Les résultats de la capture ne sont pas utilisables sous forme de fichier texte. De plus, Wireshark peut ouvrir le fichier tcpdump s’il porte l’extension .pcap.

Capture d'écran de l'utilisation de l'option -w et d'un nom de fichier pour enregistrer la capture dans un fichier.
Utilisez l'option -w et un nom de fichier pour enregistrer la capture dans un fichier.

Comment afficher les résultats de la capture

Maintenant que vous disposez d’un fichier de capture, vous pouvez afficher les résultats de deux manières : avec tcpdump ou Wireshark. Tcpdump peut lire le fichier, mais vous trouverez peut-être plus pratique d’utiliser Wireshark.

Affichez le fichier de capture avec tcpdump. Pour afficher le fichier avec tcpdump, tapez la commande suivante :

# tcpdump -r capture.pcap
Captutre d'écran de l'utilisation de l'option -r et d'un nom de fichier pour lire une capture avec tcpdump.
Utilisez l'option -r et un nom de fichier pour lire une capture avec tcpdump.

Utilisez des commandes telles que grep ou awk pour rechercher les informations spécifiques dont vous avez besoin.

Affichez le fichier de capture avec Wireshark. L’interface de Wireshark est plus conviviale et plus flexible que celle de tcpdump, en particulier lorsqu’il s’agit de traiter plusieurs fichiers de capture provenant de différentes machines.

Pour afficher le fichier PCAP, lancez Wireshark, sélectionnez Fichier, cliquez sur Ouvrir et recherchez l’emplacement du fichier, probablement un partage réseau ou un répertoire local dans lequel vous avez copié le fichier à partir du système d’origine.

Vous disposez désormais des fonctionnalités de recherche, de filtrage et d’analyse de Wireshark dans une interface graphique pratique.

Imaginons un scénario dans lequel vous capturez des paquets sur plusieurs routeurs, certains appareils IoT et deux de vos serveurs dans le cadre d’un audit réseau ou d’un dépannage d’incident. Centralisez les fichiers de capture sur un partage réseau, puis ouvrez les fichiers avec Wireshark sur votre poste de travail local quotidien.

Les bonnes pratiques de la capture de paquets sous tcpdump

Tcpdump est un outil utile dans les limites de son utilisation. Les options initiales sont simples et la possibilité d’écrire dans un fichier est essentielle. Tcpdump est léger et s’exécute en ligne de commande, il est donc utilisable sur pratiquement tous les systèmes basés sur Linux.

Les options courantes pour commencer à utiliser tcpdump sont les suivantes :

Option Fonction
-D

Affiche les interfaces disponibles.

-i

Sélectionne une interface.

-w Écrit dans un fichier (utilisez l'extension .pcap).
-r

Lit à partir d'un fichier, avec tcpdump.

La prochaine fois que vous prévoyez d'auditer ou de dépanner votre réseau, pensez à utiliser les options tcpdump suivantes :

  • Filtrer le trafic par interface.
  • Filtrer le trafic par source et destination.
  • Filtrer le trafic par numéro de port.
  • Lire et écrire les captures avec respectivement -r et -w.
  • Écrire la capture dans un fichier et l’analyser dans Wireshark.
  • Créer un script pour toutes les captures que vous avez l'intention de répéter.

Pour approfondir sur Administration de réseaux