Além de usar o iptables para registrar as conexões recebidas.
Existe uma maneira de registrar conexões de entrada estabelecidas com um serviço para o qual você não tem a fonte (suponha que o serviço não registre coisas como essa por conta própria)? O que eu quero fazer é reunir algumas informações com base em quem está se conectando para poder dizer coisas como em que horas do dia o serviço está sendo mais utilizado, em que lugar do mundo a principal base de usuários etc.
Estou ciente de que posso usá-lo netstat
e conectá-lo a um script cron, mas isso pode não ser preciso, pois o script pode ser executado apenas com a frequência de um minuto.
Aqui está o que estou pensando agora:
- Escreva um programa que faça pesquisas constantemente
netstat
, procurando conexões estabelecidas que não apareceram na pesquisa anterior. Essa ideia parece uma perda de tempo da CPU, pois pode não haver uma nova conexão. - Escreva um programa wrapper que aceite conexões de entrada em qualquer porta em que o serviço seja executado, mas não saberia como passar essa conexão para o serviço real.
Edit: Apenas me ocorreu que esta pergunta pode ser melhor para stackoverflow, embora eu não tenha certeza. Desculpe se este é o lugar errado.
Respostas:
Você pode registrar novas conexões com o iptables assim
Isso adicionará uma mensagem como esta para uma nova configuração ssh
ou assim para uma nova conexão http
e assim por diante para cada nova conexão com o seu sistema. Ele será registrado em qualquer local em que seu syslog esteja configurado para enviar mensagens kern.warning.
fonte
você pode usar o auditd e, no final do dia, calcular algumas estatísticas com base nessas linhas de registro. Ou você também pode ir para uma solução snmp, mas provavelmente você escreveu seu próprio mib
fonte
Que tal tcpdump ou wireshark?
fonte
tcpdump -i <interface> -s 65535 -w <some-file>
Além disso, você precisará finalizar a captura com ^ C quando acreditar que capturou pacotes suficientes.