log de atividade de rede no servidor ubuntu

5

Eu administro um Servidor Ubunu exposto à internet e tenho a necessidade de monitorar e acompanhar toda a atividade da rede de uma maneira que me permita analisá-lo posteriormente.

Eu já tentei algumas ferramentas, como tshark ou tcpdump, que me dão muito detalhe, vnstat, que não me dá os detalhes que eu quero (mostra apenas a largura de banda), e tcptrack, que é OK como um verdadeiro ferramenta de monitoramento de tempo, mas não me dá nenhuma opção de registro para análise posterior.

O que eu tenho em mente é algo entre tcptrack e vnstat:

Um daemon que registra todas as conexões e, quando necessário, fornece um relatório abrangente mostrando IPs, portas e timestamps de cada conexão estabelecida e cada tentativa de conexão (portanto, também deve mostrar os pacotes SYN das conexões eliminadas pelo iptables). Idealmente (isso é apenas um ponto bônus :), ele armazenaria informações em algum banco de dados sql, como mysql ou postgresql, o que permitiria executar instruções select arbitrárias para obter relatórios customizados (por exemplo, monitorar toda a atividade proveniente de um único IP, ou extrair uma lista de todos os IPs usando um serviço específico).

Devo dizer que eu já tentei combinar algumas ferramentas, como logar com o tcpdump e mostrar os resultados usando o tcptrack, mas não funcionou como esperado.

Então, existe alguma ferramenta próxima a essa "ideia"?

    
por Carles Sala 26.10.2013 / 17:34

1 resposta

2

Acho que o método mais fácil para alcançar o que você deseja aqui será o uso de iptables juntamente com o registro para os destinos LOG ou ULOG.

Isso deixará você com o seguinte tipo de informação de log:

Aug 13 14:42:07 srv1 IN=eth0 OUT= MAC=00:0c:29:8c:2b:6c:00:d0:02:eb:e8:0a:08:00 SRC=75.125.70.194 DST=XXX.XXX.XXX.XXX LEN=40 TOS=00 PREC=0×00 TTL=54 ID=9566 PROTO=TCP SPT=57144 DPT=445 SEQ=2770468863 ACK=0 WINDOW=512 SYN URGP=0

Aug 13 14:45:29 srv1 IN=eth0 OUT= MAC=00:0c:29:8c:2b:6c:00:d0:02:eb:e8:0a:08:00 SRC=75.125.70.194 DST=XXX.XXX.XXX.XXX LEN=40 TOS=00 PREC=0×00 TTL=55 ID=13702 PROTO=TCP SPT=58528 DPT=445 SEQ=1217789951 ACK=0 WINDOW=512 SYN URGP=0

Você poderá usar ferramentas padrão como awk ou grep para extrair dados quando quiser ver o que está acontecendo neste sistema.

2 regras como essas devem registrar qualquer conexão "NEW" que seja de entrada ou de saída. Isso prefixará as regras para que elas fiquem mais visíveis:

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New Connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New Connection: "

Resultando em entradas de registro como esta:

[ 2134.566659] New Connection: IN= OUT=wlan0 SRC=192.168.178.229 DST=192.168.178.21 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=65094 DF PROTO=UDP SPT=55717 DPT=53 LEN=40

Referências

por 26.10.2013 / 23:37