Log conexões para programa

9

Além de usar o iptables para registrar conexões de entrada ...

Existe uma maneira de registrar conexões de entrada estabelecidas para um serviço para o qual você não tem a fonte (suponha que o serviço não registre coisas como esta por conta própria)? O que eu estou querendo fazer é reunir algumas informações com base em quem está se conectando para poder dizer coisas como quais horas do dia o serviço está sendo usado mais, onde no mundo a base de usuários principal é, etc.

Estou ciente de que posso usar netstat e apenas conectá-lo a um script do cron, mas isso pode não ser preciso, já que o script pode ser executado com a mesma frequência de um minuto.

Aqui está o que estou pensando agora:

  • Escreva um programa que pesquisa constantemente netstat , procurando por conexões estabelecidas que não aparecem na pesquisa anterior. Essa ideia parece um desperdício de tempo de CPU, já que 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.

Editar: Ocorreu-me que esta questão poderia ser melhor para o stackoverflow, embora eu não tenha certeza. Desculpe se este é o lugar errado.

    
por Zac 06.10.2012 / 09:06

3 respostas

4

Você pode registrar novas conexões com o iptables, portanto

iptables -I INPUT -m state --state NEW -j LOG --log-level 1 --log-prefix "New Connection "

Isto irá adicionar uma mensagem como esta para uma nova configuração ssh

Oct 6 10:58:23 centos kernel: New Connection IN=eth0 OUT= MAC=00:0c:29:5b:a5:ea:00:0c:29:2d:94:a0:08:00 SRC=192.168.1.72 DST=192.168.254.187 LEN=52 TOS=0x00 PREC=0x00 TTL=126 ID=15498 DF PROTO=TCP SPT=59221 DPT=22 WINDOW=8192 RES=0x00 SYN URGP=0

ou assim para uma nova conexão http

Oct 6 11:03:56 centos kernel: New Connection IN=eth0 OUT= MAC=00:0c:29:5b:a5:ea:00:0c:29:d2:2c:38:08:00 SRC=192.168.254.188 DST=192.168.254.187 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=10345 DF PROTO=TCP SPT=52488 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0

e assim por diante para cada nova conexão ao seu sistema. O será registrado onde quer que seu syslog esteja configurado para enviar mensagens kern.warning.

    
por 06.10.2012 / 12:11
0

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ê tem que escrever seu próprio mib

    
por 06.10.2012 / 10:22
0

Que tal o tcpdump ou o wireshark?

    
por 11.10.2012 / 19:45