Comment utiliser la commande tcpdump sur Linux

Comment utiliser la commande tcpdump sur Linux

Le tcpdump La commande peut être utilisée pour capturer le trafic réseau sur un système Linux. Il s'agit d'un utilitaire de ligne de commande polyvalent sur lequel les administrateurs de réseau comptent souvent pour le dépannage.

Ce que vous trouverez, c'est que la quantité de trafic de réseautage capturé sur une interface peut être facilement écrasante. tcmpdump Rend notre travail un peu plus facile en nous permettant d'isoler uniquement le trafic qui nous intéresse. Bien sûr, pour ce faire, vous devez vous familiariser avec les différents drapeaux et paramètres qui accompagnent la commande.

Dans ce guide, vous verrez comment utiliser tcpdump à travers des exemples et des explications. Suivez votre propre système si vous souhaitez apprendre à capturer le trafic réseau et à maîtriser le tcpdump commande.

Dans ce tutoriel, vous apprendrez:

  • Comment installer TCPDump sur les principales distros Linux
  • Exemples de commande tcpdump
  • Comment filtrer le trafic TCPDump par port, protocole, source et destination
  • Comment écrire des captures TCPDump pour fichier
  • Comment interpréter la sortie de la commande tcpdump
Utilisation de la commande tcpdump pour capturer le trafic réseau sur Linux Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel tcpdump
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Installez TCPDump sur les principales distros Linux

Il y a de fortes chances que votre distribution Linux ait déjà tcpdump Installé par défaut, surtout si vous exécutez une distribution destinée aux serveurs. Juste au cas où il n'est pas déjà installé, vous pouvez utiliser la commande appropriée ci-dessous pour l'installer via le gestionnaire de packages de votre système.

Pour installer TCPDump sur Ubuntu, Debian et Linux Mint:

$ sudo apt install tcpdump 

Pour installer TCPDump sur Centos, Fedora, Almalinux et Red Hat:

$ sudo dnf installer tcpdump 

Pour installer TCPDump sur Arch Linux et Manjaro:

$ sudo pacman -s tcpdump 

Exemples de commande tcpdump

NOTE
Tous vos tcpdump Les commandes doivent être exécutées avec le compte d'utilisateur racine ou avec Sudo. Le service public nécessite des privilèges administratifs pour exécuter.

La forme la plus simple de la commande consiste à utiliser l'utilitaire sans options supplémentaires, comme celle-ci:

# tcpdump 

Si vous ne spécifiez pas à quelle interface réseau vous souhaitez capturer le trafic, comme dans la commande ci-dessus, alors tcpdump choisira une interface pour vous.

Il continuera de «vider» le trafic capturé vers votre terminal jusqu'à l'interruption de la commande. La façon la plus simple de le faire est avec Ctrl + c.

Si vous avez plus d'une interface réseau, il sera préférable de spécifier la interface sur laquelle vous essayez de capturer le trafic, car tcpdump peut ne pas choisir celui que vous voulez par défaut. Utilisez le -D option pour imprimer une liste d'interfaces réseau qui tcpdump peut utiliser.

# tcpdump -d 1.ENP0S3 [UP, Running] 2.lo [up, courir, boucler] 3.n'importe quel (pseudo-appareils qui capture sur toutes les interfaces) [UP, Running] 4.Bluetooth-Monitor (Bluetooth Linux Monitor) [Aucun] 5.NFLOG (interface Linux NetFilter Log (NFLOG)) [Aucun] 6.Interface NFQueue (interface Linux NetFilter (NFQueue)) [Aucun] 

Nous avons quelques interfaces différentes que nous pouvons utiliser. Alternativement, nous avons le n'importe quel Option disponible qui nous permettra de capturer le trafic sur toutes les interfaces réseau simultanément. Si nous voulons capturer le trafic réseau sur le ENP0S3 interface, nous utiliserions la syntaxe de commande suivante.

# tcpdump -i enp0s3 

Vous pouvez utiliser le -V option pour augmenter la verbosité de la sortie, ou -vv et -vvv Pour l'augmenter encore plus.

# tcpdump -i enp0s3 -vv 

Si tu ne veux pas tcpdump Pour produire sans fin des données de votre terminal, vous pouvez utiliser le -c Option pour spécifier le nombre de paquets que vous aimeriez que l'utilitaire capture. tcpdump Arrêtera l'exécution de la commande une fois le seuil atteint, plutôt que d'attendre que vous vous interrompez. La commande suivante nous permettra de ne capturer que les 15 premiers paquets.

# tcpdump -c 15 

Si tu ne veux pas tcpdump Pour effectuer une résolution DNS sur les adresses réseau dans la sortie, vous pouvez utiliser le -n Option dans votre commande. Cela affichera toutes les adresses réseau sous forme d'adresses IP, plutôt que de les résoudre à des noms de domaine.

# tcpdump -n 

Si vous préférez enregistrer la sortie du trafic réseau dans le fichier, au lieu de l'avoir répertorié sur votre écran, vous pouvez toujours rediriger le tcpdump Sortie avec l'habitude > et >> les opérateurs.

# tcpdump> trafic.SMS 

