J'aimerais examiner le trafic réseau géré par un processus unique, mais les captures réseau simples ne fonctionneront pas, car je suis confronté à un système aussi chargé (de nombreux autres flux se produisent en même temps). Existe-t-il un moyen d'isoler tcpdump
ou de wireshark
capturer le trafic réseau d'un processus spécifique? (L'utilisation netstat
est insuffisante.)
la source
netstat
et simples filtres de capture du réseau sur une machine occupée.netstat
; Je ne pourrai attraper que des relations de longue vie. :(Pour démarrer et surveiller un nouveau processus:
Pour surveiller un processus existant avec un PID connu:
-f
est pour "suivre de nouveaux processus"-e
définit un filtre-s
définit la limite de chaînes à plus de 32-p
prend l'identifiant du processus auquel s'attacherla source
Je sais que ce fil est un peu vieux mais je pense que cela pourrait aider certains d'entre vous:
Si votre noyau le permet, il est très facile de capturer le trafic réseau d'un processus unique en exécutant ledit processus dans un espace de noms de réseau isolé et en utilisant Warshark (ou d'autres outils de réseau standard) dans ledit espace de noms.
La configuration peut sembler un peu complexe, mais une fois que vous la comprenez et que vous vous y familiarisez, cela facilitera beaucoup votre travail.
Pour le faire:
créer un espace de noms réseau de test:
créer une paire d'interfaces réseau virtuelles (veth-a et veth-b):
changez l'espace de nom actif de l'interface veth-a:
configurez les adresses IP des interfaces virtuelles:
configurez le routage dans l'espace de noms de test:
Activez ip_forward et établissez une règle NAT pour transférer le trafic provenant de l'espace de noms que vous avez créé (vous devez ajuster l'interface réseau et l'adresse IP SNAT):
(Vous pouvez également utiliser la règle MASQUERADE si vous préférez)
Enfin, vous pouvez exécuter le processus que vous souhaitez analyser dans le nouvel espace de noms, et Wharshark également:
Vous devrez surveiller l'interface veth-a.
la source
socat
.--to-source
argumentiptables
? Est-ce l'adresse IP de l'interface que vous passez à l'-o
option, une adresse IP que vous créez ou ??? J'ai essayé la version masquerade qui n'a pas besoin--to-source
, comme décrit ici , et cela a fonctionné!Cela montrera les connexions effectuées par une application, y compris le port utilisé.
la source
Juste une idée: Est-il possible de lier votre application à une adresse IP différente? Si oui, vous pouvez utiliser les suspects habituels ( tcpdump , etc.)
Outils pour les applications qui ne sont pas capables de se lier à une autre adresse IP:
http://freshmeat.net/projects/fixsrcip
http://freshmeat.net/projects/force_bind
la source
Je suis arrivé à un problème similaire et j'ai pu résoudre ce problème en me basant sur cette réponse d'ioerror , en utilisant NFLOG comme décrit ici :
Ensuite, vous pouvez créer, exécuter le processus en question à partir d’un compte utilisateur qui ne fait rien d’autre - et le tour est joué, vous venez d’isoler et de capturer le trafic d’un processus unique.
Je voulais juste renvoyer au cas où cela pourrait aider quelqu'un.
la source
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
la source
C'est un sale bidouillage, mais je suggérerais soit un renvoi, soit une cible de journal avec iptables pour un UID donné. par exemple:
Cela pourrait également valoir la peine d’examiner quelque chose comme «--log-tcp-sequence», «--log-tcp-options», «--log-ip-options», «--log-uid» pour cette cible de journal . Bien que je suspecte 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 souhaitez marquer les paquets. Par la suite, certains paquets marqués seront envoyés via un socket netlink à un processus de votre choix. Je me demande si cela pourrait être utile pour pirater quelque chose avec Wirehark et votre application spécifique exécutée en tant qu'utilisateur spécifique?
la source
Vous pouvez essayer tracedump - http://mutrics.iitis.pl/tracedump
Il fait exactement ce que vous voulez, vous pouvez lui attribuer un ID de processus ou un programme à exécuter.
la source
Essayez de lancer le processus qui vous intéresse sous strace :
Cela vous donnera des informations très détaillées sur ce que fait votre processus. En tant que processus, vous pouvez ouvrir n'importe quel port de votre choix, en utilisant un filtre prédéfini, vous risquez de rater quelque chose.
Une autre approche consiste à utiliser une machine virtuelle simplifiée ou une machine de test sur votre réseau et à y placer votre processus de manière isolée. Ensuite, vous pouvez simplement utiliser Wireshark pour tout capturer à partir de cette machine. Vous serez certain que le trafic que vous capturez sera pertinent.
la source
En me basant sur la réponse de ioerror, je suppose que vous pouvez utiliser
iptables --uid-owner
un marqueur de trafic, puis vous pouvez demander à Wireshark de ne capturer que le trafic avec ce marqueur. Vous pourrez peut-être utiliser un marqueur de services différentiels (DSCP), un identifiant de flux ou un marqueur de qualité de service.Vous pouvez également utiliser cette option pour envoyer ces paquets sur une interface différente, puis capturer uniquement sur cette interface.
la source
WireShark bug # 1184 est cette fonctionnalité. Ce n'est pas encore implémenté.
Copié à partir de l'utilisateur cmanynard à ask.wireshark.org
la source
peut-être que iptables et ulog peuvent fonctionner? Ce n’est pas que j’ai une recette exacte, mais je pense que iptables peut correspondre aux processus; une fois la correspondance obtenue, vous pouvez utiliser ulog.
la source
iptables -m owner --pid-owner $PID
été supprimé sous Linux 2.6.14: ftp.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.14Je pense que vous pouvez créer un script shell à exécuter en exécutant netstat et en le journalisant dans un fichier texte. Quelque chose comme (étapes très difficiles):
Je ne suis pas un programmeur, je ne peux donc pas affiner cela. Mais quelqu'un ici peut commencer là où je me suis arrêté et créer un script de travail pour vous.
la source