Tcpdump pour vérifier qui obstrue le réseau. Installation et utilisation de tcpdump. Forfaits de recherche de réseau

L'utilitaire tcpdump est un outil très puissant et populaire pour intercepter et analyser les paquets réseau. Il vous permet de visualiser tous les paquets entrants et sortants d'une interface spécifique et fonctionne en ligne de commande. Bien sûr, vous pouvez utiliser Wirshark pour analyser les paquets réseau, c'est un utilitaire graphique, mais il arrive parfois que vous deviez travailler uniquement dans le terminal.

Tcpdump n'est pas pire que Wireshark et possède toutes les capacités nécessaires pour analyser les paquets. De plus, vous pouvez enregistrer tous les paquets interceptés dans un fichier pour les analyser ultérieurement en utilisant le même Wireshark. Dans cet article, nous verrons comment utiliser tcpdump pour intercepter les paquets réseau.

De nombreuses distributions sont livrées avec la commande tcpdump par défaut, mais si votre distribution ne l'a pas, vous pouvez très facilement l'installer à partir des référentiels officiels. Par exemple, dans Ubuntu/Debian :

sudo apt installer tcpdum p

Sur Fedora/Red Hat/CentOS :

sudo miam installer tcpdump

Une fois l'installation terminée, vous pouvez passer au travail.

commande tcpdump

Avant de passer aux exemples d'utilisation de l'utilitaire, examinons sa syntaxe et ses options de base. La commande a la syntaxe suivante :

$ options tcpdump -i filtres d'interface

Lors de votre appel, vous devez passer par l'interface que vous surveillerez. Si l'interface n'est pas spécifiée, la première de la liste sera utilisée. Les options configurent l'affichage et les capacités de base de l'utilitaire, et les filtres vous permettent de filtrer les packages inutiles. Voyons maintenant les principales options :

  • -UN- afficher tous les packages au format ASCII ;
  • -c- fermer le programme après avoir intercepté le nième nombre de paquets ;
  • -C- lors de l'écriture de packages dans un fichier, vérifiez la taille du fichier, et si elle est plus grande que celle spécifiée, créez un nouveau fichier ;
  • -D- afficher une liste des interfaces réseau disponibles ;
  • -e- afficher les informations de niveau de connexion pour chaque paquet, cela peut être utile, par exemple, pour afficher l'adresse MAC ;
  • -f- afficher le nom de domaine pour les adresses IP ;
  • -F- lire les packages depuis un fichier, pas depuis une interface ;
  • -G- créer un nouveau fichier journal après une période de temps spécifiée ;
  • -H- détecter les en-têtes 802.11s ;
  • -je- nom de l'interface d'interception des paquets. Vous pouvez capturer des paquets de toutes les interfaces ; pour ce faire, spécifiez-en ;
  • -JE- passer l'interface en mode moniteur pour capturer tous les paquets qui passent ;
  • -j- définir le format d'horodatage pour l'enregistrement des paquets ;
  • -J- afficher les horodatages disponibles ;
  • -K- ne vérifiez pas les sommes de contrôle des paquets ;
  • -l- ajouter un support de défilement à la sortie ;
  • -L- afficher les protocoles de connexion pris en charge pour l'interface ;
  • -n- ne pas afficher les noms de domaine ;
  • -r- lire les packages à partir d'un fichier créé avec -w ;
  • -v, -vv, -vvv- une sortie plus détaillée ;
  • -q- afficher un minimum d'informations ;
  • -w- écrire la sortie dans un fichier ;
  • -Z- l'utilisateur pour le compte duquel les fichiers seront créés.

Ce ne sont pas toutes les options, mais elles suffiront à résoudre la plupart des problèmes. Nous utiliserons des filtres plus souvent. À l'aide de filtres, vous pouvez filtrer uniquement les types de paquets que vous souhaitez voir. Vous pouvez filtrer par adresse IP, protocole, réseau, interface et bien d'autres paramètres. Mais nous examinerons les filtres tcpdump à l'aide d'exemples.

Comment utiliser tcpdump

Avant de commencer à utiliser tcpdump, vous devez déterminer quelles interfaces réseau vous pouvez utiliser. Pour ce faire, exécutez la commande avec l'option -D :

Commençons par examiner les exemples de tcpdump en capturant le trafic sur l'interface eth0 ; pour moi, il s'agit de l'interface principale connectée à Internet. Le programme nécessite des droits de superutilisateur pour s'exécuter, alors n'oubliez pas d'utiliser sudo :

sudo tcpdump -i eth0

Pour arrêter la commande, appuyez sur Ctrl+C. Dans la sortie, vous verrez immédiatement tous les paquets interceptés. Le format d'enregistrement de chaque package ressemblera à ceci :

13:03:41.795599 IP udp032919uds.hawaiiantel.net.6881> 192.168.1.2.52055 : Flags [.], seq 640160396:640161844, ack 436677393, win 2050, options, longueur 1448

Ce format est typique des paquets de données ; selon le protocole, le texte surligné en noir sera différent. Vient d’abord l’horodatage, puis le protocole, puis l’adresse IP de l’expéditeur est verte et l’adresse du destinataire, dans ce cas, notre ordinateur, est bleue. Viennent ensuite les paramètres TCP supplémentaires et à la fin la taille du paquet en octets. Le détail de la sortie peut être contrôlé à l'aide des options -v. Par exemple :

sudo tcpdump -v -i eth0

Les informations sur le protocole IP apparaissent déjà ici :

IP (tos 0x0, ttl 64, identifiant 50309, décalage 0, drapeaux, proto TCP (6), longueur 64)

Nous pouvons trouver des informations sur la durée de vie du paquet TTL, la version du protocole TCP et la longueur du champ d'en-tête. L'option -vv affichera la vérification de la somme de contrôle et le contenu du package dans certains cas.

Après les options, vous pouvez spécifier des filtres pour les paquets. Voici les principaux paramètres par lesquels vous pouvez filtrer les paquets :

  • hôte- nom d'hôte ;
  • adresse IP- Adresse IP ;
  • proto- protocole ;
  • filet- adresse de réseau ou de sous-réseau ;
  • port- l'adresse du port ;
  • src- paramètre lié à l'expéditeur ;
  • heure d'été- paramètre lié au destinataire ;
  • Les protocoles suivants sont disponibles : éther, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp Et UDP.

Vous pouvez combiner tout cela entre eux pour obtenir le résultat souhaité. Regardons plus en détail à l'aide d'exemples. Filtrons uniquement les paquets adressés à notre ordinateur :

sudo tcpdump -i eth0 ip dst 192.168.1.2

