descobre qual sistema está transmitindo através de uma porta específica

3

Estou usando o comando nc -lu <port no.> para encontrar na porta determinada que algum dado está recebendo ou não. Estou recebendo dados se houver transmissão (mas não sei de onde!). Existe alguma maneira que deve me fornecer o endereço IP dos transmissores ??
wireshark e nmap estão lá, mas eu quero um caminho mais curto, se possível. ATUALIZADO: acho que nc -luv é o que eu quero, mas no momento ele está mostrando apenas um IP. Eu quero saber se mais de um sistema está transmitindo através dessa porta?

    
por Tejas 16.04.2013 / 10:43

5 respostas

2

Eu gosto das respostas postadas até agora. Aqui estão algumas outras opções:

Adicione a opção -v ao nc. Isso mostrará (apenas!) O primeiro endereço de origem do qual um pacote UDP é recebido.

Além disso, netstat -nu parece ter algumas informações de estado de conexão para conversas UDP.

    
por 02.04.2014 / 00:49
5

se o aplicativo usa um protocolo específico, você pode usar um ngrep (para inspeção de pacote) ou um tcpdump (para rastreamento de porta / host). Isso é útil especialmente em um roteador ou um proxy ou DNS (se você puder mapear o aplicativo para um nome de host) para rastrear o uso.

exemplo para ssh:

ngrep SSH-2.0 

ou acesso ao site, via dns (DNS pode ser armazenado em cache, mas em um longo prazo você pode ver quem está usando)

ngrep bad.site.org port 53

ou através de conexões ip:

tcpdump host bad.site.org 

Finalmente, você pode usar o nmap com a opção -A, para ajudar a mapear a porta para um protocolo específico:

nmap -A 192.168.0.0/16 -p 8000-9000  2>/dev/null | grep "Interesting ports on\|open"

isto mostrará o IP, portas abertas e o protocolo / serviço se o nmap conseguir identificá-lo

    
por 16.04.2013 / 13:41
3

Se o aplicativo usa uma porta de rede específica, nmap é seu amigo.

Se não, você precisa ter algum tipo de software de monitoramento ou implantação, ou você precisa executar um script em cada servidor para encontrar o que está instalado e o que está sendo executado. Exemplo:

ssh servername 'ps -ef|grep appname|grep -v grep'

mostrará se o aplicativo está realmente em execução.

    
por 16.04.2013 / 11:19
2

Execute seu comando nc em segundo plano: nc -lu &

use lsof para ver os soquetes de rede usados pelo nc.

lsof -i4 -n | grep ^nc

e digite:

watch -n 1 "lsof -i4 -n | grep ^nc"

O Watch irá executar novamente o comando a cada segundo (não é tão preciso quanto o wireshark):

Every 1.0s: lsof -i4 -n | grep ^nc                                                                                        

nc        29033 user    3u  IPv4 4638215      0t0  UDP *:5007
nc        29469 user    3u  IPv4 4641772      0t0  UDP src_ip:46805->dest_ip:5007
    
por 02.04.2014 / 02:28
2

Eu tenho outra ideia que acabei de usar para um propósito semelhante:

Adicione uma regra ao seu iptables:

-A INPUT -p tcp --dport <PORT_TO_MONITOR> -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

Isso adicionará uma linha ao log do sistema para cada nova conexão a essa porta.

Você também pode redirecionar isso para um arquivo de log separado, acredito.

    
por 05.04.2014 / 14:42