Como usar o comando tcpdump no Linux
- 743
- 67
- Mr. Mitchell Hansen
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
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ÇÃOTodos 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
- « Como ler e alterar o valor dos parâmetros do kernel usando sysctl
- Como trabalhar com a API de Rest WooCommerce com Python »