Nous pouvons également sélectionner les paquets envoyés à un nœud spécifique :

sudo tcpdump -i eth0 hôte dst google-public-dns-a.google.com

Comme vous pouvez le voir, ce sont des paquets DNS et au lieu d’indicateurs TCP, ils contiennent des informations utiles, une demande d’adresse IP de l’hôte. Vous pouvez également sélectionner des paquets de réponse provenant d'un hôte spécifique :

sudo tcpdump -i eth0 src hôte google-public-dns-a.google.com

Ce n'est pas le contenu complet du package, si vous souhaitez l'obtenir, vous devez utiliser l'option -v ou -vv :

sudo tcpdump -vv -i eth0 hôte dst google-public-dns-a.google.com

Avec l'opérateur et , vous pouvez combiner plusieurs filtres en un seul :

sudo tcpdump -i eth0 hôte dst google-public-dns-a.google.com et hôte src google-public-dns-a.google.com

Les opérations de fusion disponibles sont et et ou, et vous pouvez également utiliser des parenthèses pour indiquer la priorité. Vous n'avez pas besoin de spécifier l'hôte, dans de nombreux cas, src ou dst suffisent, l'utilitaire lui-même comprendra ce que cela signifie. La même conception exacte peut être utilisée pour les ports. Par exemple, nous pouvons filtrer toutes les requêtes ou réponses au DNS (sur le port 53) :

sudo tcpdump -vv -i eth0 port 53

La même chose peut être faite pour http (port 80) :

sudo tcpdump -vv -i eth0 port 80

Naturellement, dst et src peuvent également être utilisés ici pour des résultats plus spécifiques. Vous pouvez filtrer non pas un seul port, mais toute une gamme de ports :

sudo tcpdump portrange 21-23

Si vous spécifiez l'un des protocoles, vous filtrerez uniquement les paquets de ce protocole, tels que TCP, UDP ou ARP :

sudo tcpdump -vv arp

De la même manière, vous pouvez sélectionner tous les paquets udp :

sudo tcpdump -vv udp

Un filtre par désignation de réseau est également disponible :

sudo tcpdump net 129.168.1.1/24

De plus, vous pouvez filtrer les paquets selon leur taille, par exemple moins de 32 octets :

sudo tcpdump inférieur à 32

Soit plus de 128 :

tcpdump supérieur à 128

sudo tcpdump -i eth0 -w fichier.pcap

Ce fichier peut être ouvert à l'aide de n'importe quel programme permettant de lire de tels fichiers, tel que Wireshark. Pour ouvrir les packages enregistrés dans un fichier, utilisez l'option -r :

sudo tcpdump -r fichier.pcap

Il y a encore un point auquel il convient de prêter attention. Il s'agit d'un format d'affichage du contenu des packages. Vous pouvez afficher le contenu du package au format ASCII à l'aide de l'option -A :

sudo tcpdump -A -i eth0

Vous pouvez également afficher du contenu au format HEX et ASCII, utilisez -XX pour cela :

sudo tcpdump -XX -i eth0

Conclusions

Dans cet article, nous avons vu comment utiliser tcpdump. Il s'agit d'un analyseur de réseau très puissant qui fonctionne uniquement via la ligne de commande. J'espère que ces informations vous ont été utiles et que désormais utiliser tcpdump sera beaucoup plus facile, si vous avez des questions, posez-les dans les commentaires !

Pour conclure la vidéo par une conférence sur tcpdump :

tcpdump est un puissant analyseur de ligne de commande et Libpcap, une bibliothèque portable pour capturer le trafic réseau. Tcpdump imprime une description du contenu des paquets sur une interface réseau qui correspond à une expression booléenne. Il peut également être exécuté avec le commutateur -w, ce qui lui permet d'enregistrer les données du lot dans un fichier pour une analyse ultérieure, et/ou avec l'indicateur -r, ce qui lui permet de lire le fichier de lots enregistré. En utilisant cet utilitaire, vous pouvez intercepter et également analyser le trafic réseau qui passe par le PC sur lequel ce programme est exécuté.

J'aimerais parler dans cette rubrique « Installation et utilisation de tcpdump » de l'installation de tcpdump, ainsi que de la façon de l'utiliser et de ce à quoi il est nécessaire.

Avec tcpdump vous pouvez :

  • Vous pouvez déboguer des applications réseau.
  • Vous pouvez déboguer le réseau ou l'équipement réseau dans son ensemble.

Pour installer tcpdump sur Debian/ubuntu/linux mint, vous devez exécuter :

# sudo apt-get install tcpdump

Pour installer tcpdump sur RedHat/CentOS/Fedora, utilisez :

# sudo miam installez tcpdump

Pour installer tcpdump sur MacOS, utilisez.

# Brew installe tcpdump

Utilisation de tcpdump.

Pour vérifier si tcpdump fonctionne pour nous, vous pouvez exécuter la commande :

# tcpdump -i port eth0 80

Il existe de nombreux commutateurs pour utiliser l'utilitaire tcpdump lui-même, voici une liste des plus courants :

Si vous avez besoin de savoir quels paquets sont échangés entre 21 serveurs (par exemple, votre_serveur_1 et votre_serveur_2), utilisez la commande pour cela :

# tcpdump héberge votre_serveur_1 et votre_serveur_2

Si vous avez uniquement besoin de surveiller les paquets sortants de l'hôte, exécutez :

# tcpdump src héberge votre_serveur

Si vous avez uniquement besoin de surveiller les paquets entrants en provenance de l'hôte, exécutez :

# tcpdump dst héberge votre_serveur

Vous pouvez également écouter les paquets sortants ou entrants du serveur et sur un port spécifique, pour cela, ajoutez simplement le port que vous souhaitez écouter (principalement 80, 8080 est utilisé).

Voir la liste des interfaces sur lesquelles vous pouvez écouter tcpdumt :

# tcpdump -D

Écoutez l'interface eth0 :

# tcpdump -i eth0

Écoutez sur n'importe quelle interface disponible (nécessite la version 2.2 ou supérieure du noyau Linux) :

# tcpdump -i n'importe lequel

Afficher tout à l'écran (tout ce qui est exécuté par le programme) :

# tcpdump -v

Afficher beaucoup de choses à l'écran (tout ce qui est exécuté par le programme) :

# tcpdump -vv

Affiche beaucoup de choses à l'écran (tout ce qui est exécuté par le programme) :

# tcpdump -vvv

N'affiche pas beaucoup d'informations lorsque les paquets sont capturés (pas comme le paquet standard) :

# tcpdump -q

Limiter la capture de paquets à 100 :

