Une façon d'optimiser la capture de paquets consiste à utiliser un outil d'interface de ligne de commande, et parmi tous les outils que vous pouvez trouver, TShark est celui que vous devez essayer. TShark est l'équivalent de Wireshark GUI, qui fournit des informations précieuses sur le trafic capturé sur votre réseau.
Une chose qui rend cela génial est qu'au lieu de cliquer sur plusieurs boutons et de parcourir différents menus, vous pouvez taper une seule commande pour obtenir les informations dont vous avez besoin.
Continuez à lire et ne perdez plus jamais des heures à analyser vos captures de paquets !
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants.
- Une machine Linux – Ce didacticiel utilise Ubuntu 20.04 LTS, mais toutes les distributions Linux fonctionneront.
- Un utilisateur non root avec des privilèges sudo.
- Wireshark installé sur votre machine.
Installer TShark sur Ubuntu
TShark n'est pas installé par défaut sur votre distribution Linux, donc avant de pouvoir en profiter, lancez ce didacticiel en installant TShark sur votre machine.
À l'aide de votre gestionnaire de packages, vous pouvez installer sur la plupart des distributions Linux et des systèmes d'exploitation BSD. Mais pour cette démo, vous allez installer à l'aide du gestionnaire de packages APT.
1. Exécutez le apt update
commande ci-dessous pour vous assurer que votre gestionnaire de packages est à jour. Cette commande met à jour la liste des packages de votre système et leurs versions actuelles.
sudo apt update -y
2. Ensuite, exécutez le apt install
commande ci-dessous pour installer l'outil de ligne de commande TShark sur votre machine.
sudo apt install tshark -y
3. Exécutez le tshark --version
ci-dessous pour vous assurer que l'outil est disponible sur votre système.
tshark --version
Vous obtiendrez une sortie comme celle ci-dessous. Au moment d'écrire ces lignes, la version actuelle est la 3.4.8, mais votre version peut être différente.
4. Enfin, exécutez le tshark --help
commande ci-dessous pour voir toutes les commandes disponibles. Commandes
tshark --help
Vous pouvez utiliser plusieurs de ses commandes, comme indiqué ci-dessous, pour obtenir des informations sur les données capturées dans votre réseau. Cette sortie n'affiche qu'un petit nombre des commandes disponibles. Vous apprendrez l'utilisation de base de certaines de ces commandes dans les sections suivantes.
Capturer tous les paquets d'une interface réseau
Maintenant qu'il est installé, vous pouvez capturer des paquets et analyser les données réseau capturées. Vous pouvez capturer des données réseau à l'aide d'une interface spécifique, mais avant de capturer des données, vous devez démarrer et spécifier l'interface réseau sur laquelle vous allez capturer des données.
1. Exécutez le tshark
commande pour lister toutes les interfaces réseau disponibles (-D
) que T-shark peut trouver, même les anciens et les inactifs.
sudo tshark -D
Vous verrez une liste des interfaces disponibles sur votre système, comme indiqué ci-dessous. Si plusieurs cartes réseau sont installées sur votre système, exécutez toujours la commande tshark -D avant de démarrer et de spécifier une interface.
2. Ensuite, exécutez le ip link
commande ci-dessous (sur les systèmes Linux et BSD) pour répertorier toutes les interfaces réseau actives. Vous devez sélectionner une interface réseau active à utiliser.
Bien que TShark répertorie toutes les interfaces réseau de votre système, toutes ne sont peut-être pas actives à ce moment-là.
sudo ip link show
Dans la plupart des cas, vous utiliserez une interface réseau, telle qu'une carte Ethernet. Dans cet exemple, notez eth0, comme indiqué ci-dessous, pour capturer les paquets.
3. Enfin, exécutez le tshark
suivant commande pour sélectionner une interface (-i
) et capturer les paquets en direct. Remplacer interface
avec l'interface que vous avez notée à l'étape deux.
sudo tshark -i interface
Une fois que vous commencez à capturer des données, vous verrez les paquets affichés en temps réel, comme indiqué ci-dessous. Et à tout moment, vous pouvez appuyer sur Ctrl+C pour arrêter de capturer des paquets.
Comme d'autres outils d'analyse de paquets de réseau de données populaires, tels que tcpdump et Wireshark, Tshark utilise le bibliothèque pcap (libpcap) pour capturer les paquets. Dans ce cas, la bibliothèque pcap est utilisée pour capturer les paquets de l'interface eth0.
Comme vous le voyez ci-dessous, il imprime la forme décodée des paquets capturés, chaque ligne dans un format lisible par l'homme sur la sortie standard (stdout) de votre terminal.
Capturer un nombre spécifique de paquets
Supposons que vous souhaitiez analyser un nombre spécifique de paquets. Si c'est le cas, au lieu de capturer tous les paquets, spécifiez le nombre de paquets à capturer et analysez-les directement.
Pour capturer un nombre spécifique de paquets, vous ajouterez le -c
option (capturer le nombre de paquets) dans le tshark
commande.
Exécutez la commande suivante pour capturer les 10 premiers paquets (-c 10
) pour vérifier si les paquets sont acheminés vers tshark
correctement. Remplacer 10
avec votre nombre préféré de paquets à capturer.
sudo tshark -i eth0 -c 10
Si vous préférez capturer les paquets et supprimer l'affichage des paquets, ajoutez le -q
à la place. Le -q
L'option est pratique si vous voulez seulement voir le nombre total de paquets capturés et ne voulez pas faire défiler les sorties sur votre terminal en continu.
Exécutez la commande ci-dessous pour capturer les paquets lors de la suppression (-q
) les sorties.
sudo tshark -i eth0 -q
Dès que vous appuyez sur Ctrl+C, TShark imprime le nombre total de paquets capturés dans le terminal. Ci-dessous, vous pouvez voir un total de 84 paquets capturés.
Capturer des paquets spécifiques par chaîne de filtre
Peut-être que le nombre de paquets capturés est trop important et qu'il est presque impossible de rechercher une chaîne spécifique en utilisant uniquement vos yeux. Dans ce cas, vous devrez utiliser un filtre pour capturer les paquets par la chaîne de votre choix.
Vous utiliserez les expressions de filtre de capture de TShark pour sélectionner les paquets en fonction des protocoles, des paires hôte/port source/destination, etc. Par exemple, votre connexion SSH ne fonctionne pas et vous souhaitez capturer uniquement les paquets liés à la connexion SSH.
Exécutez la commande ci-dessous pour capturer et filtrer les paquets (-f
) avec le tcp port 22
chaîne.
sudo tshark -i eth0 -f "tcp port 22" -c 10
Si le filtre de chaîne ne suffit pas, vous pouvez également utiliser le filtre d'affichage après avoir exécuté un filtre de capture pour affiner votre recherche et analyser des paquets spécifiques. Le filtre d'affichage tire parti des opérateurs de comparaison (!==,===,==, etc.) pour tester des chaînes, des modèles ou des séquences d'octets.
Vous pouvez également utiliser des opérateurs booléens (et, ou, non) et des regroupements avec des parenthèses pour spécifier des expressions plus complexes.
Par exemple, après avoir trouvé les adresses IP que vous utilisez pour vous connecter à SSH, vous souhaitez maintenant approfondir les paquets. Dans ce cas, vous utiliserez le == (Opérateur égal (tout si plus d'un)), comme indiqué ci-dessous.
Exécutez le tshark
commande ci-dessous pour capturer et afficher le premier 10
paquets filtrés (-Y
) lié au 69.28.83.134
Adresse IP.
sudo tshark -i eth0 -Y 'ip.addr == 69.28.83.134' -c 10
Vous pouvez voir que la sortie ci-dessous affiche uniquement les paquets liés au 69.28.83.134 Adresse IP.
Enregistrement des paquets capturés dans un fichier
L'affichage des paquets capturés en temps réel vous permet d'agir immédiatement pour le dépannage. Mais peut-être que vous n'avez pas le temps de résoudre les problèmes pour le moment. Alors pourquoi ne pas enregistrer les paquets capturés dans un fichier ? Par exemple, votre connexion SSH a bien fonctionné, et tout à coup la connexion n'est pas disponible.
Faire défiler les paquets dans le terminal ne donnera pas toujours des informations pour comprendre la cause du problème. Dans ce cas, vous pouvez utiliser TShark pour enregistrer les paquets capturés et les partager avec vos amis ou collègues qui, selon vous, peuvent vous aider.
Exécutez la commande ci-dessous pour stocker les paquets capturés dans un fichier .pcap
dossier. La commande effectue les actions suivantes :
- Définit l'option de tampon circulaire de capture (
-b
), ce qui fait apparaître le mode fichiers multiples. Dans ce mode, TShark écrit les paquets capturés dans des fichiers numérotés. Une fois que la taille du premier fichier est pleine, TShark passe au fichier suivant, et ainsi de suite.
- Demande à TShark de créer 10 fichiers (
-a files:10
) contenant les paquets capturés dans le mode de fonctionnement du tampon circulaire, chaque fichier contenant1024
Ko (1 Mo). Si vous n'ajoutez pas lefiles
option, le mode de fonctionnement du tampon en anneau fonctionnera indéfiniment jusqu'à ce que votre espace disque soit plein ou qu'une condition d'arrêt se produise.
Il n'y a pas de limite au nombre de fichiers que vous pouvez utiliser avec cette option. Mais notez que la taille totale de tous les fichiers dans le mode de fonctionnement de la mémoire tampon circulaire ne peut pas dépasser 2 Go. Une fois cette limite atteinte, TShark s'arrête et attend que vous libériez de l'espace disque en supprimant certains fichiers avant de continuer.
- Écrit les paquets dans un fichier (
-w
), dans ce cas,ata.pcap
, pendant que vous exécutez votre capture sur une interface spécifique (eth0
).
sudo tshark -i eth0 -f "tcp port 22" -b filesize:1024 -a files:10 -w ata.pcap
TShark ne vous montre pas la progression de l'écriture et le nombre continu de paquets capturés lors de l'écriture dans un fichier. Vous ne verrez que le nombre de paquets capturés, comme indiqué ci-dessous.
Maintenant, appuyez sur CTRL + C pour arrêter le processus d'écriture à un moment donné. Vous aurez un nouveau fichier, comme indiqué ci-dessous, contenant les paquets capturés pendant la session.
Vous pouvez maintenant partager ce fichier avec votre ami et continuer à déboguer le problème ensemble !
Conclusion
Dans ce tutoriel, vous avez appris à installer TShark sur une machine Ubuntu. Vous avez également appris à ajouter des filtres pour rechercher des paquets capturés spécifiques et écrire des paquets capturés dans un fichier.
À ce stade, vous comprenez déjà TShark et ses options de ligne de commande de base pour gérer les paquets. Vous pouvez maintenant commencer à résoudre les problèmes de réseau par vous-même ou en faire une raison de créer des liens avec des amis !
Avec ces nouvelles connaissances, pourquoi ne pas installer Tshark avec Wireshark pour surveiller les paquets dans AWS EC2 ? Ou peut-être mesurer le débit d'un flux vidéo ?