Eu procurei bastante isso, mas não consigo encontrar um exemplo de trabalho.
Meu objetivo é monitorar o tráfego TCP em uma porta específica para ver as conexões recebidas e gravá-las em um arquivo de texto. O problema é que também preciso de um registro de data e hora em cada linha para mostrar exatamente quando o cliente se conectou à segunda.
Já exaurei o netstat, o nmap e o tcptrack, mas nenhum deles suporta o carimbo de data e hora.
Eu estava pensando que um script de shell linux poderia funcionar se eu monitorasse uma porta local específica e escrevesse texto em um arquivo quando uma conexão fosse estabelecida, concatenando a data em cada linha.
Eu estava brincando com isso:
netstat -ano|grep 443|grep ESTABLISHED
assim como isso:
tcptrack -i eth0 port 443
mas também não atendem às minhas necessidades, pois preciso do horário em que a conexão chega.
Se você tiver alguma sugestão ou me indicar a direção certa, seria muito apreciada.
Obrigado. :)
Respostas:
edit : Eu ainda estou recebendo votos por isso anos depois. Por favor, não escolha esta resposta, a resposta que usamos
iptables
aqui é muito superior em minha opinião.ou apenas
tcp-syn
, ou apenastcp-ack
(meu palpite seria esse), dependendo do que você precisa.fonte
-n
depois tcpdump (man tcpdump: -n Não converter endereços (ou seja, endereços de acolhimento, números de portas, etc.) para nomes. )Você pode usar o suporte ao iptables no kernel do Linux para isso. A vantagem é que ele não requer nenhum software extra para ser moderadamente útil. A desvantagem é que ele requer privilégios de root para configurar (mas, como você está falando da porta 443, que é uma porta privilegiada, provavelmente precisará de privilégios de root na maioria das soluções).
Adicione uma regra do iptables com algo como:
(Ajuste a
-I INPUT
peça de acordo com o seu gosto.)Quando a regra é acionada, uma entrada syslog será emitida pelo kernel. Por exemplo, com uma regra de entrada, a entrada do log pode se parecer com:
Você pode usar qualquer ferramenta de monitoramento de logs comum para fazer algo útil com essas informações. Se a sua implementação do syslog suportar, você pode direcioná-los para um arquivo de log separado, cumprindo efetivamente o requisito de gravar os dados da conexão em um arquivo com carimbo de data e hora no segundo sem nenhum software adicional.
Observe que o
LOG
destino é um destino sem término, o que significa que qualquer regra a seguir ainda será avaliada e o pacote não será rejeitado ou aceito pela própria regra LOG. Isso torna oLOG
destino útil também para depurar regras de firewall.Para evitar inundar seu log, considere usar o
limit
módulo em conjunto com isso. Veja a página de manual do iptables (8) para detalhes.fonte
Resolução em microssegundos
Por padrão, o utilitário tcpdump relatará tempo com resolução de microssegundos. Por exemplo:
mostrará uma saída semelhante à seguinte:
Veja tcpdump (8) para obter uma lista completa das opções tcpdump e pcap-filter (7) para obter a sintaxe completa dos filtros que você pode usar.
fonte
443 é tráfego criptografado - tão difícil de fazer cara ou coroa de tráfego nesta porta de qualquer maneira:
você pode fazer
yum install ngrep ou apt-get install ngrep
então corra
fonte
Você também pode exigir isso para monitorar os pacotes de entrada e saída de outras máquinas.
(opção
-i
para mencionar a rede, opção-c
para imprimir os pacotes no console)fonte
Você pode usar o tcpdump ou o Wireshark.
fonte
Se você precisar de uma solução permanente que sempre monitore o tráfego nas portas de interesse, sugiro usar QoS (o comando tc no linux). O tc é um pouco enigmático e não documentado, então eu uso o FireQoS para configurar QoS e netdata para monitorá-lo em tempo real.
Verifique isso para obter mais informações: https://github.com/firehol/netdata/wiki/You-should-install-QoS-on-all-your-servers
fonte