# tcpdump -c 100

Écrivez toutes les données (paquets capturés) dans un fichier nommé capture.cap :

# tcpdump -w capture.cap

Écrivez toutes les données (paquets capturés) dans un fichier nommé capture.cap et affichez-le à l'écran en temps réel :

# tcpdump -v -w capture.cap

Sortie des paquets du fichier capture.cap :

# tcpdump -r capture.cap

Sortez les paquets du fichier capture.cap en utilisant autant d'informations que possible :

# tcpdump -vvv -r capture.cap

L'IP et les ports de sortie au lieu des domaines sont la capture de paquets :

# tcpdump -n

Capturez tous les paquets dont l'hôte de destination est 192.138.1.1. Afficher l'IP et les ports à l'écran :

# tcpdump -n hôte dst 192.138.1.1

# tcpdump -n hôte src 192.138.1.1

Capturez tous les paquets de l’hôte 192.138.1.1. Afficher l'IP et les ports à l'écran :

# tcpdump -n hôte 192.138.1.1

Capturez les paquets où le réseau est 192.138.1.0/24. Afficher l'IP et les ports à l'écran :

# tcpdump -n dst net 192.138.1.0/24

# tcpdump -n src net 192.138.1.0/24

Capturez les paquets du réseau 192.138.1.0/24. Afficher l'IP et les ports à l'écran :

# tcpdump -n net 192.138.1.0/24

Capturez les paquets du port 23. Affichez l'IP et les ports à l'écran :

# tcpdump -n port d'heure d'été 23

Capturez les paquets des ports 1 à 1023. Affichez l'IP et les ports à l'écran :

# tcpdump -n portrange dst 1-1023

Capturez uniquement les paquets TCP avec destination sur les ports 1 à 1023. Affichez l'IP et les ports à l'écran :

# tcpdump -n tcp dst portrange 1-1023

Capturez uniquement les paquets UDP avec destination sur les ports 1 à 1023. Affichez l'IP et les ports à l'écran :

# tcpdump -n udp dst portrange 1-1023

Capturez les paquets depuis la destination où l'IP est 192.138.1.1 et le port de destination est 23. Affichage à l'écran :

# tcpdump -n "hôte dst 192.138.1.1 et port dst 23"

Capturez les paquets depuis la destination où l'IP est 192.138.1.1 et la destination via les ports 80 ou 443. Affichage :

# tcpdump -n "hôte dst 192.138.1.1 et (port dst 80 ou port dst 443)"

Capturez tous les paquets ICMP :

# tcpdump -v icmp

Capturez tous les paquets ARP :

# tcpdump -v arp

Capturez tous les paquets ICMP ou ARP :

# tcpdump -v "icmp ou arp"

Capturez tous les paquets diffusés ou multidiffusés :

# tcpdump -n "diffusion ou multidiffusion"

Capturez des paquets volumineux (500 octets) plutôt que le standard 68b :

# tcpdump -s 500

Capturez tous les octets de données dans un paquet :

# tcpdump -s 0

Visualisation des « colis lourds » :

# tcpdump -nnvvXSs 1514

Capturez les paquets ICMP avec ping et pong :

# tcpdump -nnvXSs 0 -c2 icmp

Conclusion sans beaucoup d'options :

# tcpdump -nS

Communications de base (mode très détaillé), vous pouvez voir une bonne quantité de trafic, avec verbosité :

# tcpdump -nnvvS

Un examen approfondi du trafic, en ajoutant -X pour la charge utile :

# tcpdump -nnvvXS

Affichez un paquet lourd et augmentez la longueur d'accrochage, capturant ainsi l'intégralité du paquet :

# tcpdump -nnvvXSs 1514

Vous pouvez également filtrer en fonction de parties spécifiques du package, ainsi que regrouper plusieurs conditions. Ceci est utile lors de la recherche uniquement de SYN ou de PCT, par exemple, et ces derniers pour une isolation du trafic encore plus avancée.

Montrez-moi tous les forfaits URGENT (URG) :

# tcpdump "tcp & 32!=0"

Montrez-moi tous les paquets ACKNOWLEDGE (ACK) :

# tcpdump "tcp & 16!=0"

Montre-moi tous les paquets PUSH (PSH) :

# tcpdump "tcp & 8!=0"

Montrez-moi tous les paquets RESET (RST) :

# tcpdump "tcp & 4!=0"

Montrez-moi tous les packages SYNCHRONIZE (SYN) :

# tcpdump "tcp & 2!=0"

Montrez-moi tous les packages FINISH (FIN) :

# tcpdump "tcp & 1!=0"

Montrez-moi tous les packages SYNCHRONIZE/ACKNOWLEDGE (SYNACK) :

# tcpdump "tcp=18"

Capturez les indicateurs TCP à l'aide de tcpflags :

# tcpdump "tcp & & tcp-syn != 0"

Paquets avec les indicateurs RST et SYN (vérifier) :

# tcpdump "tcp = 6"

Trafic provenant de « Evil Bit » (vérifier) :

# tcpdump "ip&128 != 0"

C’est ici que je terminerai mon article « installer et utiliser tcpdump », j’espère que tout est clair et compréhensible.

19 décembre 2011 Par Henry Van Styn
dans les HOW-TO

La capture de paquets est l'un des moyens les plus puissants d'analyser les processus réseau. Vous pouvez en apprendre beaucoup sur ce qui se passe sur un réseau en interceptant et en examinant les données brutes circulant sur les connexions réseau. Les utilitaires modernes d'analyse du trafic vous permettent de capturer, d'interpréter et de décrire les flux de données dans un style lisible par l'homme.

tcpdump est un outil essentiel d'écoute ou de reniflage du trafic, il offre de nombreuses capacités d'analyse et peut même exporter les champs de paquets interprétés vers d'autres programmes.

Si vous pensez que des utilitaires comme tcpdump perdent de leur valeur avec l'avènement d'outils graphiques comme Wireshark, détrompez-vous. Wireshark est une excellente application, mais ce n'est pas un outil universel pour absolument toutes les situations. En tant que solution universelle légère pour diverses applications (telles que les outils Unix cat, less et hexdump), tcpdump semble beaucoup plus cool. Et sa caractéristique la plus impressionnante est sa facilité d’utilisation. En tant que style comportemental, il suit une approximation du concept de « commande en une seule ligne » pour obtenir des réponses rapides en une seule étape. De plus, il peut être utilisé au sein d’une session ssh sans avoir besoin de graphiques. En prenant en charge les conventions de syntaxe de ligne de commande (telles que la sortie d'un flux de données vers une sortie standard pouvant être redirigée), tcpdump peut être utilisé dans tous les types de pipelines pour créer des utilitaires intéressants et utiles.

