Eu tenho um serviço, mantendo uma certa porta aberta.
Estou obtendo dados para ele, que não espero nem desejo obter, e estou tentando identificar a fonte desses dados. Então, como posso encontrar qual processo que envia dados para uma porta específica, em oposição a qual processo está escutando.
fonte
Tente o seguinte:
Ou:
Para evitar o resultado do host local:
Para listar apenas conexões ESTABELECIDAS:
fonte
Dependendo do tipo de conexão que ele estabelece para enviar dados, uma dessas abordagens o levará a algum lugar.
Use
tcpdump port 1234
para adquirir os dados que estão sendo enviados para esta porta. Você pode usar um programa como o Wireshark para analisá-lo em outra máquina (capturada em um arquivo usando a-w
opção). Como alternativa, use o Wireshark diretamente.Caso ele estabeleça e mantenha aberta uma conexão tcp / udp, você poderá usar
netstat
para encontrar o IP remoto da conexão.Liste os soquetes abertos de um processo, como na resposta fornecida por @StephaneChazelas.
fonte
Você pode usar o
sockstat
comando para encontrar o processo que iniciou a conexão com seu serviço no host local.Basta combinar todas as conexões de origem com o seu destino. Isso funciona bem para soquetes TCP / UDP / UNIX.
fonte
No Solaris, a execução de pfiles em todos os processos deve mostrar quais processos têm quais conexões abertas. Isso exigirá uma filtragem cuidadosa, provavelmente usando as opções -A, -B do ggrep ...
No Linux,
netstat -anp --inet
funcionará, mesmo sem o lsof instalado. (solte o--inet
para obter soquetes de domínio Unix também)fonte