Exemplos de tcpdump no Linux

Quando a rede não funciona como deveria, ou quando é necessário simplesmente entender o que exatamente está sendo transmitido pelos cabos, o tcpdump vem em seu auxílio. É como um estetoscópio para o seu servidor — uma ferramenta que permite «ouvir» o tráfego de rede em tempo real. Pode parecer complicado à primeira vista, mas na verdade é um auxiliar muito poderoso e confiável para o administrador de sistemas e qualquer utilizador curioso do Linux.

Geekbuying WWGeekbuying WW

Neste artigo, não vamos nos aprofundar na teoria das redes. Em vez disso, vamos direto ao ponto e examinar exemplos específicos de comandos que você pode aplicar no seu trabalho diário. Você aprenderá a filtrar pacotes por endereços IP, portas e tipos de protocolos para encontrar rapidamente as informações necessárias no mar de dados da rede.

Os nossos exemplos irão ajudá-lo a diagnosticar problemas de ligação, rastrear atividades suspeitas ou simplesmente satisfazer a sua curiosidade sobre como os programas se comunicam entre si. Vamos começar com os comandos mais simples e passar gradualmente para cenários de utilização mais avançados.

O Tcpdump é um utilitário útil no Linux para monitorizar e analisar o tráfego de rede, frequentemente utilizado por administradores e programadores para compreender o que se passa na rede: por exemplo, porque é que um serviço não funciona, quem está a sobrecarregar o canal ou se existem ligações suspeitas. Com comandos simples, é possível filtrar o tráfego por IP, portas, protocolos ou interfaces, guardá-lo para análise posterior ou visualizá-lo em tempo real. É como se conectar a uma conversa entre computadores e entender o que eles estão a comunicar.

Instalação

Justfashionnow WWGshopper Many GEOs

A maioria dos desenvolvedores de sistemas operacionais baseados em Linux inclui o utilitário tcpdump na lista de pré-instalados, mas se por algum motivo ele não estiver presente na sua distribuição, você sempre pode baixá-lo e instalá-lo através do «Terminal». Se o seu sistema operativo é baseado no Debian, como o Ubuntu, Linux Mint, Kali Linux e similares, é necessário executar este comando:

sudo apt install tcpdump

Durante a instalação, será necessário inserir a senha. Observe que ela não é exibida ao ser digitada. Além disso, para confirmar a instalação, é necessário introduzir o símbolo «D» e pressione Enter.

Se tiver Red Hat, Fedora ou CentOS, o comando para instalação será o seguinte:

sudo yam install tcpdump

Depois que o utilitário estiver instalado, ele poderá ser usado imediatamente. Isso e muito mais será explicado mais adiante no texto.

Sintaxe

Redmagic WWRedmagic WW

Como qualquer outro comando, o tcpdump tem a sua própria sintaxe. Conhecendo-a, poderá definir todos os parâmetros necessários que serão considerados ao executar o comando. A sintaxe é a seguinte:

tcpdump opções -i interface filtros

Ao usar o comando, é necessário especificar a interface para rastreamento. Filtros e opções não são variáveis obrigatórias, mas permitem uma configuração mais flexível.

Opções

Embora não seja obrigatório especificar a opção, é necessário listar todas as opções disponíveis. A tabela não mostra a lista completa, mas apenas as opções mais populares, que são mais do que suficientes para resolver a maioria das tarefas.