Dans cet article, j'examinerai quelques principes de base de l'utilisation de tcpdump et les bases de sa syntaxe.

Les bases

Avant de devenir maître dans l’utilisation de tcpdump, vous devez comprendre certains concepts fondamentaux. Premièrement, la capture de paquets est un processus passif ; elle ne modifie en rien le trafic et ne diffuse rien depuis lui-même vers le réseau. Deuxièmement, vous ne pouvez capturer que les paquets reçus par votre système. Si deux hôtes échangent des paquets directement et que ce trafic contourne votre ordinateur, vous ne verrez rien, quel que soit l'outil de surveillance. Troisièmement, vous ne pouvez capturer que les paquets destinés à votre système, sauf si l'interface réseau est mise en mode promiscuité.

Puisqu'il suppose que vous êtes intéressé par plus que les packages pour votre système, tcpdump mettra automatiquement la première interface du système (sauf si une autre est explicitement spécifiée) en mode promiscuité. Cette opération nécessite les privilèges de superutilisateur.

Anatomie des commandes tcpdump

La commande tcpdump se compose de deux parties : des options et une expression de filtre (Figure 1).

Figure 1. Exemple de commande tcpdump

L'expression de filtre détermine les paquets à capturer et les options - lesquelles afficher dans la sortie. Les options déterminent également le comportement de l'utilitaire.

Possibilités

Les options de Tcpdump suivent les conventions de ligne de commande standard, le format de l'option est donc une valeur d'indicateur. Certains indicateurs n'ont aucune valeur de paramètre car ce sont eux-mêmes des commutateurs. Par exemple, -i est suivi du nom de l'interface et -n désactive la résolution de nom via DNS.

La page de manuel décrit de nombreuses options, mais il y en a quelques-unes dont vous ne pouvez pas vous passer :

I interface : l'interface sur laquelle tcpdump écoutera le trafic ;

V, -vv, -vvv : verbosité de sortie ;

Q : mode silencieux ;

E : imprimer les en-têtes de trame de la couche de liaison (Ethernet) ;

N : résoudre les noms de domaine des hôtes ;

T : ne pas imprimer les horodatages ;

N : ne résout pas les noms de domaine des hôtes ;

S0 (ou -s 0) : capture maximale, des paquets entiers sont capturés ; dans les versions récentes de tcpdump, c'est le comportement par défaut.

Aucune des options n'est requise. Les valeurs définies par l'utilisateur modifient uniquement le comportement par défaut du programme, qui consiste à capturer sur la première interface et à imprimer les informations sur les paquets sur une seule ligne.

Filtrer les expressions
Les expressions de filtre sont des critères booléens (oui/non) permettant d'évaluer si un paquet correspond à un modèle. Tous les paquets qui ne remplissent pas les conditions spécifiées sont ignorés.

La syntaxe du filtre de paquets est puissante et transparente. Au début, il contient des mots-clés appelés « primitives », qui sont différents qualificatifs pour les paquets, ceux-ci peuvent être un protocole, une adresse, un port ou une direction. Ils peuvent être connectés les uns aux autres en chaînes à l'aide d'opérateurs et/ou, regroupés et combinés par des règles d'héritage, triés par négation.

Grâce aux noms de critères explicites, les expressions de filtre semblent généralement explicites, ce qui les rend assez faciles à construire et à comprendre. La syntaxe complète est décrite dans la page de manuel pcap-filter, et quelques exemples sont fournis ici :

ARP est un protocole simple, il est utilisé pour résoudre les adresses IP en adresses MAC des cartes réseau. Comme vous pouvez le voir ci-dessus, tcpdump décrit ces paquets de manière plutôt primitive. Les packages DNS, en revanche, seront décrits légèrement différemment :

IP 10.0.0.2.50435 > 10.0.0.1.53 : 19+ A ? linuxjournal.com. (34) IP 10.0.0.1.53 > 10.0.0.2.50435 : 19 1/0/0 A 76.74.252.198 (50)

Cela peut ne pas sembler assez clair au début, mais à mesure que vous apprendrez comment fonctionnent les différentes couches de protocoles, cela deviendra plus logique. DNS est un protocole beaucoup plus complexe qu’ARP, mais il fonctionne également à un niveau supérieur. Cela signifie que les paquets de protocole sous-jacents apparaissent également dans la sortie. Contrairement à ARP, qui n'est pas acheminé entre différents segments de réseau physique, DNS est un protocole à l'échelle d'Internet. La couche IP est utilisée pour acheminer ces paquets ; UDP est utilisé pour le transport. Cela fait du DNS un protocole de couche 5 (IP est la couche 3, UDP est la couche 4).

Les informations de couche UDP/IP contenant l'adresse source et le port sont affichées sur le côté gauche de la ligne, et les informations DNS spécifiques sont affichées sur la droite. Bien que la syntaxe soit assez condensée, elle suffit à définir les éléments de base du DNS. Le premier paquet est une demande d'adresse pour linuxjournal.com, le deuxième paquet est une réponse donnant l'adresse 76.74.252.198. Il s'agit d'une séquence typique pour les requêtes DNS simples.

Consultez la section « FORMAT DE SORTIE » de la page de manuel tcpdump pour une description complète de tous les formats de sortie dépendant du protocole. Certains paquets de protocole sont mieux visibles que d’autres dans la sortie, mais les informations importantes sont généralement faciles à trouver.

Capturer la sortie dans un fichier
En plus du mode habituel avec sortie sur la console (sortie standard), tcpdump prend également en charge un mode d'écriture de sortie dans un fichier. Le mode est activé par l'option -w, qui spécifie le chemin d'accès au fichier.

