Introdução ao Tcpdump

Se você executa um servidor, sem dúvida chegará a um ponto em que precisará resolver alguns problemas relacionados à rede. É claro que seria fácil enviar uma mensagem para o departamento de suporte, mas às vezes você precisa sujar as mãos. Nesse caso, tcpdumpé a ferramenta para esse trabalho. Tcpdump é um analisador de pacotes de rede que é executado sob a linha de comando.

Este artigo será dividido em três partes:

  • Funcionalidades básicas.
  • Filtragem com base em determinadas características de tráfego.
  • Um pequeno trecho dos recursos mais avançados (como expressões lógicas, filtragem por sinalizadores TCP).

Como o tcpdump não está incluído na maioria dos sistemas básicos, você precisará instalá-lo. No entanto, quase todas as distribuições Linux têm o tcpdump em seus repositórios principais. Para distribuições baseadas no Debian, o comando para instalar o tcpdump é:

apt-get install tcpdump

Para CentOS / RedHat, use o seguinte comando:

yum install tcpdump

O FreeBSD oferece um pacote pré-compilado que pode ser instalado emitindo:

pkg install tcpdump

Há também uma porta disponível, net/tcpdumpque pode ser instalada via:

cd /usr/ports/net/tcpdump
make install clean

Se você executar tcpdumpsem argumentos, será atingido por resultados. A execução em uma instância recém-ativada aqui no Vultr por menos de cinco segundos fornece os seguintes resultados:

2661 packets captured
2663 packets received by filter
0 packets dropped by kernel

Antes de entrar em mais detalhes sobre como filtrar entrada, você deve dar uma olhada em alguns parâmetros que podem ser passados ​​para o tcpdump:

  • -i- Especifica a interface que deseja ouvir, por exemplo: tcpdump -i eth0.
  • -n- Não tente fazer pesquisas inversas em endereços IP, por exemplo: tcpdump -n(se você adicionar outro ntcpdump, você mostrará os números das portas em vez dos nomes).
  • -X- Mostrar o conteúdo dos pacotes recolhidos: tcpdump -X.
  • -c- Somente captura xpacotes, xsendo um número arbitrário, por exemplo, tcpdump -c 10captura exatamente 10 pacotes.
  • -v- Aumente a quantidade de informações de pacotes exibidas, mais vs adicionam mais verbosidade.

Cada um desses parâmetros mencionados aqui pode ser combinado. Se você quisesse capturar 100 pacotes, mas apenas na interface VPN tun0, o comando tcpdump ficaria assim:

tcpdump -i tun0 -c 100 -X

Existem dezenas (senão centenas) de opções além dessas poucas, mas elas são as mais comuns. Sinta-se livre para ler a página de manual do tcpdump no seu sistema.

Agora que você tem um entendimento básico do tcpdump, é hora de analisar um dos recursos mais impressionantes do tcpdump: expressões. Expressões tornarão sua vida muito mais fácil. Eles também são conhecidos como BPF ou Berkeley Packet Filters. O uso de expressões permite exibir (ou ignorar) seletivamente pacotes com base em certas características - como origem, destino, tamanho ou mesmo número de sequência TCP.

Até agora, você conseguiu limitar sua pesquisa a uma certa quantidade de pacotes em uma determinada interface, mas vamos ser honestos aqui: isso ainda deixa muito ruído de fundo para funcionar efetivamente com os dados coletados. É aí que as expressões entram em cena. O conceito é bem direto, então deixaremos de lado a teoria seca aqui e apoiaremos o entendimento com alguns exemplos práticos.

As expressões que você provavelmente usará mais são:

  • host - Procure tráfego com base em nomes de host ou endereços IP.
  • srcou dst- Procure tráfego de ou para um host específico.
  • proto- Procure o tráfego de um determinado protocolo. Funciona para tcp, udp, icmp e outros. Omitir a protopalavra-chave também é possível.
  • net - Procure tráfego de / para um determinado intervalo de endereços IP.
  • port - Procure tráfego de / para uma determinada porta.
  • greaterou less- Procure tráfego maior ou menor que uma certa quantidade de bytes.