Opção Definição
-A Permite classificar pacotes com formato ASCII
-l Adiciona a função de rolagem
-i Após a introdução, é necessário indicar a interface de rede que será monitorizada. Para começar a monitorizar todas as interfaces, introduza a palavra «any» após a opção
-c Encerra o processo de rastreamento após verificar o número especificado de pacotes
-w Gera um ficheiro de texto com o relatório da verificação
-e Mostra o nível de conexão à Internet do pacote de dados
-L Exibe apenas os protocolos suportados pela interface de rede especificada
-C Cria outro ficheiro durante a gravação do pacote, se o seu tamanho for maior do que o especificado
-r Abre o ficheiro para leitura, que foi criado com a opção -w
-j O formato TimeStamp será usado para gravar pacotes
-J Permite visualizar todos os formatos TimeStamp disponíveis
-G Serve para criar um ficheiro com registos. A opção também requer a indicação de um valor temporário, após o qual um novo registo será criado
-v, -vv, -vvv Dependendo do número de caracteres na opção, a saída do comando será mais detalhada (o aumento é diretamente proporcional ao número de caracteres)
-f Mostra o nome de domínio dos endereços IP na saída
-F Permite ler informações não da interface de rede, mas do ficheiro especificado
-D Mostra todas as interfaces de rede que podem ser usadas
-n Desativa a exibição de nomes de domínio
-Z Define o utilizador sob cuja conta todos os ficheiros serão criados
-K Ignora a análise das somas de verificação
-q Demonstração de informações resumidas
-H Permite detectar cabeçalhos 802.11s
-I Usado ao capturar pacotes no modo monitor

Depois de explicar as opções, passaremos diretamente às suas aplicações. Por enquanto, vamos examinar os filtros.

Filtros

Como mencionado no início do artigo, é possível adicionar filtros à sintaxe do tcpdump. A seguir, serão apresentados os mais populares:

Filtro Definição
host Serve para indicar o nome do host
net Indica o IP da sub-rede e da rede
ip Serve para indicar o endereço do protocolo
src Exibe os pacotes que foram enviados a partir do endereço especificado
dst Exibe os pacotes que foram recebidos pelo endereço indicado
arp, udp, tcp Filtragem por um dos protocolos
port Exibe informações relacionadas a uma porta específica
and, or Serve para combinar vários filtros no comando
less, greater Exibe pacotes menores ou maiores que o tamanho especificado

Todos os filtros acima podem ser combinados entre si, de modo que, na saída do comando, você verá apenas as informações que deseja ver. Para entender melhor o uso dos filtros acima, vale a pena dar alguns exemplos.

Exemplos de utilização

Ticombo - Global Event Tickets Many GEOsGovee Many GEOs

A seguir, apresentaremos as opções de sintaxe do comando tcpdump mais utilizadas. Não será possível listar todas elas, pois suas variações podem ser infinitas.

Visualização da lista de interfaces

Recomenda-se que cada utilizador verifique inicialmente a lista de todas as suas interfaces de rede que podem ser rastreadas. Pela tabela acima, sabemos que para isso é necessário usar a opção -D, portanto, execute o seguinte comando no terminal:

sudo tcpdump -D

Exemplo:

Como pode observar, no exemplo há oito interfaces que podem ser visualizadas com o comando tcpdump. O artigo apresentará exemplos com ppp0, pode usar qualquer outro.

Captura normal de tráfego

Se precisar de monitorizar uma interface de rede, pode fazê-lo utilizando a opção -i. Não se esqueça de indicar o nome da interface após a sua introdução. Aqui está um exemplo da execução de tal comando:

sudo tcpdump -i ppp0

Atenção: antes do comando, é necessário inserir «sudo», pois ele requer direitos de superutilizador.

Exemplo:

Observação: após pressionar Enter no «Terminal», os pacotes interceptados serão exibidos continuamente. Para interromper o fluxo, pressione a combinação de teclas Ctrl+C.

Se executar o comando sem opções e filtros adicionais, verá o seguinte formato de exibição dos pacotes monitorados:

22:18:52.597573 IP vrrp-topf2.p.mail.ru. https > 10.0.6.67.35482: Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

Onde está destacado a cor:

Azul Tempo de receção do pacote
A laranja Versão do protocolo
Verde Endereço do remetente
Roxo Endereço do destinatário
Cinza Informações adicionais sobre tcp
A vermelho Tamanho do pacote (exibido em bytes)

Esta sintaxe tem a capacidade de exibição na janela «Terminal» sem utilizar opções adicionais.

Captura de tráfego com a opção -v

