J'ai un service, en gardant un certain port ouvert.
Je reçois des données, que je ne m'attends ni ne veux obtenir, et j'essaie de localiser la source de ces données. Alors, comment puis-je trouver quel processus qui envoie des données vers un port spécifique, par opposition à quel processus écoute.
la source
Essayez de suivre:
Ou:
Pour éviter le résultat localhost:
Pour répertorier uniquement les connexions ÉTABLI:
la source
Selon le type de connexion qu'il établit pour envoyer des données, l'une de ces approches vous mènera quelque part.
Utilisez
tcpdump port 1234
pour acquérir les données envoyées à ce port. Vous pouvez utiliser un programme comme Wireshark pour l'analyser sur une autre machine (capturé dans un fichier en utilisant l'-w
option). Vous pouvez également utiliser Wireshark directement.Dans le cas où il établit et maintient ouverte une connexion tcp / udp, vous pouvez utiliser
netstat
pour trouver l'IP distante de la connexion.Énumérez les sockets ouvertes d'un processus comme dans la réponse fournie par @StephaneChazelas.
la source
Vous pouvez utiliser la
sockstat
commande pour trouver le processus qui a initié la connexion à votre service sur l'hôte local.Faites correspondre toutes les connexions source à votre destination. Cela fonctionne bien pour TCP / UDP / UNIXsockets.
la source
Sous Solaris, l'exécution de pfiles sur tous les processus doit montrer quels processus ont quelles connexions ouvertes. Cela nécessitera un filtrage soigneux, probablement en utilisant les options -A, -B de ggrep ...
Sous Linux,
netstat -anp --inet
fonctionnera, même sans lsof installé. (déposez le--inet
pour obtenir également les sockets de domaine Unix)la source