{{tag>sniffer réseau}} ======TCPdump====== **TCPdump** est un outil d'analyse réseau qui permet de sniffer (en mode promiscuité ou non) les paquets que reçoit une interface réseau de la machine. Une version pour Windows existe : Windump. Son utilisation classique est la suivante : tcpdump A la fin d'une capture, on a le retour suivant : 0 packets captured 130 packets received by filter 35 packets dropped by kernel * **packets captured** indique le nombre de paquet capturés * **packets received by filter** apparemment sa signification dépend de l'OS ; en général cela semble indiquer les paquets qui sont arrivés sur l'interface réseau mais pas encore transmis à la libpcap. * **packets dropped by kernel** sont les paquets supprimés par manque de ressources. Cela vient du fait que le processeur n'arrive pas à traiter les paquets à la vitesse ou ils arrivent ; ça arrive donc quand on sniffe un trop gros débit. Différentes solutions existent pour l'éviter : * utiliser des filtres pour baisser la charge CPU * augmenter le buffer de réception des sockets : Pour connaitre la taille du buffer (taille par défaut et taille max) de réception d'une socket : sysctl net.core.rmem_default net.core.rmem_default = 110592 sysctl net.core.rmem_max net.core.rmem_max = 131071 On peut l'augmenter ainsi (attention, cela peut avoir un impact sur la stabilité de la machine, le faire en connaissance de cause !) : sysctl net.core.rmem_max=1013760 sysctl net.core.rmem_default=1013760 =====Paramètres===== * ''-D'' : permet de lister les interfaces réseaux détectées par tcpdump * ''-i '' (**i**nterface) pour spécifier de sniffer une interface réseau particulière (ex : ''-i eth0'') * ''-s '' pour ne capturer que les //// premiers octets de chaque paquet. * ''-c '' (**c**ount) : pour stopper la capture après paquets * ''-e'' affiche les entêtes de niveau 2 OSI (état de lien) * ''-n'' (**n**umeric) capturer au format numérique = ne résout pas les noms de machines * ''-nn'' ne résoud pas non plus les numéros de ports TCP/UDP * ''-v[v[v]]'' (**v**erbose) résultat plus ou moins verbeux * ''-X[X]'' : pour afficher le contenu du paquet en hexadécimal * ''-F '' : permet de spécifier les filtres dans un fichier externe. Les filtres de la ligne de commande sont ignorés. * ''-p'' (**p**romiscuous) : ne met pas l'interface d'acoute en mode promiscuité * ''-r '' (**r**ead file) lire un fichier pcap * ''-w '' (**w**rite file) pour enregistrer les paquets capturés dans un fichier plutôt que de les afficher sur le terminal. L'enregistrement se fait au format pcap * ''-C '' utilisé avec ''-w'', permet diviser la sortie de la capture dans des fichiers de Mo maximum * ''-S'' : pour afficher les numéros de séquence absolu ; cela permet de corréler une trace tcpdump avec des logs d'autres équipements (firewalls par exemple). * ''-Q|-P '' : capturer les paquets dans une direction, possible entre "in", "out" ou "inout" =====Filtres===== * par protocole : ''tcp, icmp, udp, arp, ip, ip6, ppp, ...'' * par adresse Ethernet : ''ether '' * par IP : ''host '' * par réseau IP : ''net /'' * par port : ''port '' * par plage de ports : ''portrange -'' * source ou destination (s'utilise avec les adresses, les ports ; ex : ''scr host X.X.X.X'') : ''src|dst'' * par taille de paquet (égal ou inférieur/supérieur à) : ''[less|greater] '' * par vlan (dot1q) : ''vlan []'' * par label MPLS : ''mpls [