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:
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 comotcp
,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, como10.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
:
tcpdump -i eth2 portrange 20-25
- Ignorar tráfego na porta 25:
tcpdump -i eth2 not port 25
- Capturar tráfego HTTP:
tcpdump -i eth2 port 80
- Capturar tráfego HTTPS:
tcpdump -i eth2 port 443
Exibindo Interfaces de Rede Disponíveis
Para exibir interfaces de rede disponíveis no Linux ou Unix, digite:
tcpdump -D
Monitorar Todos os Pacotes na Interface eth2
Para monitorar todos os pacotes na interface eth2
, execute:
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:
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:
sudo tcpdump -A -i eth2 icmp
Monitorar Tráfego HTTP e HTTPS
Para monitorar todo o tráfego HTTP na interface eth2
:
tcpdump -A -i eth2 'port 80'
E para HTTPS:
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
):
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
:
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:
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:
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:
@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:
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:
tcpdump | grep 'algo'
Para capturar informações sobre um host específico:
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:
man tcpdump