GNU/Linux >> Tutoriels Linux >  >> Linux

Analyse du trafic réseau avec tcpdump

tcpdump est un programme informatique d'analyse de paquets de réseau de données. Il permet à l'utilisateur d'afficher les paquets réseau (y compris TCP/IP) en cours de transmission ou de réception sur un réseau. Dans ce court article, je montrerai comment effectuer une capture de paquets pour l'analyse du trafic réseau avec tcpdump.

Liste des interfaces réseau

Tcpdump a besoin d'accéder à votre carte réseau, alors exécutez les commandes suivantes en tant que root (avec su ou sudo ). Pour imprimer la liste des interfaces réseau disponibles sur le système et sur lesquelles tcpdump peut capturer les paquets exécutés

# tcpdump -D

Dans mon cas, j'utiliserai le "vrai" nic, enp3s0.

Capturer des paquets

Ouvrez un navigateur Web (juste pour générer du trafic réseau) et exécutez la commande suivante :

# tcpdump -i <interface>

Même sans site ouvert, vous verrez peut-être une activité réseau. Peut-être que «certains» signifie beaucoup d'activité sur le réseau. Quittez avec ctrl-c et regardez les résultats. La sortie affiche un paquet par ligne, avec les informations suivantes :

  • Horodatage
  • Protocole (IP6 pour IPv6, IP pour IPv4)
  • Hôte d'origine (adresse IP ou nom d'hôte) et port
  • Hôte de destination (également IP ou nom d'hôte) et port
  • Indicateurs TCP
  • Numéro de séquence
  • Numéro ACK
  • Taille de la fenêtre
  • Options TCP
  • Longueur des données

Limiter la sortie

tcpdump -i <interface> -c <n>

Avec cette commande, le programme quittera après avoir reçu n paquets

Sur la capture d'écran, vous pouvez voir un dormir 2 commande exécutée avant tcpdump. C'était juste pour me donner 2 secondes pour charger wikipedia sur mon navigateur. Mais c'est le même type de sortie qu'avant.

Masquer les noms

tcpdump -i <interface> -n

Avec le commutateur -n, tcpdump ne convertira pas l'adresse IP ou les numéros de port en noms.

Filtres

Vous pouvez demander à tcpdump de ne capturer que certains paquets. Par exemple pour capturer uniquement les paquets https, ou plus précisément les paquets vers le port 443, ajoutez l'expression :

tcpdump -i <interface> port <portnumber or portname>

Nous pouvons également capturer des paquets vers ou depuis un hôte avec l'expression suivante

tcpdump -i <interface> host <ip address or hostname>

Ou nous pouvons capturer des paquets d'un protocole avec :

tcpdump -i <interface> proto <protocol>

Où le protocole peut être l'un des suivants :icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp ou tcp. Pour icmp, tcp et udp, vous pouvez omettre le mot-clé proto.

On peut aussi combiner plusieurs expressions avec ‘and’ (ou ‘&&’), ‘or’ (ou ‘||’) et not (ou ‘!’) et les grouper avec des parenthèses. Il y a beaucoup plus de filtres que vous pouvez créer, consultez la page de manuel de pcap-filter (man pcap-filter ) pour obtenir de l'aide sur la syntaxe.

Augmenter la verbosité de la sortie

Utilisez le paramètre -v pour augmenter la verbosité. À partir de la page de manuel de tcpdump :

-v Lors de l'analyse et de l'impression, produisez une sortie (un peu plus) détaillée. Par exemple, la durée de vie, l'identification, la longueur totale et les options d'un paquet IP sont imprimées. Permet également des vérifications supplémentaires de l'intégrité des paquets, telles que la vérification de la somme de contrôle des en-têtes IP et ICMP.
-vv Sortie encore plus détaillée. Par exemple, des champs supplémentaires sont imprimés à partir des paquets de réponse NFS et les paquets SMB sont entièrement décodés.
-vvv Sortie encore plus détaillée. Par exemple, les options telnet SB … SE sont imprimées en entier. Avec -X, les options Telnet sont également imprimées en hexadécimal.

Enregistrer la capture dans un fichier

Pour écrire les paquets dans un fichier pour une analyse ultérieure, ajoutez -w à la ligne de commande :

tcpdump -i <interface> -w <filename>

Vous pouvez lire ce fichier plus tard avec le drapeau -r

tcpdump -r <file>

Ou vous pouvez ouvrir ce fichier plus tard avec un outil graphique, comme wireshark.

Attendez une seconde… wireshark peut également capturer des paquets réseau, pourquoi je ne l'ai pas utilisé depuis le début ?.

Certes, wireshark peut capturer des paquets, et la sortie est également beaucoup plus claire et plus facile à suivre et à lire. Avec wireshark, je n'ai même pas besoin de mémoriser une ligne de commande, ni de garder en main la page de manuel, l'article de blog ou au moins une feuille de triche. Vrai aussi. J'aurais pu utiliser wireshark plutôt que de faire l'analyse du trafic réseau avec tcpdump. Mais parfois, j'ai besoin de faire la capture sur un serveur ou un routeur, et dans ce type d'ordinateurs, je ne veux pas gaspiller de précieux cycles de processeur ou des bits de mémoire dans des fenêtres de dessin, des couleurs, des boutons ou d'autres widgets GUI.

Et c'est pourquoi j'ai choisi de faire l'analyse du trafic réseau avec tcpdump en ligne de commande si je suis pressé. Ou enregistrez la sortie dans un fichier que je transfère pour le faire avec wireshark.


Linux
  1. Enumérer un nouveau réseau avec Nmap

  2. 6 options de filtre de trafic réseau tcpdump

  3. Tester les services réseau avec Netcat

  4. Exemples d'utilisation de la commande tcpdump pour le dépannage du réseau

  5. Amélioration des performances TCP sur un réseau gigabit avec de nombreuses connexions et un trafic élevé de petits paquets

Surveiller le trafic réseau avec Ntopng sur Ubuntu 18.04 LTS

Comment utiliser Wireshark pour capturer et analyser les paquets réseau

Tcpdump Exemples - Capturer le trafic réseau sous Linux

Network Manager sur Linux avec des exemples

Commande Linux tcpdump

Analyseur de paquets :15 exemples de commandes TCPDUMP