tcpdump em 10 Minutos: Como Capturar Só o Tráfego Que Interessa

Para capturar apenas o tráfego que interessa com o tcpdump, a prática recomendada é utilizar a sintaxe de filtro BPF (Berkeley Packet Filter) diretamente no comando, combinada com a flag -n para desativar a resolução de nomes DNS e a flag -w para salvar a captura em um arquivo .pcap, permitindo análise posterior em ferramentas gráficas. O BPF compila o filtro no nível do kernel, descartando pacotes irrelevantes antes que consumam recursos do sistema, o que é crucial em servidores de produção.

Principais Aprendizados

  • O tcpdump utiliza a sintaxe BPF (host, net, port, src, dst) para filtragem de alta performance no kernel.
  • A flag -n é indispensável para evitar que a ferramenta gere tráfego DNS reverso, poluindo a captura.
  • O fluxo de trabalho moderno consiste em capturar os pacotes no terminal (CLI) e analisá-los visualmente no Wireshark.

A Lógica da Filtragem: O Motor BPF

O tcpdump é o padrão da indústria para análise de pacotes em linha de comando desde sua criação em 1988. Sua eficiência se deve ao uso do Berkeley Packet Filter (BPF), uma arquitetura que permite definir regras de filtragem rigorosas baseadas em três tipos de primitivas: tipo (como host, net, port), direção (src, dst) e protocolo (tcp, udp, icmp, ip). Segundo a documentação do ntop sobre BPF, essa abordagem garante que pacotes fora do escopo sejam descartados imediatamente.

Muitos iniciantes cometem o erro de tentar usar filtros de exibição do Wireshark (como ip.addr == 10.0.0.1) na linha de comando. A sintaxe correta do tcpdump exige o formato BPF (ex: host 10.0.0.1). Compreender se a aplicação utiliza TCP ou UDP é o primeiro passo para montar o filtro adequado.

Terminal executando tcpdump com filtros BPF

Flags Essenciais para um Terminal Limpo

O consenso da área de redes aponta que executar o tcpdump sem parâmetros adicionais gera uma enxurrada de dados incompreensíveis. Duas flags são fundamentais para organizar a saída:

  • A flag -n (ou -nn): Desativa a conversão de endereços IP e números de porta em nomes (resolução DNS reversa). Sem isso, a ferramenta tenta resolver cada IP que passa pela interface, gerando tráfego adicional e causando lentidão severa na exibição.
  • A flag -i: Especifica a interface de rede. Em vez de escutar todas as interfaces, deve-se direcionar a captura (ex: -i eth0).

Historicamente, versões antigas truncavam pacotes, capturando apenas os primeiros bytes. O manual oficial do tcpdump confirma que, nas versões modernas (a versão atual é a 4.99.6), o valor padrão do snapshot length (snaplen) foi ajustado para 262144 bytes, garantindo a captura integral do pacote sem a necessidade de configurações extras.

O Fluxo de Trabalho Moderno: Capturar vs. Analisar

Existe um consenso absoluto entre administradores de sistemas: o tcpdump é a ferramenta ideal para captura, especialmente em acessos remotos via SSH, enquanto o Wireshark é soberano para a análise profunda. A prática recomendada é salvar a captura em um arquivo usando a flag -w.

Exemplo prático:
tcpdump -i eth0 -n -w captura.pcap host 192.168.1.50 and port 80

O arquivo .pcap gerado é um padrão universal. Embora exista o formato mais recente .pcapng, o formato tradicional ainda é amplamente preferido por sua compatibilidade com scripts de segurança legados. Após salvar o arquivo, qualquer usuário comum pode lê-lo usando a flag -r captura.pcap, desmistificando a ideia de que privilégios de root são sempre necessários para leitura.

Fluxo de captura com tcpdump e análise no Wireshark

Como Capturar Tráfego Específico em Sistemas Modernos

Seja investigando conexões não autorizadas ou mapeando o uso de portas (um complemento útil ao comando netstat -ano), os filtros lógicos and, or e not permitem isolar exatamente o tráfego desejado.

  • Tráfego de uma sub-rede: tcpdump -n net 10.0.0.0/24
  • Apenas pacotes de um IP para uma porta: tcpdump -n src host 192.168.1.100 and dst port 443
  • Ignorando tráfego SSH para não perder a conexão: tcpdump -n not port 22

Vale ressaltar que o uso da ferramenta não se restringe ao Linux. No Windows, o padrão moderno utiliza a biblioteca Npcap (mantida pelo projeto Nmap, atualmente na versão 1.88), substituindo o antigo e descontinuado WinPcap. Isso permite que analistas de segurança realizem diagnósticos precisos em qualquer ambiente, seja em servidores na nuvem ou investigando problemas de roteamento em redes com tecnologia Wi-Fi 6E.

Perguntas Frequentes

O tcpdump precisa de acesso root para funcionar?

Para capturar tráfego ao vivo, sim, pois é necessário colocar a interface de rede em modo promíscuo. No entanto, para ler um arquivo de captura já salvo (usando a flag -r), qualquer usuário comum com permissão de leitura no arquivo pode executar o comando.

Posso usar os filtros do Wireshark no tcpdump?

Não. O Wireshark utiliza filtros de exibição específicos (ex: tcp.port == 80), enquanto o tcpdump utiliza a sintaxe de captura BPF (Berkeley Packet Filter), que exige comandos como port 80 ou host 10.0.0.1.

Por que meu terminal trava quando uso tcpdump com grep?

Isso acontece porque o buffer do sistema operacional retém a saída. Para usar o grep em tempo real, é obrigatório utilizar a flag -l (line-buffered mode) no tcpdump, como em tcpdump -l -i eth0 | grep "HTTP".

Fontes

Postar um comentário

0 Comentários

Contact form