Lors de l'écriture dans un fichier, tcpdump utilise un format différent de celui lors de la sortie à l'écran. Il s'agit de ce que l'on appelle la sortie brute ; elle n'effectue pas d'analyse primaire du paquet. Ces fichiers peuvent ensuite être utilisés dans des programmes tiers tels que Wireshark, car le format des entrées du fichier suit le format universel "pcap" (un tel fichier peut être fourni à l'entrée tcpdump à l'aide de l'option -r). Cette fonctionnalité nous permet de capturer des paquets sur une machine et de les analyser sur une autre. Par exemple, vous avez Wireshark sur votre ordinateur portable. Vous n'avez pas besoin de le connecter au réseau en cours d'analyse pour analyser un fichier précédemment capturé.

Analyse des protocoles basés sur TCP
tcpdump est un analyseur de paquets, il fonctionne donc bien avec les protocoles basés sur les paquets tels que IP, UDP, DHCP, DNS et ICMP. S'il existe un "stream", ou une séquence de paquets pour établir une connexion, tcpdump ne pourra pas analyser directement ces flux et scénarios de connexion. Les protocoles tels que HTTP, SMTP et IMAP ressemblent beaucoup plus à des applications interactives du point de vue du réseau qu'à des protocoles « par paquets ».

TCP gère tous les détails de bas niveau requis pour les sessions de communication au sein des protocoles de session de manière transparente pour l'utilisateur. C'est là que les données orientées flux sont encapsulées dans des paquets (segments) qui peuvent ensuite être envoyés sur le réseau. Tous ces détails sont cachés sous la couche d’application. Par conséquent, des étapes supplémentaires sont nécessaires pour capturer les paquets de protocole orientés connexion. Étant donné que chaque segment TCP est un élément de données au niveau de l'application, les informations le concernant ne peuvent pas être utilisées directement. Pour que cela ait du sens, vous devez reconstruire complètement la session (flux) TCP à partir d’une séquence de paquets individuels. tcpdump n'a pas cette fonctionnalité. Pour analyser les protocoles de session, vous pouvez utiliser ce que j'appelle le « truc des chaînes ».

Astuce de corde
Habituellement, lors de la capture du trafic, j'entends le but d'analyser les causes de certaines erreurs. Il n’est pas nécessaire que les données soient parfaites pour être visualisées afin de comprendre les raisons de tout incident. Dans de tels cas, la rapidité de compréhension est plus importante que toute autre chose. L'astuce suivante est l'une de mes techniques tcpdump préférées. Cela fonctionne parce que :

Les segments TCP sont généralement classés par ordre chronologique ;
- les protocoles d'application basés sur du texte génèrent des paquets avec une charge de texte ;
- les données entourant le chargement du texte (par exemple, les en-têtes des packages) ne sont pas du texte ;
- Les utilitaires UNIX peuvent enregistrer le texte de la sortie binaire de l'application ;
- si vous exécutez tcpdump avec l'option -w -, cela générera des informations brutes sur la sortie standard.

En mettant le tout ensemble, nous obtenons un outil pour capturer les données de session HTTP.

De plus, vous devez être conscient que la sortie peut contenir des déchets. L'excédent peut être coupé à l'aide de l'option utilitaire strings, qui limite la longueur de la chaîne de sortie (voir man strings).

Cette astuce fonctionne très bien pour tous les protocoles basés sur du texte.

Analyse HTTP et SMTP
L'astuce de chaîne de la section précédente peut aider à capturer les données de session HTTP, malgré l'absence d'analyseur de flux intégré. Les données résultantes peuvent être « analysées » et ensuite de différentes manières.

Par exemple, vous souhaiterez peut-être vérifier la disponibilité de tous les sites dont le nom contient « davepc » en temps réel. La commande suivante, exécutée sur le pare-feu, vous aidera (en supposant que l'interface interne soit eth1) :

Ce ne sont que deux exemples simples pour illustrer les possibilités. Vous pouvez aller jusqu'à, par exemple, écrire un script Perl pour une analyse plus approfondie des chaînes reçues.

Le véritable pouvoir de tcpdump apparaît donc lorsque vous souhaitez obtenir rapidement des réponses à certaines questions sans trop d'effort. Ceci est particulièrement important lors du débogage d’applications réseau.

Débogage du routage et des connexions VPN
tcpdump peut être d'une grande aide lors du débogage d'éléments tels que les connexions VPN. Tout ce dont vous avez besoin est de comprendre sur quels hôtes quels paquets apparaissent et sur lesquels ils n'apparaissent pas.

Prenons un schéma standard pour connecter deux réseaux via une connexion VPN. Réseaux 10.0.50.0/24 et 192.168.5.0/24 (Figure 2).

Figure 2. Exemple de topologie VPN

Si cela fonctionne correctement, les hôtes des différents réseaux doivent se envoyer une requête ping. Si les pings ne répondent pas (dans ce cas, supposons qu'ils ne proviennent pas de D vers l'hôte A), nous pouvons utiliser tcpdump pour savoir où les éléments sont perdus.

Si les paquets de requête vont à l'hôte C (la passerelle distante) mais pas à D, cela indique que la connexion VPN elle-même fonctionne, mais qu'il y a des problèmes de routage. Si l'hôte D reçoit des requêtes mais n'envoie pas de réponses, cela peut indiquer qu'ICMP est bloqué. Si les réponses sont envoyées mais n'atteignent pas C, la passerelle par défaut peut être mal configurée sur D.

tcpdump instructions en russe et exemples.

-UN spécifie la sortie de chaque paquet (sans en-têtes de couche liaison) au format ASCII. Ce mode est utile pour collecter le trafic HTTP.

-c <число пакетов>spécifie que le programme se termine après avoir capturé un nombre spécifié de paquets.

-C<размер файла>spécifie s'il faut vérifier la taille du fichier de capture avant que chaque nouveau paquet y soit écrit. Si la taille du fichier dépasse le paramètre file_size, le fichier est fermé
et un nouveau fichier est créé pour écrire les packages. Pour les fichiers de capture, le nom spécifié par le paramètre -w est utilisé et, à partir du deuxième fichier, le nom est ajouté comme
numéro de dossier suffixe. La variable file_size spécifie la taille du fichier en millions d'octets (et non en mégaoctets = 1 048 576 octets).

-d spécifie la sortie d'un dump du code de correspondance de package compilé dans un format lisible par l'homme et la fin du programme.

-jj Vide le code correspondant sous forme de fragment de programme C.

-ddd affiche le code de correspondance sous la forme d'une chaîne de valeurs décimales, précédée d'une chaîne avec la valeur du compteur.

-D affiche une liste des interfaces réseau sur le système à partir desquelles tcpdump peut collecter des paquets. Chaque interface réseau possède un nom et un numéro, qui peuvent être suivis de
description textuelle de l'interface. Le nom et le numéro de l'interface peuvent être utilisés avec l'indicateur -i pour spécifier la collecte de paquets à partir d'une seule interface.

Cette option peut être très utile pour les systèmes qui ne fournissent pas d'informations sur les interfaces réseau disponibles3.

L'indicateur -D n'est pas pris en charge si tcpdump a été compilé avec une ancienne version de libpcap qui ne prend pas en charge la fonction pcap_findalldevs().

-e imprime l'en-tête de la couche de liaison sur chaque ligne du dump.

-E spécifie l'utilisation de l'algorithme et du secret spi@ipaddr pour déchiffrer les paquets ESP IPsec envoyés à l'adresse ipaddr et contenant la valeur et dans le champ Index des paramètres de sécurité
spi. La combinaison de spi et d'adresse peut être répétée en utilisant une virgule ou une nouvelle ligne comme délimiteur. Notez que la définition du secret pour les paquets ESP IPv4 dans
actuellement pris en charge.

Les algorithmes pouvant être utilisés sont des-cbc, 3des-cbc, Blowfish-cbc, rc3-cbc, cast128-cbc ou aucun. L'algorithme par défaut est des-cbc. Possibilité de décryptage
Les packages ne sont fournis que dans les cas où les options de prise en charge de la cryptographie ont été activées lors de la compilation de tcpdump.

Le paramètre secret contient le texte ASCII de la clé secrète ESP. Si le secret commence par 0x caractères, la valeur hexadécimale sera lue. L'option suppose l'utilisation
ESP selon RFC 2406, et non RFC 1827. Cette option est prise en charge uniquement à des fins de débogage et ne doit pas être utilisée avec de vraies clés privées, car celle saisie dans
ligne de commande, la clé IPsec est disponible pour les autres utilisateurs du système4.

En plus de spécifier explicitement les options sur la ligne de commande, elles peuvent être spécifiées dans un fichier d'options que tcpdump lira lorsqu'il recevra le premier paquet ESP.

-f définit la sortie des adresses IPv4 étrangères au format numérique. L'utilisation de cette option vous permet de vous débarrasser des problèmes qui surviennent sur les serveurs Sun NIS lors de la tentative de diffusion.
adresses non locales. L'étrangeté d'une adresse IPv4 est vérifiée à l'aide de l'adresse et du masque de l'interface qui a reçu le paquet. Si l'adresse et le masque de l'interface ne sont pas disponibles
(par exemple, lors de l'utilisation d'interfaces non numérotées ou lors de la capture de paquets de toutes les adresses sous Linux à l'aide d'une interface factice), cette option fonctionnera
incorrect.

-F<файл> spécifie l'utilisation des filtres contenus dans le fichier spécifié. Dans ce cas, les filtres spécifiés sur la ligne de commande sont ignorés.

-je<интерфейс> spécifie la collection de paquets de l'interface spécifiée. Si l'interface n'est pas spécifiée, tcpdump recherche dans le système une liste d'interfaces disponibles et en sélectionne le périphérique actif avec le minimum
numéro (hors bouclage).

Sur les systèmes Linux, à partir du noyau 2.2, une interface factice appelée any est prise en charge, qui assure la collecte des paquets de toutes les interfaces actives du système. Veuillez noter que les frais
les paquets provenant de l'appareil any sont effectués en mode normal (et non promiscuité).

Si le système prend en charge l'indicateur -D, vous pouvez spécifier comme argument le numéro d'interface imprimé lorsque cet indicateur est utilisé.

-l définit la mise en mémoire tampon de la ligne stdout. Cette option est utile dans les cas où vous souhaitez afficher les données lors de la collecte de paquets. Par exemple, les commandes

tcpdump -l | tee-shirt

tcpdump -l > date et queue -f date

fournir l'enregistrement des paquets dans un fichier DAT et une sortie simultanée vers la console.

-L spécifie la sortie d'une liste de types de couches de liaison connus et la fin du programme.

-m<файл> charge le module de définitions SMI MIB à partir du fichier spécifié. Cette option peut être utilisée à plusieurs reprises pour charger plusieurs modules MIB.

-n désactive la conversion des adresses et des numéros de port en noms symboliques.

-N spécifie l'utilisation de noms d'hôte uniquement, et non de noms de domaine complets. Par exemple, au lieu de lhotze.bilim-systems.net, lorsque j'utilise cette option, mon poste de travail sera
noté lhotze.

-O désactive l'optimiseur de code pour vérifier si les paquets correspondent aux conditions de filtrage. Utilisez cette option si vous estimez que l'optimiseur ne fonctionne pas correctement.

-p indique au programme que l'interface n'a pas besoin d'être mise en mode capture5. L'option -p ne peut pas être utilisée conjointement avec l'hôte Ethernet (local-hw-addr) ou le filtre de diffusion Ethernet.

-q spécifie la sortie de la quantité minimale d'informations.

-R la définition de cet indicateur suppose que les paquets ESP/AH utilisent l'ancienne version de la spécification6 et que tcpdump n'affichera pas les champs de prévention de réexécution.
lecture). Étant donné que la spécification ESP/AH n'inclut pas les champs de numéro de version, tcpdump ne peut pas déterminer la version du protocole ESP/AH à partir des en-têtes de paquets.

-r<файл> spécifie la lecture des données d'un fichier précédemment créé à l'aide de la commande tcpdump -w ou à l'aide d'un autre programme prenant en charge le format tcpdump (par exemple, Ethereal). Si dans
Le nom du fichier est défini sur - et le flux de données du périphérique d'entrée standard (stdin) est utilisé.

-S définit la sortie des numéros de séquence TCP absolus au lieu des numéros relatifs.

-s définit la capture des octets de chaque paquet snaplen au lieu des 68 octets par défaut7. Une valeur de 68 convient aux protocoles IP, ICMP, TCP et UDP mais peut entraîner une perte de
informations de protocole pour certains packages DNS et NFS. La perte de certains paquets due à la petite taille de la trame de l'instantané est indiquée dans les données de sortie par des champs du formulaire
[|proto]', où proto est le nom du niveau de protocole auquel une partie du paquet a été coupée8. Notez que l'augmentation de l'image de capture entraînera des pertes temporaires supplémentaires.
les coûts de traitement des paquets et une réduction du nombre de paquets mis en mémoire tampon, ce qui peut entraîner la perte de certains paquets. Utilisez la valeur snaplen minimale qui permettra
évitez de perdre des informations sur le protocole qui vous intéresse. Le réglage snaplen=0 capturera les paquets complets.

-T<тип> définit l'interprétation des paquets sélectionnés à l'aide du filtre en tant que paquets du type spécifié par le paramètre. Les types actuellement pris en charge sont aodv9, cnfp10, rpc11, rtp12, rtcp13,
snmp14, tftp15, tva16 et wb17.

-t désactive la sortie des horodatages dans chaque ligne de vidage.

-tt spécifie la sortie d'horodatages non formatés sur chaque ligne du dump.

-ttt spécifie la sortie des intervalles de temps (en microsecondes) entre la capture du paquet précédent et celui-ci dans chaque ligne du dump.

-tttt spécifie la sortie des horodatages au format par défaut pour chaque ligne du dump.

-u définit la sortie des handles NFS sans décodage.

-U définit le mode « mise en mémoire tampon au niveau des lots » pour les fichiers enregistrés à l'aide de l'option -w. Dans ce mode, chaque paquet est écrit dans le fichier de sortie dès qu'il est capturé
(sans attendre que le tampon de sortie se remplisse). L'indicateur -U ne sera pas pris en charge si tcpdump a été compilé avec une ancienne option libpcap qui ne prend pas en charge la fonction
pcap_dump_flush().

-v spécifie la sortie d'informations supplémentaires lors de la capture de fichiers. Ces informations peuvent inclure la valeur TTL (Time to Live), l'identification, la taille globale, les options IP, etc.
Lors de l'utilisation de cet indicateur, des contrôles supplémentaires de l'intégrité des paquets sont également effectués à l'aide de sommes de contrôle (par exemple, pour les protocoles IP et ICMP).

-vv spécifie une augmentation supplémentaire du volume d'informations de sortie (par exemple, décodage complet des paquets SMB, sortie de champs de réponse NFS supplémentaires, etc.).

-vvv définit la quantité maximale d'informations affichées (par exemple, les options telnet SB ... SE sont affichées complètement). Lorsqu'elles sont utilisées conjointement avec le commutateur -X, les options Telnet sont également affichées dans
représentation hexadécimale.

-w<файл> spécifie l'enregistrement des paquets bruts. Les paquets collectés dans un fichier peuvent ensuite être visualisés à l'aide de l'indicateur -r ou transférés vers d'autres programmes pour analyse.
(par exemple Éthéré). Si le nom du fichier est -, le fichier est écrit sur le périphérique de sortie standard (stdout).

-x spécifie la sortie d'un dump hexadécimal (sans l'en-tête de couche liaison) pour chaque paquet capturé. La quantité d'informations affichées est déterminée par la plus petite de deux valeurs -
taille du paquet et valeur du paramètre snaplen. Notez que lors de la capture de trames complètes de couche liaison, le vidage peut également inclure des octets de remplissage si le paquet de couche réseau
a une petite taille.