Enquanto a página de manual tcpdumpcontém apenas alguns exemplos, a página de manual pcap-filterpossui explicações muito detalhadas sobre como cada filtro funciona e pode ser aplicado.

Se você quiser ver como está a sua comunicação com um determinado servidor, use a hostpalavra - chave, por exemplo (incluindo alguns dos parâmetros acima):

tcpdump -i eth0 host vultr.com

Às vezes, existem computadores na rede que não respeitam o MTU ou enviam spam com pacotes grandes; filtrá-los pode ser difícil às vezes. Expressões permitem filtrar pacotes maiores ou menores que um determinado número de bytes:

tcpdump -i eth0 -nn greater 128
or
tcpdump -i eth0 -nn less 32

Talvez apenas uma certa porta seja do seu interesse. Nesse caso, use a portexpressão:

tcpdump -i eth0 -X port 21

Você também pode procurar por intervalos de portas:

tcdump -i eth0 -X portrange 22-25

Como os gateways NAT são bastante comuns, você pode procurar apenas portas de destino:

tcpdump dst port 80

Se você estiver assistindo o tráfego no seu servidor da web, talvez queira examinar apenas o tráfego TCP na porta 80:

tcpdump tcp and dst port 80

Você provavelmente está se perguntando o que a palavra and- chave está fazendo lá. Boa pergunta. Isso nos leva à última parte deste artigo.

tcpdump oferece suporte básico para expressões lógicas, mais especificamente:

  • and/ &&- Lógico "e".
  • or/ ||- Lógico "ou".
  • not/ !- Lógico "não".

Juntamente com a capacidade de agrupar expressões, isso permite criar pesquisas muito poderosas para o tráfego de entrada e saída. Então, vamos filtrar o tráfego vindo do vultr.com na porta 22 ou 443:

tcpdump -i eth0 src host vultr.com and (dst port 22 or 443)

Executar isso na linha de comando fornecerá o seguinte erro:

