Com o comando tcpdump do Linux, pode analisar os pacotes que são enviados na sua rede. Para otimizar a análise, pode recorrer a uma série de opções e filtros.

Para que serve o comando tcpdump no Linux?

O tcpdump é uma fer­ra­menta es­pe­ci­al­mente útil para analisar o tráfego de rede no Linux e, se ne­ces­sá­rio, resolver possíveis problemas de rede. Este programa de linha de comandos, que vem pré-instalado na maioria das dis­tri­bui­ções Linux mais co­nhe­ci­das (como o Debian ou o Ubuntu), fornece in­for­ma­ções sobre os pacotes de dados que foram enviados ou recebidos na sua rede. Apesar do que o nome possa sugerir, o comando tcpdump do Linux permite analisar, além de pacotes TCP, também pacotes UDP e ICMP. No entanto, para utilizar este comando, irá ne­ces­si­tar de per­mis­sões de root.

Como funciona o comando tcpdump?

A função de­sem­pe­nhada pelo tcpdump é conhecida como «sniffing». Ao utilizar o comando tcpdump no Linux, es­pe­ci­fica-se a interface de rede que o programa deve mo­ni­to­ri­zar. Além disso, é possível utilizar vários filtros para adaptar e otimizar o processo. O comando é executado na linha de comandos e é aí que serão apre­sen­ta­dos os re­sul­ta­dos da análise.

Como é a sintaxe do tcpdump?

A sintaxe do tcpdump no Linux é muito simples e cor­res­ponde a:

$ tcpdump [opciones] [filtros]
bash

Embora não seja ne­ces­sá­rio es­pe­ci­fi­car nenhuma opção, é re­co­men­dá­vel fazê-lo para garantir que o tcpdump utilize a interface de rede correta. Os filtros também não são obri­ga­tó­rios, mas, se nenhum for es­pe­ci­fi­cado, o tcpdump analisará todos os pacotes de todos os hosts, o que pode gerar uma grande quan­ti­dade de in­for­ma­ção, tornando difícil com­pre­en­der e analisar os dados obtidos.

Que opções e filtros podem ser uti­li­za­dos com o tcpdump no Linux?

O tcpdump pode ser utilizado com uma grande variedade de opções e filtros. As opções mais im­por­tan­tes são as seguintes:

  • A: imprime o conteúdo de um pacote em ASCII.
  • c [quan­ti­dade]: o tcpdump pára au­to­ma­ti­ca­mente após analisar a quan­ti­dade es­pe­ci­fi­cada de pacotes.
  • D: esta opção mostra uma lista de todas as in­ter­fa­ces dis­po­ní­veis.
  • i [Interface]: esta opção es­pe­ci­fica a interface a capturar.
  • s [quan­ti­dade]: define quantos bytes por pacote devem ser cap­tu­ra­dos.

Com o tcpdump, é possível utilizar os seguintes filtros:

  • dst: apenas são ana­li­sa­dos os pacotes cujo destino coincida com o valor definido. Este valor pode ser host, net, port ou portrange.
  • host: este filtro garante que apenas sejam con­si­de­ra­dos os pacotes que tenham um endereço IP es­pe­cí­fico como origem ou destino, ou, em al­ter­na­tiva, um nome de host es­pe­cí­fico.
  • net: este filtro considera apenas os pacotes que têm um endereço IP dentro de um intervalo de rede es­pe­cí­fico como origem ou destino.
  • port: com este filtro, es­pe­ci­fica-se uma porta es­pe­cí­fica entre 0 e 65535, que será analisada ex­clu­si­va­mente.
  • portrange: este filtro contém um intervalo de portas entre 0 e 65535 que será analisado ex­clu­si­va­mente.
  • proto: este filtro considera apenas os pacotes com um protocolo de rede es­pe­cí­fico. O filtro pode ter os seguintes valores: arp, decnet, ether, fddi, ip, ip6, rarp, tcp, udp ou wlan.
  • src: apenas são ana­li­sa­dos os pacotes cuja origem coincide com um valor definido. Este valor pode ser host, net, port ou portrange.

Exemplos para o comando tcpdump

Por fim, mostramos-lhe como pode utilizar o tcpdump. No exemplo que se segue, é utilizado um comando sudo do Linux.

$ sudo tcpdump -D
bash

Desta forma, pode verificar quais as in­ter­fa­ces de rede que estão dis­po­ní­veis.

$ sudo tcpdump -i wlx14a3c782966b
bash

Desta forma, apenas é analisada a interface do nome es­pe­ci­fi­cado.

$ sudo tcpdump -c 5 -i wlx14a3c782966b
bash

Desta forma, indicas que o tcpdump inclua apenas cinco pacotes.

Ir para o menu principal