Como usar o comando tcpdump no Linux

Como usar o comando tcpdump no Linux

O tcpdump O comando pode ser usado para capturar o tráfego de rede em um sistema Linux. É um utilitário de linha de comando versátil em que os administradores de rede geralmente confiam para solução de problemas.

O que você vai encontrar é que a quantidade de tráfego de rede capturada em uma interface pode ser facilmente esmagadora. tcmpdump torna nosso trabalho um pouco mais fácil, permitindo -nos isolar apenas o tráfego em que estamos interessados. Obviamente, para fazer isso, você precisa estar familiarizado com as várias bandeiras e configurações que acompanham o comando.

Neste guia, você verá como usar tcpdump através de exemplos e explicações. Acompanhe seu próprio sistema, se quiser aprender a capturar o tráfego da rede e dominar o tcpdump comando.

Neste tutorial, você aprenderá:

  • Como instalar o tcpdump nas principais distritos do Linux
  • Exemplos de comando tcpdump
  • Como filtrar o tráfego tcpdump por porta, protocolo, fonte e destino
  • Como escrever capturas de tcpdump para arquivar
  • Como interpretar a saída do comando tcpdump
Usando o comando tcpdump para capturar tráfego de rede no Linux Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer distro Linux
Programas tcpdump
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Instale o TCPDUMP nas principais distos Linux

Há uma boa chance de que seu distro Linux já tenha tcpdump instalado por padrão, especialmente se você estiver executando uma distro voltada para servidores. Caso ainda não esteja instalado, você pode usar o comando apropriado abaixo para instalá -lo através do gerenciador de pacotes do seu sistema.

Para instalar o tcpdump no Ubuntu, Debian e Linux Mint:

$ sudo apt install tcpdump 

Para instalar o tcpdump no CentOS, Fedora, Almalinux e Red Hat:

$ sudo dnf install tcpdump 

Para instalar o tcpdump no Arch Linux e Manjaro:

$ sudo pacman -s tcpdump 

Exemplos de comando tcpdump

OBSERVAÇÃO
Todos os seus tcpdump Os comandos devem ser executados com a conta de usuário root ou com sudo. O utilitário requer privilégios de administrador para executar.

A forma mais simples do comando é usar o utilitário sem opções extras, como esta:

# tcpdump 

Se você não especificar de qual interface de rede você gostaria de capturar o tráfego, como no comando acima, então tcpdump vai escolher uma interface para você.

Ele continuará "despejando" o tráfego capturado para o seu terminal até que você interrompa o comando. A maneira mais fácil de fazer isso é com Ctrl + c.

Se você tiver mais de uma interface de rede, será melhor especificar em qual interface você está tentando capturar o tráfego, pois tcpdump pode não escolher o que você deseja por padrão. Use o -D opção para imprimir uma lista de interfaces de rede que tcpdump pode usar.

# tcpdump -d 1.ENP0S3 [UP, Running] 2.Lo [Up, Running, Loopback] 3.Qualquer (pseudo-device que captura em todas as interfaces) [UP, Running] 4.Monitor Bluetooth (Monitor Bluetooth Linux) [Nenhum] 5.NFLOG (interface Linux Netfilter Log (Nflog)) [Nenhum] 6.NFQUEUE (interface Linux Netfilter (NFQUEUE) [Nenhum] 

Temos algumas interfaces diferentes que podemos usar. Alternativamente, temos o qualquer opção disponível que nos permitirá capturar o tráfego em todas as interfaces de rede simultaneamente. Se queremos capturar o tráfego de rede no ENP0S3 Interface, usaríamos a seguinte sintaxe de comando.

# tcpdump -i enp0s3 

Você pode usar o -v opção para aumentar a verbosidade da saída, ou -vv e -vvv para aumentar ainda mais.

# tcpdump -i enp0s3 -vv 

Se você não quiser tcpdump Para produzir dados infinitamente para o seu terminal, você pode usar o -c opção para especificar quantos pacotes você deseja que o utilitário capture. tcpdump Parará de executar o comando depois que o limiar foi alcançado, em vez de esperar que você interrompa. O comando a seguir nos permitirá capturar apenas os 15 primeiros pacotes.

# tcpdump -c 15 

Se você não quiser tcpdump Para executar a resolução do DNS nos endereços de rede na saída, você pode usar o -n opção em seu comando. Isso exibirá todos os endereços de rede como endereços IP, em vez de resolvê -los para nomes de domínio.

# tcpdump -n 

Se você preferir salvar a saída de tráfego de rede para arquivo, em vez de listá -lo na tela, você sempre pode redirecionar o tcpdump saída com o usual > e >> operadores.

# tcpdump> tráfego.TXT 

Outra opção é escrever a captura de rede para arquivar. Esses arquivos geralmente têm o .PCAP Extensão de arquivo e não pode ser lida por um editor de texto comum.