-xx définit la sortie d'un dump hexadécimal pour chaque paquet, y compris les en-têtes de couche liaison.

-X spécifie la sortie de vidage au format hexadécimal et ASCII sans en-têtes de couche liaison. Cette option peut s’avérer très pratique lors de l’analyse de nouveaux protocoles.

-XX spécifie la sortie de vidage au format hexadécimal et ASCII, y compris les en-têtes de couche liaison.

-y<тип> spécifie le type de couche de liaison utilisé lors de la capture des paquets. Les valeurs prises en charge peuvent être visualisées à l'aide de l'indicateur -L.

Exemples.

  • Nous captons tout le trafic sortant

tcpdump -i re0 -n -nn -ttt hôte dst 192.168.1.2

  • Nous captons tout le trafic sortant, à l'exception de notre session ssh, car il existe un flux de données très important.

tcpdump -i re0 -n -nn -ttt 'hôte dst 192.168.1.110 et non (hôte src 192.168.1.2 et port dst 22)'

  • Afficher les communications DNS

tcpdump -i re0 -n -nn -ttt 'hôte 192.168.1.110 et port 53'

  • Afficher les paquets ICMP

tcpdump -i re0 -n -nn -ttt 'proto ip \icmp'

  • Trafic circulant du réseau 10.7.20 vers la destination sur le réseau 10.7.0. ou 10.7.24.:

tcpdump -nvX src net 10.7.20.0.0/16 et dst net 10.7.0.0/8 ou 10.7.24.0/16

  • Trafic provenant du réseau 10.7.0.0 vers les ports de destination 22 ou 4589 :

tcpdump 'src 10.7.0.0 et (port dst 22 ou 4589)'

  • Visualisez le trafic sur l'interface :
  • voir le trafic d'un hôte :

hôte tcpdump 192.168.1.1

  • Visualiser le trafic sur un port :

tcpdump src port 80

  • Afficher le trafic IP vers l'hôte :

hôte IP tcpdump 192.168.1.2

  • Afficher le trafic ARP vers l'hôte :

tcpdump arp hôte 192.168.1.2

  • Nous examinons le trafic RARP vers l'hôte :

tcpdump hôte rarp 192.168.1.2

  • On regarde le trafic, à l'exception de l'hôte pav253

tcpdump n'héberge pas pav253

  • Nous regardons le trafic sur le pav253 et le pav210

tcpdump hôte pav253 ou hôte pav210

  • Nous regardons le contenu des paquets sur l'interface re0 vers le site hôte

tcpdump -X -i re0 site hôte

  • trafic icq

tcpdump -X -i re0 port aol

  • Nous examinons le contenu des paquets sur l'interface tun0 vers l'hôte ya.ru, tout en lisant 1 500 octets de chaque paquet et en ne convertissant pas l'IP en nom d'hôte

tcpdump -X -s 1500 -n -i re0 site hôte

  • Principales interactions actives

tcpdump -tn -c 10000 -i re0 tcp ou udp | awk -F "." '(imprimer $1″.”$2″.”$3″.”$4)' | \tri | uniq-c | trier -nr | maladroit '$1 > 100'

  • Nous examinons tous les paquets TCP avec l'indicateur SYN (début de session).

tcpdump -i eth0 -nn tcp == 2 et src net 192.168.1.0/24

  • Afficher les paquets syn et fin de l'extérieur

tcpdump 'tcp & (tcp-syn|tcp-fin) != 0 et non src et dst net 192.168.1.0'

  • Afficher tous les paquets http ipv4 du port 80, à l'exception des données syn/fin/ack

tcpdump 'port TCP 80 et (((ip — ((ip&0xf)<>2)) != 0)’

  • Afficher uniquement les packages de synchronisation

Tcpdump est un analyseur de réseau extrêmement pratique qui s'avère très utile à la fois pour les administrateurs réseau et les professionnels de la sécurité. Naturellement, pour obtenir un maximum d'informations lorsque vous travaillez avec tcpdump, il vous suffit de comprendre la pile de protocoles TCP/IP. Pour plus de commodité, vous pouvez utiliser des programmes plus pratiques et intelligents, par exemple, mais des situations surviennent souvent lorsqu'il n'est pas possible d'installer des services supplémentaires sur la machine testée, et alors tcpdump est tout simplement irremplaçable, car l'administrateur, dans un souci d'analyse paquets, ne souhaite pas installer X- sur un serveur Unix Windows, d'autant plus que dans la plupart des systèmes Unix, l'utilitaire tcpdump est installé par défaut.