Como se sabe pela tabela, a opção -v permite aumentar a quantidade de informações. Vamos analisar um exemplo. Vamos verificar a mesma interface:

sudo tcpdump -v -i ppp0

Exemplo:

Aqui, pode-se observar que a seguinte linha apareceu na saída:

IP (tos 0x0, ttl 58, id 30675, offset 0, flags [DF], proto TCP (6), length 52

Onde está destacado a cor:

A laranja Versão do protocolo
Azul Duração do protocolo
Verde Comprimento do cabeçalho do campo
Roxo Versão do pacote tcp
A vermelho Tamanho do pacote (exibido em bytes)

Também pode escrever a opção -vv ou -vvv, o que permitirá aumentar ainda mais o volume de informações exibidas no ecrã.

Opções -w e -r

Na tabela de opções, foi mencionada a possibilidade de guardar todos os dados apresentados num ficheiro separado, para que possam ser visualizados posteriormente. Isso é feito pela opção -w. Na sintaxe do comando. É bastante simples de usar, basta indicá-la no comando e, em seguida, escrever o nome do futuro ficheiro com a extensão «.pcap». Vamos ver tudo com um exemplo:

sudo tcpdump -i ppp0 -w file.pcap

Exemplo:

Atenção: durante a gravação dos registos no ficheiro, nenhum texto é exibido no ecrã do «Terminal».

Quando quiser visualizar a saída gravada, é necessário usar a opção -r, após o qual escrever o nome do ficheiro gravado anteriormente. É aplicada sem outras opções e filtros:

sudo tcpdump -r file.pcap

Exemplo:

Ambas as opções são ideais para casos em que é necessário guardar grandes volumes de texto para análise posterior.

Filtragem por IP

A partir da tabela de filtros, sabemos que dst permite exibir no ecrã da consola apenas os pacotes que foram recebidos pelo endereço especificado na sintaxe do comando. Desta forma, é muito conveniente visualizar os pacotes recebidos pelo seu computador. Para isso, basta especificar o seu endereço IP no comando:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Exemplo:

Como se pode observar, além de dst, no comando, também registámos o filtro ip. Em outras palavras, dissemos ao computador que, ao selecionar os pacotes, ele deve prestar atenção ao endereço IP deles, e não a outros parâmetros.

Por IP, também é possível filtrar os pacotes enviados. No exemplo, vamos usar novamente o nosso IP. Ou seja, agora vamos rastrear quais pacotes são enviados do nosso computador para outros endereços. Para isso, é necessário executar o seguinte comando:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Exemplo:

Como se pode observar, na sintaxe do comando, alterámos o filtro dst na src, dizendo assim à máquina para procurar o remetente pelo IP.

Filtragem por HOST

Por analogia com o IP no comando, podemos especificar o filtro host, para filtrar os pacotes com o host de interesse. Ou seja, na sintaxe, em vez do endereço IP do remetente/destinatário, será necessário especificar o seu host. Fica assim:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

Exemplo:

Na imagem, pode ver-se que em «Terminal» são exibidos apenas os pacotes que foram enviados do nosso IP para o host google.com. Como se pode entender, em vez do host google, é possível inserir qualquer outro.

Tal como no caso da filtragem por IP, na sintaxe dst pode ser substituído por src, para ver os pacotes que são enviados para o seu computador:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Atenção: o filtro host deve vir depois de dst ou src, caso contrário, o comando apresentará um erro. No caso da filtragem por IP, ao contrário, dst e src vêm antes do filtro ip.

Aplicação dos filtros and e or

Se precisar usar vários filtros ao mesmo tempo em um único comando, use o filtro and ou or (depende do caso). Ao indicar filtros na sintaxe e separá-los por este operador, irá «forçá-los» a funcionar como um só. No exemplo, fica assim:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

Exemplo:

A partir da sintaxe do comando, vemos que queremos exibir na tela «Terminal» todos os pacotes que foram enviados para o endereço 95.47.144.254 e os pacotes recebidos por esse mesmo endereço. Também pode alterar algumas variáveis nesta expressão. Por exemplo, em vez de IP, indique HOST ou substitua diretamente os próprios endereços.

Filtro port e portrange

Filtro port é ideal para os casos em que é necessário obter informações sobre pacotes com uma porta específica. Assim, se precisar ver apenas respostas ou consultas DNS, deve indicar a porta 53:

sudo tcpdump -vv -i ppp0 port 53

Exemplo:

Se quiser visualizar os pacotes http, é necessário introduzir a porta 80:

sudo tcpdump -vv -i ppp0 port 80

Exemplo:

Além disso, é possível rastrear imediatamente o intervalo de portas. Para isso, aplica-se o filtro portrange:

sudo tcpdump portrange 50-80

Como se pode observar, em conjunto com o filtro portrange não é necessário especificar opções adicionais. Basta definir o intervalo.

Filtragem por protocolos

Você também pode exibir na tela apenas o tráfego que corresponde a algum protocolo. Para isso, é necessário usar o nome desse protocolo como filtro. Vamos analisar um exemplo udp:

sudo tcpdump -vvv -i ppp0 udp

Exemplo:


Como pode ser visto na imagem, após a execução do comando em «Terminal» apenas os pacotes com o protocolo udp. Assim, pode realizar a filtragem e por outros, por exemplo, arp:

sudo tcpdump -vvv -i ppp0 arp

ou tcp:

sudo tcpdump -vvv -i ppp0 tcp

Filtro net

Operador net ajuda a filtrar pacotes com base na designação da sua rede. Usá-lo é tão simples quanto os outros — basta especificar o atributo na sintaxe net), e, em seguida, insira o endereço da rede. Aqui está um exemplo de tal comando:

