Comment utiliser tcpdump et 6 exemples
Essayez-vous de capturer des paquets de données afin d'analyser le trafic sur votre réseau? Peut-être êtes-vous un administrateur de serveur qui a rencontré un problème et qui souhaite surveiller les données transmises sur le réseau. Quelle que soit la situation, l'utilitaire Linux tcpdump est ce dont vous avez besoin.
Dans cet article, nous discuterons de la commande tcpdump en détail, ainsi que de quelques guides sur la façon d'installer et d'utiliser tcpdump sur votre système Linux.
Qu'est-ce que la commande tcpdump?
Tcpdump est un puissant outil de surveillance de réseau qui permet à un utilisateur de filtrer efficacement les paquets et le trafic sur un réseau. Vous pouvez obtenir des informations détaillées sur TCP / IP et les paquets transmis sur votre réseau. Tcpdump est un utilitaire de ligne de commande, ce qui signifie que vous pouvez l'exécuter sur des serveurs Linux sans affichage.
Les administrateurs système peuvent également intégrer l'utilitaire tcpdump avec cron afin d'automatiser diverses tâches telles que la journalisation. Étant donné que ses nombreuses fonctionnalités le rendent assez polyvalent, tcpdump fonctionne aussi bien comme un outil de dépannage que comme un outil de sécurité.
Comment installer tcpdump sur Linux
Alors que la plupart du temps, vous trouverez tcpdump préinstallé sur votre système, certaines distributions Linux ne sont pas livrées avec le paquet. Par conséquent, vous devrez peut-être installer manuellement l'utilitaire sur votre système.
Vous pouvez vérifier si tcpdump est installé sur votre système en utilisant la commande which .
which tcpdump
Si la sortie affiche un chemin de répertoire ( / usr / bin / tcpdump ), le package est installé sur votre système. Cependant, sinon, vous pouvez le faire facilement en utilisant le gestionnaire de packages par défaut de votre système.
Pour installer tcpdump sur des distributions basées sur Debian telles qu'Ubuntu:
sudo apt-get install tcpdump
L'installation de tcpdump sur CentOS est également facile.
sudo yum install tcpdump
Sur les distributions basées sur Arch:
sudo pacman -S tcpdump
Pour installer sur Fedora:
sudo dnf install tcpdump
Notez que le paquet tcpdump nécessite libcap comme dépendance, alors assurez-vous de l'installer également sur votre système.
Exemples de Tcpdump pour capturer des paquets réseau sous Linux
Maintenant que vous avez installé avec succès tcpdump sur votre machine Linux, il est temps de surveiller certains paquets. Étant donné que tcpdump nécessite des autorisations de superutilisateur pour exécuter la plupart des opérations, vous devrez ajouter sudo à vos commandes.
1. Liste de toutes les interfaces réseau
Pour vérifier quelles interfaces réseau sont disponibles pour la capture, utilisez l'indicateur -D avec la commande tcpdump.
tcpdump -D
Passer l' indicateur –list-interfaces comme argument renverra la même sortie.
tcpdump --list-interfaces
La sortie sera une liste de toutes les interfaces réseau présentes sur votre système.
Après avoir obtenu la liste des interfaces réseau, il est temps de surveiller votre réseau en capturant des paquets sur votre système. Bien que vous puissiez spécifier l'interface que vous souhaitez utiliser, l'argument any commande tcpdump pour capturer les paquets réseau à l'aide de n'importe quelle interface active.
tcpdump --interface any
Le système affichera la sortie suivante.
2. Le format de sortie tcpdump
À partir de la troisième ligne, chaque ligne de la sortie indique un paquet spécifique capturé par tcpdump. Voici à quoi ressemble la sortie d'un seul paquet.
17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33
Gardez à l'esprit que tous les paquets ne sont pas capturés de cette façon, mais c'est le format général suivi par la plupart d'entre eux.
La sortie contient les informations suivantes.
- Horodatage du paquet reçu
- Nom de l'interface
- Flux de paquets
- Nom du protocole réseau
- Adresse IP et détails du port
- Indicateurs TCP
- Le numéro de séquence des données dans le paquet
- Acquitter les données
- La taille de la fenêtre
- Longueur du paquet
Le premier champ ( 17: 00: 25.369138 ) affiche l'horodatage lorsque votre système a envoyé ou reçu le paquet. L'heure enregistrée est extraite de l'heure locale de votre système.
Les deuxième et troisième champs indiquent l'interface utilisée et le flux du paquet. Dans l'extrait ci-dessus, wlp0s20f3 est le nom de l'interface sans fil et Out est le flux de paquets.
Le quatrième champ comprend des informations relatives au nom du protocole de réseau. Généralement, vous trouverez deux protocoles: IP et IP6 , où IP désigne IPV4 et IP6 est pour IPV6.
Le champ suivant contient les adresses IP ou le nom du système source et de destination. Les adresses IP sont suivies du numéro de port.
Le sixième champ de la sortie se compose d'indicateurs TCP. Il existe différents indicateurs utilisés dans la sortie de tcpdump.
Nom du drapeau | Valeur | La description |
---|---|---|
SYN | S | Connexion démarrée |
AILETTE | F | Connexion terminée |
POUSSER | P | Les données sont poussées |
RST | R | La connexion est réinitialisée |
ACK | . | Reconnaissance |
La sortie peut également contenir une combinaison de plusieurs indicateurs TCP. Par exemple, FLAG [f.] Représente un paquet FIN-ACK.
En allant plus loin dans l'extrait de sortie, le champ suivant contient le numéro de séquence ( seq 196: 568 ) des données dans le paquet. Le premier paquet a toujours une valeur entière positive et les paquets suivants utilisent le numéro de séquence relatif pour améliorer le flux de données.
Le champ suivant contient le numéro d'accusé de réception ( accusé de réception 1 ) ou le numéro d'accusé de réception simple. Le paquet capturé dans la machine de l'expéditeur a 1 comme numéro d'accusé de réception. Du côté du récepteur, le numéro d'accusé de réception est la valeur du paquet suivant.
Le neuvième champ de la sortie contient la taille de la fenêtre ( win 309 ), qui est le nombre d'octets disponibles dans le tampon de réception. Il existe plusieurs autres champs qui suivent la taille de la fenêtre, y compris la taille maximale du segment (MSS).
Le dernier champ ( longueur 33 ) contient la longueur du paquet global capturé par tcpdump.
3. Limitez le nombre de paquets capturés
Lors de la première exécution de la commande tcpdump, vous remarquerez peut-être que le système continue de capturer les paquets réseau jusqu'à ce que vous transmettiez un signal d'interruption. Vous pouvez remplacer ce comportement par défaut en spécifiant au préalable le nombre de paquets que vous souhaitez capturer à l'aide de l'indicateur -c .
tcpdump --interface any -c 10
La commande susmentionnée capturera dix paquets à partir de n'importe quelle interface réseau active.
4. Filtrer les paquets en fonction des champs
Lorsque vous résolvez un problème, obtenir un gros bloc de texte sur votre terminal ne facilite pas les choses. C'est là que la fonction de filtrage de tcpdump entre en jeu. Vous pouvez filtrer les paquets en fonction de divers champs, notamment l'hôte, le protocole, le numéro de port, etc.
Pour capturer uniquement les paquets TCP, tapez:
tcpdump --interface any -c 5 tcp
De même, si vous souhaitez filtrer la sortie à l'aide du numéro de port:
tcpdump --interface any -c 5 port 50
La commande mentionnée ci-dessus ne récupérera que les paquets transmis via le port spécifié.
Pour obtenir les détails du paquet pour un hôte particulier:
tcpdump --interface any -c 5 host 112.123.13.145
Si vous souhaitez filtrer les paquets envoyés ou reçus par un hôte spécifique, utilisez l'argument src ou dst avec la commande.
tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145
Vous pouvez également utiliser les opérateurs logiques et et ou pour combiner deux ou plusieurs expressions ensemble. Par exemple, pour obtenir des paquets appartenant à l'IP source 112.123.13.145 et utiliser le port 80 :
tcpdump --interface any -c 10 src 112.123.13.145 and port 80
Les expressions complexes peuvent être regroupées à l'aide de parenthèses comme suit:
tcpdump --interface any -c 10 "(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)"
5. Afficher le contenu du paquet
Vous pouvez utiliser les indicateurs -A et -x avec la commande tcpdump pour analyser le contenu du paquet réseau. L'indicateur -A représente le format ASCII et -x désigne le format hexadécimal .
Pour afficher le contenu du prochain paquet réseau capturé par le système:
tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x
6. Enregistrer les données de capture dans un fichier
Si vous souhaitez enregistrer les données de capture à des fins de référence, tcpdump est là pour vous aider. Passez simplement l'indicateur -w avec la commande par défaut pour écrire la sortie dans un fichier au lieu de l'afficher à l'écran.
tcpdump --interface any -c 10 -w data.pcap
L'extension de fichier .pcap représente les données de capture de paquets . Vous pouvez également émettre la commande susmentionnée en mode détaillé à l'aide de l'indicateur -v .
tcpdump --interface any -c 10 -w data.pcap -v
Pour lire un fichier .pcap à l'aide de tcpdump, utilisez l'indicateur -r suivi du chemin du fichier. Le -r signifie Read .
tcpdump -r data.pcap
Vous pouvez également filtrer les paquets réseau à partir des données de paquet enregistrées dans le fichier.
tcpdump -r data.pcap port 80
Surveillance du trafic réseau sous Linux
Si vous avez été chargé d'administrer un serveur Linux, la commande tcpdump est un excellent outil à inclure dans votre arsenal. Vous pouvez facilement résoudre les problèmes liés au réseau en capturant les paquets transmis sur votre réseau en temps réel.
Mais avant tout cela, votre appareil doit être connecté à Internet. Pour les débutants sous Linux, même se connecter au Wi-Fi via la ligne de commande peut être un peu difficile. Mais si vous utilisez les bons outils, c'est un jeu d'enfant.