{{tag>Réseau Sniff Packet}} # Notes commande tcpdump Voir doc RedHat : * https://www.redhat.com/en/blog/packet-sniffer-basics * https://www.redhat.com/en/blog/introduction-using-tcpdump-linux-command-line * https://www.redhat.com/en/blog/troubleshoot-tcpdump * https://www.redhat.com/en/blog/tcpdump-part-one * https://www.redhat.com/en/blog/tcpdump-part-2 * https://www.redhat.com/en/blog/tcpdump-part-3 * https://www.redhat.com/en/blog/filtering-tcpdump Voir aussi : * [[Notes analyse de paquets réseau avec Wireshark|Wireshark]] ~~~bash tcpdump -s0 -C 100 -i eth0 -n -w NOUVEAU_FICHIER.cap ~~~ Les options suivantes sont souvent utilisées : * '-s taille' Spécifie la taille des paquets capturés. 0 = Pas de limite. '-s0' est souvent utilisé afin de ne pas tronquer les paquets capturés * '-i interface' Spécifie la carte réseau à utiliser. '-i any' pour toutes les cartes (dans ce cas pas de mode [mode promiscuous](https://fr.wikipedia.org/wiki/Promiscuous_mode) !). Pour connaître les options possible utiliser **tcpdump -D** ou **tcpdump --list-interfaces** * '-n' Pas de conversion des adresse en noms DNS * '-nn' Pas de conversion des numéros de port en noms * '-p' Ne pas passer en [mode promiscuous](https://fr.wikipedia.org/wiki/Promiscuous_mode). Par défaut tcpdump passe en [mode promiscuous](https://fr.wikipedia.org/wiki/Promiscuous_mode) sauf avec '-i any' * '-w fichier' Comme "Write". Suivie du nom du fichier à écrire la capture. Par convention ce fichier porte souvent l’extension .cap * '-r fichier' Comme "Read". Pour relire un fichier PCAP * '-C taille' Taille en 1 000 000 octets. Utile quant on fait un tcpdump sur un serveur distant pour ne pas occuper tout l'espace disque. * '-A' Affiche sur la sortie standard la capture en ASCII * '-l' Make stdout line buffered. Useful if you want to see the data while capturing it. E.g., ''tcpdump -l | tee dat'' Les fichiers .cap de capture réseau peuvent être ouvert à l'aide de **wireshark** par exemple. Audit flux réseaux .Voir [[audit]] ~~~bash tcpdump -p -qtn -i eth0 tcp and not host 192.168.1.11 tcpdump -p -qtn -i eth0 tcp and dst net 192.168.3.0/24 ~~~ Le reste de la commande utilise la syntaxe BPF * http://biot.com/capstats/bpf.htm * http://www.cs.ucr.edu/~marios/ethereal-tcpdump.pdf Autres exemples ~~~bash tcpdump -i eth0 src 192.168.2.100 and dst 192.168.2.11 and icmp # Dans les 2 sens tcpdump -i eth0 host 192.168.2.100 and host 192.168.2.11 and icmp ~~~ Trafique entrant (input) seulement ~~~bash tcpdump -Qin ~~~ Trafique sortant (output) seulement ~~~bash tcpdump -Qout ~~~ Web ~~~bash tcpdump -s 0 -v -n -l host 192.168.142.19 or host 192.168.238.21 or host 192.168.222.19 |egrep -i "POST /|GET /|Host:" |nl ~~~ ~~~bash tcpdump -nn -A -s1500 -l | grep "User-Agent:" ~~~ ### Autres ~~~bash tcpdump -x -X -s128 host 192.168.230.17 and host 192.168.70.235 and port 4440 -w /var/log/tcpdump.pcap tcpdump -s0 -ni 0.0:nnnp host 192.168.230.17 -vv -w /var/log/tcpdump2.pcap ~~~