# tcpdump -n -w tráfego.PCAP 

Para abrir o arquivo para análise posterior, use o -r opção e o nome do seu arquivo.

# tcpdump -r tráfego.PCAP 

Interprete a saída do comando tcpdump

Cada pacote isso tcpdump Captures está escrito como uma linha individual. Uma dessas linhas será algo assim:

14:21:46.134249 IP 10.0.2.15.54000> 104.16.168.35.443: bandeiras [.], ACK 2915, Win 63000, comprimento 0 

Veja como interpretar essa linha de dados:

  • 14:21:46.134249 - Timestamp de quando o pacote foi capturado.
  • IP 10.0.2.15.54000 - IP e número da porta do host de origem.
  • 104.16.168.35.443 - IP e número da porta do host de destino.
  • Bandeiras [.] - Sinalizadores TCP (SYN, ACK, PSH, etc). [[.] significa ack.
  • ACK 2915 - O número de reconhecimento.
  • Ganhe 63000 - O número da janela (bytes no buffer de recebimento).
  • comprimento 0 - A duração dos dados da carga útil.

Filtre o tráfego tcpdump

Um dos melhores recursos de tcpdump é que podemos filtrar exatamente o tráfego que queremos ver. Sem filtrar o tráfego pelo adaptador (como visto acima), número da porta e protocolo de pacotes, a quantidade de tráfego capturado pode rapidamente se tornar esmagadora e quase impossível de se virar.

Apesar do nome tcpdump, Podemos usar a ferramenta para filtrar todos os tipos de tráfego, não apenas TCP. Por exemplo, use a seguinte sintaxe para filtrar o tráfego que usa UDP.

# tcpdump -n udp 

Ou o exemplo a seguir que filtra o ICMP:

# tcpdump -n ICMP 

Você também pode usar o número de protocolo correspondente para filtrar um protocolo específico. Por exemplo, o ICMP é o protocolo número 1, então a sintaxe a seguir fará o mesmo que o exemplo anterior.

# tcpdump -n proto 1 

Para ver uma lista completa de protocolos de rede e seus números correspondentes, confira a lista de números de protocolos IP na Wikipedia.

Para filtrar o tráfego com um destino específico ou endereço IP de origem, podemos usar o hospedar Qualifer com o -n opção. Por exemplo, para filtrar o tráfego relacionado ao host no endereço IP 10.10.150.20:

# tcpdump -n host 10.10.150.20 

Como alternativa, use o líquido Qualifer, se você deseja filtrar o tráfego ou para uma rede inteira. Por exemplo, o comando a seguir filtrará o tráfego relacionado ao 192.168.1.0/24 rede.

# tcpdump -n líquido 192.168.1 

Use o porta e retrato Qualificadores para filtrar pacotes relacionados a uma porta ou intervalo de porta específicos, respectivamente. Por exemplo, o comando a seguir filtrará nosso tráfego relacionado à porta 80 (http).

# tcpdump -n porta 80 

Ou, para filtrar o tráfego das portas 20-30, o seguinte comando seria usado.

# tcpdump -n retrato 20-30 

Adicione o DST, src, SRC e DST, e src ou dst Qualificadores se você deseja filtrar com base no endereço de origem e/ou destino ou porta dos pacotes. Por exemplo, o comando a seguir filtrará pacotes que possuem um endereço IP de origem de 10.10.150.20.

# tcpdump -n src host 10.10.150.20 

Ou neste exemplo, filtramos pacotes destinados à porta ssh (porta 22).

# tcpdump -n dst porta 22 

Combinando filtros

Podemos combinar esses vários filtros cobertos acima usando o e (&&), ou (||), e não (!) operadores em nosso tcpdump comando.

Por exemplo, o comando a seguir capturará o tráfego destinado a 10.10.150.20 na porta 80 (http).

# tcpdump -n dst host 10.10.150.20 e porta tcp 80 

Ou crie ainda mais filtros granulares combinando regras em parênteses. Por exemplo, este comando fará o mesmo que o anterior, mas também captura a porta 443 (https).

# tcpdump -n 'dst host 10.10.150.20 e (porta TCP 80 ou porta TCP 443) ' 

Pensamentos finais

Neste guia, vimos como usar o tcpdump Utilitário de linha de comando para capturar tráfego de rede em um sistema Linux. Como vimos neste tutorial, o comando pode ser bastante complexo e aceitar entrada muito granular, o que nos permite filtrar o tráfego exato que queremos ver.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Comandos básicos do Linux
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Instale Arch Linux na estação de trabalho VMware
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Coisas para instalar no Ubuntu 22.04
  • Como tirar uma captura de tela no Kali Linux
  • Como tirar uma captura de tela em Manjaro