TCPDump: Capture e Grave Tráfego de Protocolos e Portas Específicas

Como capturar um protocolo ou porta específicos, como 80 (HTTP) ou 443 (HTTPS), usando a ferramenta TCPDump no Linux/UNIX? Como gravar tráfego com TCPDump e identificar problemas mais tarde na sua rede ou servidor? Vamos mergulhar na captura e análise do tráfego da sua rede para resolver questões de rede e servidor.

O TCPDump é uma ferramenta poderosa para monitoramento de rede e aquisição de dados. Ela pode economizar muito tempo e ser usada para depurar problemas relacionados a redes ou servidores. O Tcpdump imprime uma descrição do conteúdo dos pacotes em uma interface de rede que correspondem à expressão booleana.

TCPDump: Captura e Grava Protocolos e Portas Específicas

Vejamos como usar o tcpdump para capturar e gravar protocolos e portas específicas no Linux ou Unix. A sintaxe é a seguinte:

Bash
sudo tcpdump [opções] [filtro]

Principais Opções

  • -i interface – Especifique a interface de rede (NIC) para capturar. Por exemplo, eth2, wlan1, enp4s0, entre outros. Consulte como listar placas de rede no Linux para mais informações.
  • -n – Use endereços IP em vez de resolver nomes de host usando DNS. Isso melhora a velocidade.
  • -w arquivo – Grave os pacotes capturados em um arquivo. Normalmente, você usaria a extensão .pcap. Por exemplo, captura_rede.pcap.
  • -c contagem – Capture um número específico de pacotes.

Expressões de Filtro

As expressões de filtro permitem capturar tráfego com base em várias condições, como:

  • port – Especifique o número da porta TCP ou UDP.
  • src port – Captura tráfego originado de uma porta específica.
  • dst port – Captura tráfego destinado a uma porta específica.
  • protocol – Use protocolos como tcp, udp, icmp.
  • host – Especifique um endereço IP ou nome de host para capturar tráfego de ou para esse host.
  • net – Captura tráfego de ou para uma CIDR específica, como 10.10.1.0/24.
  • operadores lógicos – Use and, or, not para construir expressões múltiplas.

Exemplos de Captura de Porta

  • Capturar tráfego na faixa de portas 20-25:
Bash
  tcpdump -i eth2 portrange 20-25
  • Ignorar tráfego na porta 25:
Bash
  tcpdump -i eth2 not port 25
  • Capturar tráfego HTTP:
Bash
  tcpdump -i eth2 port 80
  • Capturar tráfego HTTPS:
Bash
  tcpdump -i eth2 port 443

Exibindo Interfaces de Rede Disponíveis

Para exibir interfaces de rede disponíveis no Linux ou Unix, digite:

Bash
tcpdump -D

Monitorar Todos os Pacotes na Interface eth2

Para monitorar todos os pacotes na interface eth2, execute:

Bash
tcpdump -i eth2

Pressione Ctrl-C para encerrar o comando.

Capturar Todo Tráfego TCP Exibindo Conteúdos na Tela

Para capturar todo o tráfego TCP com detalhes, use:

Bash
tcpdump -A -i eth2 tcp

O parâmetro -A exibe cada pacote em formato ASCII, facilitando a leitura.

Captura de Tráfego ICMP

Para capturar pacotes ICMP:

Bash
sudo tcpdump -A -i eth2 icmp

Monitorar Tráfego HTTP e HTTPS

Para monitorar todo o tráfego HTTP na interface eth2:

Bash
tcpdump -A -i eth2 'port 80'

E para HTTPS:

Bash
tcpdump -i eth2 'port 443'

Captura de Tráfego em Rede

Para capturar todo o tráfego de uma rede CIDR (por exemplo, 10.10.0.0/24):

Bash
tcpdump -i eth2 -n tcp and net 10.10.0.0/24

Como Salvar Tráfego em um Arquivo

Para capturar todo o tráfego DNS na porta 53 e salvar em um arquivo chamado dns_trafego.pcap:

Bash
tcpdump -i eth2 -n port 53 -w dns_trafego.pcap

Se você não quiser capturar um arquivo muito grande, limite a captura a 1000 pacotes:

Bash
tcpdump -i eth2 -n port 53 -w dns_trafego.pcap -c 1000

Análise de Pacotes Capturados

Para analisar pacotes em um arquivo, utilize o comando tcpdump:

Bash
tcpdump -r dns_trafego.pcap

Além disso, você pode usar ferramentas como Wireshark ou tshark para uma análise mais profunda.

Captura de Tráfego Usando Cronjobs

O tcpdump pode ser usado para identificar ataques e outros problemas. Por exemplo, se seu servidor web enfrenta problemas todos os dias à meia-noite, você pode programar o seguinte comando no cron para capturar 30.000 pacotes e gravá-los em um arquivo:

Bash
@midnight /usr/sbin/tcpdump -n -c 30000 -w /root/trafego_80.debug.txt port 80

No dia seguinte, você pode acessar e analisar o arquivo:

Bash
tcpdump -X -vv -r /root/trafego_80.debug.txt

Usando grep com tcpdump

Você pode filtrar a saída do tcpdump com grep. Por exemplo:

Bash
tcpdump | grep 'algo'

Para capturar informações sobre um host específico:

Bash
tcpdump -i any -A host 192.168.10.20 and port 80 | grep -i 'User-Agent'

Conclusão

O TCPDump é uma ferramenta incrível para análise de pacotes que funciona em Linux, macOS e sistemas Unix-like. Ele permite que o usuário intercepte e exiba pacotes TCP/IP e outros pacotes transmitidos ou recebidos por uma rede. Esta ferramenta é essencial para administradores de sistemas e desenvolvedores para depurar problemas de rede ou servidor.

Para mais informações, consulte a página de manual do tcpdump usando o comando:

Bash
man tcpdump

Artigos Relacionados