Une autre option consiste à écrire la capture du réseau pour fichier. Ces fichiers ont généralement le .PCAP Extension de fichier, et ne peut pas être lue par un éditeur de texte ordinaire.

# TCPDUMP -N -W Traffic.PCAP 

Pour ouvrir le fichier pour une analyse ultérieure, utilisez le -r option et nom de votre fichier.

# tcpdump -r trafic.PCAP 

Interpréter la sortie de la commande TCPDUmp

Chaque paquet qui tcpdump Capture est écrit comme une ligne individuelle. Une de ces lignes ressemblera à ceci:

14:21:46.134249 IP 10.0.2.15.54000> 104.16.168.35.443: drapeaux [.], ack 2915, gagner 63000, longueur 0 

Voici comment interpréter cette ligne de données:

  • 14:21:46.134249 - Horodatage du moment où le paquet a été capturé.
  • IP 10.0.2.15.54000 - IP et numéro de port de l'hôte source.
  • 104.16.168.35.443 - IP et numéro de port de l'hôte de destination.
  • Drapeaux [.]] - Flags TCP (SYN, ACK, PSH, etc.). [.]] signifie ack.
  • ack 2915 - Le numéro de reconnaissance.
  • Gagnez 63000 - Le numéro de fenêtre (octets dans le tampon de réception).
  • longueur 0 - La durée des données de charge utile.

Filtre le trafic TCPDump

L'une des meilleures caractéristiques de tcpdump est que nous pouvons filtrer exactement le trafic que nous voulons voir. Sans filtrer le trafic par adaptateur (comme vu ci-dessus), le numéro de port et le protocole de paquet, la quantité de trafic capturé peut rapidement devenir écrasante et presque impossible de passer au crible.

Malgré le nom tcpdump, Nous pouvons utiliser l'outil pour filtrer toutes sortes de trafic, pas seulement TCP. Par exemple, utilisez la syntaxe suivante pour filtrer le trafic qui utilise UDP.

# tcpdump -n udp 

Ou l'exemple suivant qui filtre ICMP:

# tcpdump -n icmp 

Vous pouvez également utiliser le numéro de protocole correspondant pour filtrer un protocole spécifique. Par exemple, ICMP est le protocole numéro 1, donc la syntaxe suivante fera la même chose que l'exemple précédent.

# tcpdump -n proto 1 

Pour voir une liste complète des protocoles de réseautage et leurs numéros correspondants, consultez la liste des numéros de protocole IP sur Wikipedia.

Pour filtrer le trafic avec une destination spécifique ou une adresse IP source, nous pouvons utiliser le héberger qualifer avec le -n option. Par exemple, pour filtrer le trafic lié à l'hôte à l'adresse IP dix.dix.150.20:

# tcpdump -n hôte 10.dix.150.20 

Alternativement, utilisez le filet Qualifer si vous souhaitez filtrer le trafic vers ou depuis un réseau entier. Par exemple, la commande suivante filtrera le trafic lié à 192.168.1.0/24 réseau.

# tcpdump -n net 192.168.1 

Utilisez le port et dépeindre Qualifiants pour filtrer les paquets liés à un port ou une plage de port spécifique, respectivement. Par exemple, la commande suivante filtrera notre trafic lié au port 80 (HTTP).

# TCPDUmp -N Port 80 

Ou, pour filtrer le trafic des ports 20-30, la commande suivante serait utilisée.

# tcpdump -N PROFRIT 20-30 

Ajouter le DST, SRC, SRC et DST, et SRC ou DST Qualifiants si vous souhaitez filtrer en fonction de l'adresse source et / ou de destination ou le port des paquets. Par exemple, la commande suivante filtrera les paquets qui ont une adresse IP source de dix.dix.150.20.

# tcpdump -n hôte src 10.dix.150.20 

Ou dans cet exemple, nous filtrons les paquets destinés au port SSH (port 22).

# TCPDUmp -N Port 22 

Combinaison des filtres

Nous pouvons combiner ces différents filtres couverts ci-dessus en utilisant le et (&&), ou (||), et pas (!) opérateurs dans notre tcpdump commande.

Par exemple, la commande suivante capturera le trafic destiné à dix.dix.150.20 sur le port 80 (http).

# tcpdump -n dst hôte 10.dix.150.20 et Port TCP 80 

Ou créer des filtres encore plus granulaires en combinant davantage les règles à l'intérieur des parenthèses. Par exemple, cette commande fera de même que la précédente, mais capturera également le port 443 (HTTPS).

# tcpdump -n 'dst hôte 10.dix.150.20 et (Port TCP 80 ou Port TCP 443) ' 

Réflexions de clôture

Dans ce guide, nous avons vu comment utiliser le tcpdump utilitaire de ligne de commande pour capturer le trafic réseau sur un système Linux. Comme nous l'avons vu dans ce tutoriel, la commande peut devenir assez complexe et accepter une entrée très granulaire, ce qui nous permet de filtrer le trafic exact que nous voulons voir.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Commandes Linux de base
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Installez Arch Linux dans VMware Workstation
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Choses à installer sur Ubuntu 22.04
  • Comment prendre une capture d'écran sur Kali Linux
  • Comment prendre une capture d'écran sur Manjaro