web-dev-qa-db-fra.com

Capturez le trafic entrant dans tcpdump

Dans tcpdump, comment puis-je capturer tout le trafic IP entrant destiné à ma machine? Je me fiche de mon trafic local.

Dois-je simplement dire:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes

... ou est-ce que je manque quelque chose?

24
Ricky Robinson

Dans Bash Shell, essayez ceci:

tcpdump -i eth0 tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

ou cette formulation équivalente:

tcpdump -i eth0 ip proto \\tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

Sur mon système, cela résout quelque chose comme:

tcpdump -i eth0 tcp and dst Host 10.0.0.35 and not src net 10.0.0.0/24

Si vous voulez voir tout le trafic vers votre hôte de destination, pas seulement TCP trafic de protocole, vous pouvez le faire:

tcpdump -i eth0 dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

Quelques notes:

  1. J'ai changé $myIpAddress/$myNetworkBytes à $MyNetworkAddress/$myNetworkBytes. C'est parce que l'intention apparente de votre règle est d'exclure le trafic de votre réseau local, et la manière correcte pour spécifier une adresse réseau est de spécifier l'adresse IP la plus basse du réseau (qui est appelée l'adresse réseau)/netmask. Si vous spécifiez une adresse autre que l'adresse la plus basse de la plage pour un réseau avec un masque de réseau de $ myNetworkBytes, vous obtiendrez le message d'erreur:

    tcpdump: non-network bits set in "10.0.0.3/24"
    
  2. Dans le premier exemple, 'tcp' est un mot-clé dans le langage d'expression libpcap (man pcap-filter), tandis que dans le second exemple, 'tcp' est utilisé comme valeur de ip proto. Afin d'indiquer que le "tcp" dans la deuxième instance est une valeur et non un autre mot-clé "tcp", je dois échapper au "tcp" avec une double barre oblique inverse. Il doit s'agir d'une double barre oblique inverse afin que l'interpréteur Bash transmette une seule barre oblique inverse à l'interpréteur libpcap (Bash mange la première barre oblique inverse, libpcap obtient la seconde). habitude de citer deux fois toute la partie expression de la commande:

    tcpdump -i eth0 "ip proto \tcp and dst Host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"
    
  3. Pour éviter les avertissements et les surprises, il est préférable d'utiliser le spécificateur d'interface -i eth0 ou l'interface que vous souhaitez. Toutes les interfaces n'ont pas nécessairement une adresse IP attribuée et sans être spécifique, vous pourriez voir du trafic que vous n'aviez pas l'intention de voir. Cela est particulièrement vrai sur les systèmes sur lesquels le gestionnaire de réseau est en cours d'exécution, qui semble avoir sa propre opinion sur les interfaces à ajouter et quand.

23
Eli Rosencruft

Rien de ce qui précède ne fonctionne très bien pour une boîte avec plusieurs IPS.

Cela a très bien fonctionné pour moi sur un serveur DNS avec beaucoup d'ips liés:

tcpdump -l -n -i pub dst port 53 and inbound

Peut ne pas fonctionner sur toutes les versions de tcpdump.

# tcpdump -V
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0
14
krad

-Q direction --direction = direction Choisissez la direction d'envoi/réception pour laquelle les paquets doivent être capturés. Les valeurs possibles sont in',out 'et `inout'. Non disponible sur toutes les plateformes.

4
LolMafia