La compréhension du protocole TCP/IP offre de larges possibilités d'utilisation de l'analyseur et de dépannage des problèmes de réseau et des problèmes en analysant les paquets. Étant donné que l'utilisation optimale de cet utilitaire nécessite une bonne compréhension des protocoles réseau et de leur fonctionnement, cela crée une situation amusante dans laquelle l'ingénieur a de toute façon besoin de connaître et de comprendre les mécanismes de transfert de données sur le réseau. y compris tcpdump est utile à tous égards : à la fois pour le dépannage et l'auto-éducation.

Vous trouverez ci-dessous plusieurs options qui vous aideront à utiliser cet utilitaire de manière plus complète et détaillée, d'autant plus que toutes ces cases et clés s'oublient assez facilement, et ces exemples sont très utiles pour vous rafraîchir la mémoire.

La première clé utilisée est -n, qui interdit les tentatives de conversion d'adresses en noms de domaine, nous donnant ainsi des adresses IP propres avec des ports.

Le second est -X qui spécifie que chaque paquet doit afficher à la fois le contenu hexadécimal et ASCII du paquet.
Et la dernière option est -S qui remplace la sortie de la numérotation TCP relative par une numérotation absolue. Le fait est qu'avec la numérotation relative, certains problèmes peuvent être cachés à votre attention.

Vous devez comprendre que le principal avantage de tcpdump par rapport aux autres utilitaires est qu'il permet une analyse détaillée et manuelle des paquets. Vous devez également vous rappeler que par défaut, tcpdump utilise uniquement les 68 premiers octets du paquet, incl. si vous avez besoin d'en voir plus, vous devez utiliser le commutateur numérique -s, où nombre est le nombre d'octets à capturer. Si le numéro 0 est spécifié, le paquet sera complètement capturé, il est donc préférable d'utiliser la valeur 1514, qui capturera complètement le paquet standard pour les réseaux Ethernet.

Liste des touches les plus couramment utilisées :
-c : vérifiez la taille du fichier de capture avant chaque prochain enregistrement du paquet capturé, si la taille est plus grande, alors le fichier est enregistré et l'enregistrement est transféré dans un nouveau fichier ;
-e : imprime l'en-tête Ethernet (couche de liaison) dans chaque ligne de vidage
-i any : écoutez sur toutes les interfaces, au cas où vous auriez besoin de tout le trafic.
-n : désactive la résolution des adresses en noms de domaine ou symboliques
-nn : désactive la résolution des adresses et des ports en noms de domaine ou symboliques
-q : sortie concise des informations en réduisant la sortie des informations de protocole.
-X : Imprimer le contenu hexadécimal et ASCII du paquet
-v, -vv, -vvv : Spécifie la sortie d'informations supplémentaires sur les paquets capturés, ce qui permet une analyse plus large.
Quelques exemples à utiliser :

# Sortie de paquet standard
tcpdump -nS
# Sortie standard étendue
tcpdump -nnvvS
# Analyse approfondie d'un package
tcpdump -nnvvXS
# Les informations trafic les plus détaillées
tcpdump -nnvvXSs 1514

Les expressions vous permettent d'effectuer une analyse plus ciblée et de spécifier les types de trafic. La possibilité d'utiliser des expressions fait de tcpdump un outil très productif entre les mains d'un administrateur système. Il existe trois principaux types d'expressions : type, dir et proto.
Les options pour l'expression de type sont host, net et port.
Pour exprimer la direction spécifiée par dir, les options existantes sont src, dst, src ou dst, et src et dst.
Quelques expressions standards :

hôte // analyse le trafic en fonction de l'adresse IP (fonctionne également avec les noms symboliques si -n n'est pas spécifié)
hôte tcpdump 1.2.3.4

src, dst // analyser le trafic uniquement pour une destination ou un émetteur spécifique
tcpdumpsrc 2.3.4.5
tcpdump dst 3.4.5.6

net // capture le trafic appartenant à un réseau spécifique
tcpdump net 1.2.3.0/24

proto // fonctionne avec TCP, UDP et ICMP. Il faut rappeler que proto n'est pas mentionné
tcpdump icmp

port // analyser le trafic d'un port spécifique (entrant ou sortant)
port tcpdump 3389

src, port dst // filtre basé sur le port entrant ou sortant
tcpdump port src 1025
tcpdump port dst 3389

Mais l'outil le plus puissant est celui des opérandes, qui vous permettent de définir des conditions pour les expressions et des options pour une isolation plus détaillée des informations sur le trafic analysé.

ET
et ou &&
OU
ou ou ||
SAUF
pas ou !

Trafic TCP provenant de la ressource 10.15.123.33 avec le port de destination 3379 :

# tcpdump -nnvvS tcp et src 10.15.123.33 et port dst 3379

Trafic venant du réseau 192.168 avec destination sur les réseaux 10 ou 172.16 :

# tcpdump -nvX src net 192.168.0.0/16 et dst net 10.0.0.0/8 ou 172.16.0.0/16

Trafic non ICMP vers la destination 192.168.0.2 et depuis le réseau 172.16 :

# tcpdump -nvvXSs 1514 dst 192.168.0.2 et src net 172.16.0.0/16 et non icmp

Trafic provenant des hôtes Eros ou Ares, mais ne allant pas vers le port SSH standard (une résolution de nom est requise pour cette expression) :

# tcpdump -vv src eros ou are et non dst port 22

Comme le montrent les exemples donnés, nous pouvons créer n’importe quelle expression pour n’importe quel objectif. De plus, grâce à une syntaxe complexe, nous pouvons exclure tout type de trafic de l’analyse.

Nous devons également nous rappeler que nous pouvons créer des requêtes incluant des groupes et des pools d’options spécifiés dans une seule requête. Mais pour que l'utilitaire tcpdump y prête attention, ils doivent être placés entre parenthèses, en prenant l'expression entre guillemets simples :
Trafic provenant de l'hôte 10.0.2.4 vers les ports de destination 3379 ou 22 :
# tcpdump 'src 10.0.2.4 et (port dst 3379 ou 22)'

Il est également possible de filtrer en fonction des drapeaux TCP, par exemple pour isoler les paquets SYN ou RST :

Analysez tous les packages URG :
# tcpdump 'tcp & 32 != 0'

Analysez tous les paquets ACK :
# tcpdump 'tcp & 16 != 0'

Analysez tous les paquets PSH :
# tcpdump 'tcp & 8 != 0'

Analysez tous les paquets RST :
# tcpdump 'tcp & 4 != 0'

Analysez tous les paquets SYN :
# tcpdump 'tcp & 2 != 0'



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :