118 votes

Comment puis-je capturer le trafic réseau d'un seul processus ?

J'aimerais examiner le trafic réseau géré par un seul processus, mais les simples captures de réseau ne fonctionneront pas car j'ai affaire à un système très actif (beaucoup d'autres trafics se produisent en même temps). Existe-t-il un moyen d'isoler un tcpdump o wireshark au trafic réseau d'un seul processus spécifique ? (En utilisant netstat est insuffisante).

13voto

szymon Points 131

J'ai rencontré un problème similaire et j'ai pu le résoudre en me basant sur les éléments suivants cette réponse par ioerror en utilisant NFLOG comme décrit aquí :

# iptables -A OUTPUT -m owner --uid-owner 1000 -j CONNMARK --set-mark 1
# iptables -A INPUT -m connmark --mark 1 -j NFLOG --nflog-group 30 
# iptables -A OUTPUT -m connmark --mark 1 -j NFLOG --nflog-group 30 
# dumpcap -i nflog:30 -w uid-1000.pcap

Ensuite, vous pouvez créer l'exécution du processus en question à partir d'un compte utilisateur qui ne fait rien d'autre - et voilà, vous venez d'isoler et de capturer le trafic d'un seul processus.

Je voulais juste poster un message au cas où ça aiderait quelqu'un.

9voto

J'ai écrit une application C qui fait ce qui est décrit dans l'excellente réponse ci-dessus par felahdab !

Voir ici : nsntrace github repo

6voto

Yorick Sijsling Points 310

Vous pouvez essayer tracedump - http://mutrics.iitis.pl/tracedump

Il fait exactement ce que vous voulez, vous pouvez lui donner un ID de processus ou un programme à exécuter.

5voto

hwiechers Points 4717

Essayez d'exécuter le processus qui vous intéresse sous strace :

strace ping www.askubuntu.com

Il vous donnera des informations très détaillées sur ce que fait votre processus. Comme un processus peut ouvrir tous les ports qu'il veut où il veut, en utilisant un filtre prédéfini, vous pouvez manquer quelque chose.

Une autre approche consisterait à utiliser une machine virtuelle dépouillée ou une machine de test sur votre réseau, et à y placer votre processus de manière isolée. Vous pouvez alors simplement utiliser Wireshark pour tout attraper de cette machine. Vous serez pratiquement sûr que le trafic que vous capturerez sera pertinent.

5voto

yrp Points 2931

C'est un sale hack mais je suggérerais soit un détournement ou une cible de log avec iptables pour un UID donné. eg :

iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $USER -m tcp -j LOG 
iptables -t nat -A OUTPUT -p udp -m owner --uid-owner $USER -m udp -j LOG 

Il pourrait également être utile de chercher quelque chose comme '--log-tcp-sequence', '--log-tcp-options', '--log-ip-options', '--log-uid' pour cette cible d'enregistrement. Bien que je pense que cela ne vous aidera qu'à post-traiter un pcap qui inclut une tonne d'autres données.

La cible NFLOG peut être utile si vous voulez marquer des paquets et ensuite certains paquets marqués seront envoyés sur une socket netlink à un processus de votre choix. Je me demande si cela serait utile pour pirater quelque chose avec wireshark et votre application spécifique s'exécutant sous un utilisateur spécifique ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X