53 votes

Comment puis-je identifier le processus qui génère du trafic UDP sous Linux ?

Ma machine fait continuellement des demandes de trafic udp dns. ce que j'ai besoin de savoir c'est le PID du processus qui génère ce trafic.

Dans le cas d'une connexion TCP, la méthode normale consiste à utiliser netstat/lsof et à obtenir le processus associé au pid.

Avec UDP, la connexion est statique, de sorte que lorsque j'appelle netastat/lsof, je ne peux la voir que si le socket UDP est ouvert et qu'il envoie du trafic.

J'ai essayé avec lsof -i UDP et avec nestat -anpue mais je n'arrive pas à savoir quel processus effectue cette requête car j'ai besoin d'appeler lsof/netstat exactement au moment où le trafic udp est envoyé, si j'appelle lsof/netstat avant/après l'envoi du datagramme udp, il m'est impossible de voir la socket UDP ouverte.

Appeler netstat/lsof exactement quand 3/4 paquets udp sont envoyés est IMPOSSIBLE.

Comment puis-je identifier le processus infâme ? J'ai déjà inspecté le trafic pour essayer d'identifier le PID envoyé à partir du contenu du paquet, mais il n'est pas possible de l'identifier à partir du contenu du trafic.

Quelqu'un peut-il m'aider ?

Je suis root sur cette machine FEDORA 12 Linux noise.company.lan 2.6.32.16-141.fc12.x86_64 #1 SMP Wed Jul 7 04:49:59 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux

4voto

Vemonus Points 62879

Sachez que lors de l'utilisation d'autitctl, nscd, par exemple, utilise un paramètre légèrement différent dans l'appel système socket, lorsqu'il effectue une requête DNS :

socket(AF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP)

Pour être sûr d'attraper ces requêtes en plus de celles mentionnées ci-dessus, vous pouvez donc ajouter un filtre supplémentaire, avec le même nom si vous le souhaitez :

auditctl -a exit,always -F arch=b64 -F a0=2  -F a1=2050 -S socket -k SOCKET

Ici, 2050 est un OU bit à bit de SOCK_DGRAM (2) et SOCK_NONBLOCK (2048).

La recherche portera alors sur ces deux filtres avec la même clé, SOCKET :

ausearch -i -ts today -k SOCKET

Les valeurs hexadécimales des constantes de socket ont été trouvées ici : https://golang.org/pkg/syscall/#pkg-constants

Comme je n'ai pas de points de réputation à commenter, j'ai ajouté ceci.

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