Tengo un servicio, manteniendo un cierto puerto abierto.
Estoy obteniendo datos que no espero ni quiero obtener, y estoy tratando de señalar la fuente de estos datos. Entonces, ¿cómo puedo encontrar qué proceso que envía datos a un puerto específico, en lugar de qué proceso está escuchando?
fuente
Intenta lo siguiente:
O:
Para evitar el resultado localhost:
Para enumerar solo las conexiones ESTABLECIDAS:
fuente
Dependiendo del tipo de conexión que establezca para enviar datos, uno de estos enfoques lo llevará a alguna parte.
Use
tcpdump port 1234
para adquirir los datos que se envían a este puerto. Puede usar un programa como Wireshark para analizarlo en otra máquina (capturado en un archivo usando la-w
opción). Alternativamente, use Wireshark directamente.En caso de que establezca y mantenga abierta una conexión tcp / udp que podría usar
netstat
para encontrar la IP remota de la conexión.Enumere los sockets abiertos de un proceso como en la respuesta proporcionada por @StephaneChazelas.
fuente
Puede usar el
sockstat
comando para encontrar el proceso que ha iniciado la conexión a su servicio en el host local.Simplemente combine todas las conexiones de origen con su destino. Esto funciona bien para TCP / UDP / UNIXsockets.
fuente
En Solaris, la ejecución de archivos en todos los procesos debería mostrar qué procesos tienen qué conexiones abiertas. Se requerirá un archivo cuidadoso, probablemente utilizando las opciones -A, -B de ggrep ...
En Linux,
netstat -anp --inet
funcionará, incluso sin lsof instalado. (suelte también--inet
para obtener los sockets de dominio Unix)fuente