bash: syntax error near unexpected token `('

Isso ocorre porque há uma ressalva: bashtenta avaliar todos os personagens que puder. Isso inclui o (e )personagens. Para evitar esse erro, você deve usar aspas simples em torno da expressão combinada:

tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'

Outro exemplo útil: ao depurar problemas de SSH com um de seus usuários, você pode querer ignorar tudo o que está relacionado à sua sessão de SSH:

tcpdump '!(host $youripaddress) && port 22)'

Novamente, os casos de uso são infinitos e é possível especificar em profundidades extremas que tipo de tráfego você deseja ver. O comando a seguir mostraria apenas pacotes SYNACK de um handshake TCP:

tcpdump -i eth0 'tcp[13]=18'

Isso funciona observando o décimo terceiro deslocamento do cabeçalho TCP e o décimo oitavo byte dentro dele.

Se você chegou até aqui, está pronto para a maioria dos casos de uso que surgirem. Mal consigo tocar a superfície sem entrar em muitos detalhes. Eu recomendo que você experimente as diferentes opções e expressões um pouco mais; e, como de costume: consulte a página de manual quando se perder.

Por último, mas não menos importante - uma rápida olhada para trás. Lembra do começo deste artigo? Com os milhares de pacotes capturados em questão de segundos? O poder de tcpdumppode reduzir muito isso:

tcpdump -i eth0 tcp port 22

O resultado é agora:

81 packets captured
114 packets received by filter
0 packets dropped by kerne

Isso é muito mais saudável e fácil de depurar. Rede feliz!



Leave a Comment

Como instalar a plataforma LiteCart Shopping Cart no Ubuntu 16.04

Como instalar a plataforma LiteCart Shopping Cart no Ubuntu 16.04

LiteCart é uma plataforma de carrinho de compras de código aberto e gratuita escrita em PHP, jQuery e HTML 5. É um software de comércio eletrônico simples, leve e fácil de usar

Configuração inicial segura do servidor Ubuntu 18.04

Configuração inicial segura do servidor Ubuntu 18.04

Introdução Neste tutorial, você aprenderá como configurar um nível básico de segurança em uma nova máquina virtual Vultr VC2 executando o Ubunt

Instalando o McMyAdmin no Ubuntu 14.10

Instalando o McMyAdmin no Ubuntu 14.10

McMyAdmin é um painel de controle do servidor Minecraft usado para administrar seu servidor. Embora o McMyAdmin seja gratuito, há várias edições, algumas das quais são pai

Configurar um TeamTalk Server no Linux

Configurar um TeamTalk Server no Linux

O TeamTalk é um sistema de conferência que permite aos usuários ter conversas de áudio / vídeo de alta qualidade, bate-papo por texto, transferir arquivos e compartilhar telas. É eu

Como instalar e configurar o CyberPanel no servidor CentOS 7

Como instalar e configurar o CyberPanel no servidor CentOS 7

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

Instale o Grafana no Ubuntu 16.04 LTS

Instale o Grafana no Ubuntu 16.04 LTS

Usando um sistema diferente? Introdução O Grafana é um software de código aberto que transforma vários feeds de sistemas como Graphite, Telegraf, um

Instale o phpBB com Apache no Ubuntu 16.04

Instale o phpBB com Apache no Ubuntu 16.04

PhpBB é um programa de boletim de código aberto. Este artigo mostra como instalar o phpBB em cima de um servidor Apache no Ubuntu 16.04. Foi writte

Como instalar o Foreman no Ubuntu 16.04 LTS

Como instalar o Foreman no Ubuntu 16.04 LTS

Usando um sistema diferente? O Foreman é uma ferramenta gratuita e de código aberto que ajuda na configuração e gerenciamento de servidores físicos e virtuais. Forema

Configurar um usuário não root com Sudo Access no Ubuntu

Configurar um usuário não root com Sudo Access no Ubuntu

Ter apenas um usuário, que é root, pode ser perigoso. Então vamos consertar isso. O Vultr nos dá a liberdade de fazer o que quisermos com nossos usuários e servidores

Instale o eSpeak no CentOS 7

Instale o eSpeak no CentOS 7

Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Instalando o Fuel CMS no Ubuntu 16.04 LTS

Usando um sistema diferente? O Fuel CMS é um sistema de gerenciamento de conteúdo baseado em CodeIgniter. Seu código fonte está hospedado no GitHub. Este guia mostra como você pode

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Como instalar o Couch CMS 2.0 em um VPS Debian 9 LAMP

Usando um sistema diferente? O Couch CMS é um sistema de gerenciamento de conteúdo (CMS) simples e flexível, gratuito e de código aberto que permite que os web designers

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Monitore seus dispositivos usando o LibreNMS no CentOS 7

Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade

Como usar o Sudo no Debian, CentOS e FreeBSD

Como usar o Sudo no Debian, CentOS e FreeBSD

Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud

Como instalar o RabbitMQ no CentOS 7

Como instalar o RabbitMQ no CentOS 7

Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens

Como ativar o TLS 1.3 no Apache no Fedora 30

Como ativar o TLS 1.3 no Apache no Fedora 30

Usando um sistema diferente? O TLS 1.3 é uma versão do protocolo TLS (Transport Layer Security) publicada em 2018 como um padrão proposto no RFC 8446

Configurando um Chroot no Debian

Configurando um Chroot no Debian

Este artigo ensinará como configurar uma prisão chroot no Debian. Presumo que você esteja usando o Debian 7.x. Se você estiver executando o Debian 6 ou 8, isso pode funcionar, mas

Como instalar o PiVPN no Debian

Como instalar o PiVPN no Debian

Introdução Uma maneira fácil de configurar um servidor VPN no Debian é com o PiVPN. PiVPN é um instalador e wrapper para o OpenVPN. Ele cria comandos simples para você t

Configurar o Nginx-RTMP no CentOS 7

Configurar o Nginx-RTMP no CentOS 7

Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i

Como instalar e configurar o CyberPanel no Ubuntu 18.04 LTS

Como instalar e configurar o CyberPanel no Ubuntu 18.04 LTS

Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.