sudo tcpdump -i ppp0 net 192.168.1.1

Exemplo:

Filtragem por tamanho do pacote

Ainda não analisámos dois filtros interessantes: less e greater. A partir da tabela com filtros, sabemos que eles servem para exibir pacotes de dados maiores ()less ou menor que (greater do que o tamanho especificado após a inserção do atributo.

Suponhamos que queremos monitorizar apenas os pacotes que não excedam 50 bits, então o comando terá a seguinte aparência:

sudo tcpdump -i ppp0 less 50

Exemplo:

Agora vamos exibir em «Terminal» pacotes com tamanho superior a 50 bits:

sudo tcpdump -i ppp0 greater 50

Exemplo:

Como se pode observar, eles são aplicados da mesma forma, a diferença está apenas no nome do filtro.

Como pode ver, o tcpdump é uma ferramenta incrivelmente poderosa para quem precisa dar uma olhada nos bastidores da interação de rede. Ele permite ver em tempo real o que realmente está a ser transmitido pelos cabos ou pelo ar, transformando problemas de rede abstratos em dados concretos que podem ser analisados.

Comece com comandos simples, como filtragem por porta ou endereço IP. Gradualmente, com a prática, poderá construir filtros mais complexos para capturar com precisão os pacotes necessários. Não tenha medo de experimentar na sua máquina de teste — essa é a melhor maneira de entender como tudo funciona.

Em última análise, saber usar o tcpdump é uma superhabilidade para um administrador de sistemas ou programador. Ele proporciona independência no diagnóstico de problemas, sejam eles falhas na conexão, atividades suspeitas ou simplesmente o desejo de entender a lógica de funcionamento de um determinado serviço de rede. Esta ferramenta se tornará um auxiliar confiável no seu arsenal.

Govee Many GEOsnubia Many GEOsnubia Many GEOsHomestyler WWHomestyler WWSunsky-online WW
Qual é a função que considera mais importante num novo smartphone??
Share to friends
Elena Sokolova

Estou envolvido no jornalismo tecnológico há mais de 7 anos. O meu foco é a inovação e o futuro da tecnologia. Adoro discutir a forma como os gadgets e a tecnologia podem mudar o nosso mundo e partilhar notícias sobre os desenvolvimentos mais avançados.

Rate author
Appliances-News.com
Add a comment