Essayez-vous de capturer des paquets de données afin d'analyser le trafic sur votre réseau? Peut-être que vous êtes 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. Comme 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 le lequel commander.
quel 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 installer tcpdump
Sur les distributions basées sur Arch:
sudo pacman -S tcpdump
Pour installer sur Fedora:
sudo dnf installer tcpdump
Notez que le package tcpdump nécessite libcap en tant que dépendance, assurez-vous donc 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. Lister toutes les interfaces réseau
Pour vérifier quelles interfaces réseau sont disponibles pour la capture, utilisez le -RÉ drapeau avec la commande tcpdump.
tcpdump -D
Passer le --list-interfaces flag en tant qu'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 quelle interface vous souhaitez utiliser, le quelconque L'argument commande tcpdump pour capturer les paquets réseau en utilisant n'importe quelle interface active.
tcpdump --interface any
Le système affichera la sortie suivante.
En rapport: Qu'est-ce que le modèle d'interconnexion des systèmes ouverts?
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], longueur 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 En dehors 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 example, DRAPEAU [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 (suiv. 196: 568) des données du 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'acquittement (ack 1) ou un simple numéro d'acquittement. 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 prend en charge la taille de la fenêtre (gagner 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. Limiter 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 du -c drapeau.
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 tout port -c 5 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 tout hôte -c 5 112.123.13.145
Si vous souhaitez filtrer les paquets envoyés ou reçus par un hôte spécifique, utilisez le src ou alors dst argument 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 alors pour combiner deux ou plusieurs expressions ensemble. Par exemple, pour obtenir des paquets appartenant à l'adresse IP source 112.123.13.145 et utilisez le port 80:
tcpdump --interface any -c 10 src 112.123.13.145 et port 80
Les expressions complexes peuvent être regroupées en utilisant parenthèses comme suit:
tcpdump --interface any -c 10 "(src 112.123.13.145 ou src 234.231.23.234) et (port 45 ou port 80)"
5. Afficher le contenu du paquet
Vous pouvez utiliser le -UNE et -X avec la commande tcpdump pour analyser le contenu du paquet réseau. le -UNE drapeau représente ASCII format et -X dénote hexadécimal format.
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
En rapport: Qu'est-ce que la perte de paquets et comment en corriger la cause?
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 le -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
le .pcap l'extension de fichier signifie capture de paquets Les données. Vous pouvez également émettre la commande susmentionnée en mode détaillé en utilisant le -v drapeau.
tcpdump --interface any -c 10 -w data.pcap -v
Pour lire un .pcap fichier en utilisant tcpdump, utilisez le -r drapeau suivi du chemin du fichier. le -r signifie Lis.
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.
Vous souhaitez vous connecter à un réseau Wi-Fi via la ligne de commande Linux? Voici ce que vous devez savoir sur la commande nmcli.
Lire la suite
- Linux
- Sécurité
- Forensics réseau
Deepesh est l'éditeur junior pour Linux chez MUO. Il écrit du contenu informatif sur Internet depuis plus de 3 ans. Pendant son temps libre, il aime écrire, écouter de la musique et jouer de la guitare.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives!
Un pas de plus…!
Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.