Listando conexões de rede * ativas e passadas *

0

No Linux, sei que posso listar conexões de rede ativas com lsof -i ou netstat. No entanto, até onde eu sei, esta lista apenas de conexões que estão abertas atualmente .

Se um processo faz uma conexão curta e depois termina (como, por exemplo, um programa "telefonando para casa"), eu a perderia a menos que eu execute lsof naquele exato momento. Existe uma maneira de obter uma lista de servidores aos quais me conectei? Por exemplo, uma ferramenta que grava o endereço IP em um arquivo sempre que uma nova conexão é aberta, em todo o sistema.

Manter um sniffer de rede como o wireshark permanentemente aberto apenas para essa tarefa parece um exagero.

    
por Federico Poloni 07.07.2013 / 12:53

3 respostas

1

If a process makes a short connection and then terminates it (like, for instance, a program "phoning home")

A maioria desses programas cria uma conexão TCP para garantir que as informações cheguem a 'casa'. Se esse for o caso, o comando netstat será seu melhor amigo, porque todas as conexões TCP fechadas permanecerão por um tempo pequeno ou um pouco mais longo no estado TIME_WAIT e netstat --inet -n listará essas conexões (e as atualmente abertas) também).

Se você não tiver sorte e esse processo furtivo usar a conexão UDP ou desejar monitorar o tráfego por um período mais longo, será necessário monitorar todo o tráfego de rede da máquina com ferramentas como TCPDump ou IPTraf. O IPTraf é mais simples, porque grava apenas endereços IP e portas, o TCPDump é uma ferramenta mais avançada (apesar de seu nome, pode monitorar o tráfego UDP e ICMP também) e registra todo o tráfego de rede.

    
por 08.07.2013 / 06:19
1

Eu não tentei, mas você já pensou em usar o iptables com um LOG na cadeia de saída?

Algo parecido com o seguinte (não testado, mas transmite a essência).

iptables -I OUTPUT ! -i lo -p tcp --syn -j LOG --log-prefix 'New TCP'
iptables -I OUTPUT ! -i lo -p udp -m state --state NEW -j LOG --log-prefix 'New UDP'

Isso será registrado uma vez para cada conexão TCP e uma vez para cada nova sessão UDP, excluindo a interface de loopback, que parece ser aproximadamente o que você está pedindo. Você pode então grep dos seus logs do sistema para descobrir após o fato de que as conexões de saída foram feitas.

No entanto, não (e eu não acho que o iptables simples possa) lhe diz qual aplicação iniciou a conexão, e você obterá toneladas de logs a partir do qual provavelmente será de não adianta (porque o número de conexões legítimas feitas certamente diminuirá o número de ligações telefônicas feitas em casa).

    
por 07.07.2013 / 18:43
-1

Você precisa ouvir mais de 65000 portas. Só sniffer de rede do firewall pode fazer isto. Basta configurar o filtro correto (para novas solicitações de conexão) para regras de log de sniffer ou firewall.

    
por 07.07.2013 / 18:05