O Wireshark é uma ferramenta poderosa, mas tem suas limitações. A menos que você tenha equipamento de rede profissional, é difícil analisar o tráfego que não envolve o seu computador. Às vezes, a solução mais fácil é usar o tcpdump para capturar o tráfego no servidor remoto e, em seguida, executar o Wireshark para dar uma olhada nele..
O que são o Wireshark e o tcpdump?
O Wireshark é um analisador de protocolo, um software que captura e apresenta os dados que fluem pela sua rede de maneira legível. Usando o Wireshark, você pode analisar entrada e saída de serviços de rede e aplicativos da web.
Embora o Wireshark faça um ótimo trabalho de captura de todos os pacotes que passam por ele, em alguns casos você precisará analisar uma sessão de um servidor remoto. A menos que você tenha um equipamento de rede especial, isso pode ser difícil. Às vezes, é mais fácil capturar o tráfego no servidor remoto e analisá-lo na área de trabalho.
O tcpdump é um analisador de pacotes de linha de comando. Não é tão fácil de usar quanto o Wireshark, mas também é capaz de capturar tráfego. Como o tcpdump é executado no modo terminal, é possível iniciá-lo por meio de uma sessão SSH. Com as opções de linha de comando adequadas, você pode exportar uma sessão tcpdump compatível com o Wireshark.
SolarWinds leva o Wireshark para o próximo nível
O Wireshark e o tcpdump são utilitários poderosos, mas têm alguns pontos fracos. Em particular, é muito difícil identificar problemas de latência na sua rede usando o Wireshark imediatamente. Por exemplo, você pode estar sofrendo com altos tempos de ping na sua LAN e não há muito o que o Wireshark possa fazer para ajudar.
Visualizador do tempo de resposta do SolarWinds para Wireshark (FERRAMENTA GRATUITA)
Nesse caso, eu recomendo Visualizador do tempo de resposta do SolarWinds para Wireshark. Este plug-in estende o Wireshark, permitindo diagnosticar a causa dos picos de ping e a velocidade lenta geral da rede.
SolarWinds Response Time Viewer for WiresharkFaça o download da ferramenta 100% GRATUITA
Monitor de desempenho de rede SolarWinds (TESTE GRATUITO)
O SolarWinds também é uma excelente solução tudo-em-um para sua rede. É chamado de Monitor de desempenho de rede (NPM) e facilita a administração de uma rede. Por exemplo, usando o SolarWinds Network Performance Monitor, você pode monitorar e gerenciar sua LAN sem fio, gerar uma linha de base de desempenho e receber alertas de segurança em tempo real.
Monitor de desempenho de rede SolarWinds está disponível para teste sem risco por 30 dias. Registe-se aqui de graça.
SolarWinds Network Performance MonitorDownload de 30 dias de teste GRATUITO
Antes de você começar
Para seguir as instruções deste guia, você precisará do seguinte:
- Um computador remoto com um servidor SSH e tcpdump instalado
- Acesso root
- Serviços que geram tráfego de rede, como Apache ou node.js, em execução no computador remoto
- Um computador local com um cliente SSH e o Wireshark instalado
O objetivo é usar o tcpdump no computador remoto, através do SSH, para capturar o tráfego da rede. Em seguida, o tráfego capturado pode ser copiado para o computador local para análise com o Wireshark..
Isso é útil quando você não tem acesso físico ao computador remoto ou o está executando sem cabeça, ou seja, sem teclado e monitor.
Capturando pacotes com tcpdump
Para capturar o tráfego com o tcpdump, você precisa se conectar ao computador remoto através do SSH. Você também precisará de acesso root, caso contrário, o tcpdump não poderá capturar tráfego e você verá um erro informando Você não tem permissão para capturar nesse dispositivo.
Depois de se conectar, execute o seguinte comando para começar a capturar o tráfego com o tcpdump:
sudo tcpdump -s 0 -i eth0 -w tcpdump.pcap
As opções de linha de comando que usei para capturar esta sessão serão explicadas abaixo. Em resumo, o comando acima captura todo o tráfego no dispositivo Ethernet e grava-o em um arquivo chamado tcpdump.pcap em um formato compatível com o Wireshark.
Depois de terminar de capturar o tráfego, encerre a sessão tcpdump com Ctrl + C. Você verá uma breve leitura exibindo algumas informações sobre a sessão de captura.
Antes de poder copiar o tráfego do seu computador remoto para o local para análise com o Wireshark, você precisará alterar as permissões. Por padrão, as sessões tcpdump capturadas pela raiz usada não podem ser copiadas. Use este comando:
sudo chmod 644 tcpdump.pcap
Isso permitirá que você copie o arquivo para o seu computador local usando scp, conforme descrito na próxima etapa.
Copiando uma sessão tcpdump para análise
Depois de concluir uma sessão de captura com o tcpdump, você fica com um problema. Como você o copia na máquina que executa o Wireshark para análise? Existem várias maneiras, mas acho que o mais fácil é com o scp. Como você já capturou pacotes em uma máquina sem cabeça usando SSH, tudo o que você precisa para usar o scp já está instalado e em execução.
Os usuários do Windows precisarão baixar o pscp e copiar o arquivo para C: \ Windows \ System32. A maioria dos usuários de Mac e Linux já tem tudo o que precisa.
No Mac ou Linux, abra uma janela do terminal e execute o seguinte comando para copiar o arquivo de captura de sessão:
scp nomedeusuá[email protected]: / caminho / para / arquivo ./
Ou no Windows, abra o PowerShell e execute este comando:
pscp.exe nome_do_usuá[email protected]: / caminho / para / arquivo. \
Substitua suas informações sempre que apropriado. Você será solicitado a digitar sua senha. Os comandos que usei estão na captura de tela acima para referência.
Verifique se o arquivo foi copiado conforme o esperado e você está pronto para analisar a sessão tcpdump com o Wireshark.
Analisando uma sessão tcpdump capturada com o Wireshark
A análise funciona da mesma forma que em qualquer captura tradicional do Wireshark; a única coisa que você precisa saber é como importar o arquivo.
Inicie o Wireshark e importe a sessão tcpdump capturada usando Arquivo -> Aberto e procure seu arquivo. Você também pode Duplo click o arquivo de captura para abri-lo no Wireshark, desde que tenha a extensão de arquivo * .pcap. Se você usou o -W Quando você executou o tcpdump, o arquivo será carregado normalmente e exibirá o tráfego.
No meu caso, estou executando um servidor Apache no host remoto e estou interessado em analisar dados HTTP. Defino o filtro de visualização Wireshark apropriado e posso navegar pelos quadros capturados como de costume.
Como teste, incorporei um elemento no código HTML que não é exibido na página. Eu devo ser capaz de localizá-lo no fluxo de dados e visualizá-lo com o Wireshark.
Como você pode ver, o Wireshark é capaz de analisar cada quadro e exibir os dados muito bem. O elemento que ocultei aparece no exemplo acima. O processo de captura é um pouco mais envolvido quando você usa o tcpdump, mas tudo no Wireshark funciona normalmente..
Usando opções de linha de comando para tcpdump
Na maioria das vezes, quando você inicia o tcpdump, deseja ter algum controle sobre como captura os pacotes e onde armazena a sessão. Você pode controlar coisas assim usando as opções de linha de comando. Estas são algumas das opções de linha de comando mais úteis para o tcpdump.
tcpdump -w
o -W opção de linha de comando habilita saída compatível com o Wireshark. É preciso uma única variável, que é o nome do arquivo de saída. Os logs de captura salvos usando esta opção não serão legíveis por humanos fora do Wireshark, pois eles são armazenados em binário e não em ASCII.
tcpdump -C
o -C A opção de linha de comando permite definir um tamanho máximo de arquivo em bytes. Esta opção funciona apenas ao lado -W. Por exemplo, o comando tcpdump -C 1048576 -w capture.pcap especifica um tamanho máximo de captura de 1 MB (1.048.576 bytes) de saída para o arquivo capture.pcap.
Se a sessão gerar uma quantidade maior de saída, criará novos arquivos para armazená-la. Portanto, uma captura de 3 MB geraria capture.pcap, capture1.pcap, e capture2.pcap cada um com um tamanho de arquivo de 1 MB.
tcpdump -s
o -s A opção de linha de comando define um comprimento máximo para cada pacote em bytes e trunca o pacote quando o máximo é atingido. O comando tcpdump -s 0 define um tamanho ilimitado para garantir que todo o pacote seja capturado.
tcpdump -i
o -Eu A opção de linha de comando especifica qual dispositivo de rede você deseja monitorar pelo tcpdump. Se nenhuma interface for especificada, o padrão será a interface com o número mais baixo atualmente em execução..
tcpdump -list-interfaces
A opção de linha de comando tcpdump -list-interfaces imprimirá uma lista de todas as interfaces disponíveis para conexão com o tcpdump. Observe que isso não inicia uma sessão de captura, mas fornece uma lista de interfaces para usar com o -Eu opção acima.
tcpdump -c
o -c opção de linha de comando diz ao tcpdump para sair da sessão após capturar um número especificado de pacotes.
tcpdump -n
o -n opção de linha de comando instrui tcpdump não para resolver endereços IP para nomes de host. Isso é útil ao solucionar problemas de sites atrás de um servidor de balanceamento de carga e, em vários outros casos, o uso de um nome de host daria resultados ambíguos.
tcpdump -v | -vv -vvv
As três opções de linha de comando, -v, -vv, e -vvv permitem aumentar a verbosidade da sua sessão de captura. -v salvará valores TTL para cada pacote, junto com informações de ToS. -vv produzirá TTL e ToS junto com informações adicionais nos pacotes NFS. E -vvv registrará tudo o que as duas primeiras opções fazem, juntamente com informações adicionais das sessões de telnet.
tcpdump -F
o -F A opção de linha de comando instrui o tcpdump a usar filtros de captura do arquivo especificado. Mais informações sobre como gravar um arquivo de captura podem ser encontradas na próxima seção.
Usando filtros de captura para tcpdump
Os filtros de captura permitem restringir os dados que o tcpdump armazena em uma sessão. Eles são uma maneira útil de tornar a análise um pouco mais fácil e manter pequenos os arquivos de captura. Aqui estão alguns dos filtros de captura mais úteis para o tcpdump.
hospedeiro
Este filtro especifica que apenas o tráfego de e para o host de destino deve ser capturado. Leva um endereço IP ou nome de host como argumento.
internet
O filtro de rede instrui o computador a capturar apenas o tráfego em uma determinada sub-rede e aceita um endereço IP como argumento. Por exemplo, 192.168.1.0/24 especifica que o tráfego de ou para todos os hosts na sub-rede será capturado. Observe que é necessária uma máscara de sub-rede na notação de barra.
host dst
Igual a hospedeiro, esse filtro de captura especifica que apenas o tráfego com um destino do host especificado será capturado. Também pode ser usado com internet.
host src
Como acima, mas esse filtro captura apenas o tráfego originado no host ou no endereço IP especificado. Também pode ser usado com internet.
porta
Este filtro diz ao tcpdump para capturar o tráfego de e para um determinado número de porta. Por exemplo, porta 443 irá capturar o tráfego TLS.
portrange
Semelhante ao filtro de porta, o portrange estabelece um intervalo de portas nas quais o tráfego é capturado. Para usar o filtro portrange, especifique a porta inicial e a porta final separadas por um traço. Por exemplo, portrange 21-23.
Porta de entrada
O filtro do gateway especifica que o seu computador deve capturar apenas o tráfego que usou um determinado nome de host como gateway. O nome do host deve ser encontrado em / etc / hosts.
transmissão
O filtro de transmissão especifica que o tcpdump deve capturar apenas o tráfego que está sendo transmitido para todos os hosts em uma sub-rede.
Multicast IP
Esse filtro diz ao tcpdump para capturar apenas o tráfego multicast na sub-rede da máquina host.
e / ou / não operadores
Os filtros podem ser encadeados usando o e, ou, ou não operadores. Por exemplo, para capturar todo o tráfego da Web em um determinado host, você pode usar o filtro porta 80 ou porta 443. Ou você pode capturar todo o tráfego em uma determinada sub-rede, exceto pacotes de transmissão, usando o filtro net 192.168.1.0/24 e não transmitido.
É muito comum usar operadores de filtro na prática, pois eles fornecem uma camada adicional de granularidade às suas capturas. Você pode capturar exatamente o tráfego necessário, sem muita conversa extra na rede.
Expressões complexas com vários operadores
Expressões ainda mais complexas podem ser construídas envolvendo várias operações em apóstrofos e parênteses únicos. Por exemplo, você pode monitorar todo o tráfego de mensagens, incluindo SMTP, IMAP, IMAP sobre TLS, POP3 e POP3 sobre TLS, através de vários hosts e sub-redes, usando um comando como este:
tcpdump ‘(host 10.0.0.1 e net 192.168.1.0/24) e ((porta 25 ou porta 143 ou porta 443 ou porta 993 ou porta 995))’
Expressões complexas com vários operadores podem ser muito úteis, mas geralmente são salvas em um arquivo de filtro para reutilização, pois um único erro de digitação fará com que a captura falhe. Freqüentemente, eles precisam ser preparados com antecedência e depurados.
Usando arquivos de filtro para tcpdump
Os filtros acima podem ser executados na linha de comando quando o tcpdump é iniciado, mas geralmente é útil criar um arquivo de filtro. Um arquivo de filtro facilita a reprodução das configurações de filtro entre as capturas, pois é reutilizável. Aqui estão as etapas para escrever e usar um arquivo de filtro.
Escreva o arquivo de filtro
Os arquivos de filtro usam exatamente a mesma notação da linha de comando. Eles não exigem caracteres especiais ou números mágicos na parte superior do arquivo.
Por exemplo, aqui está um arquivo de filtro que escrevi que capturará todo o tráfego da Web de saída do meu servidor Apache para um determinado host. Nesse caso, o Chromebook em que estou escrevendo.
Enquanto o arquivo estiver legível pelo usuário que está executando o tcpdump, o programa tentará analisar tudo no arquivo de filtro e usá-lo como um filtro válido. Quando um Se o arquivo de filtro for usado junto com a filtragem de linha de comando, toda a filtragem de linha de comando será ignorada.
Instrua o tcpdump a usar qualquer arquivo de filtro usando o -F opção de linha de comando, seguida pelo caminho para o arquivo. No exemplo acima, o arquivo de filtro está localizado no mesmo diretório em que estou executando o tcpdump.
Aqui está a saída bruta da sessão filtrada. Você pode ver que os únicos pacotes sendo registrados são originários de porta 80 ou 443, e são enviados para o host em 192.168.1.181.
Depois de ver seu filtro funcionando como pretendido, capture uma sessão a ser analisada com o Wireshark usando um comando semelhante a este:
sudo tcpdump -i eth0 -s 0 -w wireshark.pcap -F arquivo de filtro
Wireshark e tcpdump
A menos que você esteja executando um switch gerenciado com uma porta de administração, mais cedo ou mais tarde precisará capturar o tráfego em um servidor remoto. Quando o Wireshark sozinho não faz o trabalho, o Wireshark com tcpdump é uma escolha popular. Os dois funcionam muito bem juntos e, com algumas opções simples de linha de comando, o tcpdump exportará sessões de captura que podem ser facilmente analisadas no Wireshark.
or remoto para capturar o tráfego de rede e, em seguida, analisá-lo usando o Wireshark no computador local. Capturando pacotes com tcpdump Para capturar pacotes com o tcpdump, você precisará se conectar ao computador remoto usando o SSH e executar o tcpdump com as opções adequadas. Por exemplo, para capturar todo o tráfego de rede, você pode usar o seguinte comando: tcpdump -i eth0 -w capture.pcap Isso capturará todo o tráfego de rede na interface eth0 e salvará os pacotes em um arquivo chamado capture.pcap. Copiando uma sessão tcpdump para análise Depois de capturar o tráfego de rede, você precisará copiar o arquivo de captura para o seu computador local para análise. Você pode fazer isso usando o SCP ou outro método de transferência de arquivos. Analisando uma sessão tcpdump capturada com o Wireshark Depois de copiar o arquivo de captura para o seu computador local, você pode abrir o Wireshark e carregar o arquivo de captura. O Wireshark exibirá todos os pacotes capturados e permitirá que você os analise em detalhes. Usando opções de linha de comando para tcpdump O tcpdump tem muitas opções de linha de comando que permitem personalizar a captura de pacotes. Aqui estão algumas das opções mais úteis: tcpdump -w Use esta opção para salvar a captura em um arquivo. tcpdump -C Use esta opção para definir o tamanho máximo do arquivo de captura. tcpdump -s Use esta opção para definir o tamanho máximo do pacote a ser capturado. tcpdump -i Use esta opção para especificar a interface de rede a ser usada para a captura. tcpdump -list-interfaces Use esta opção para listar todas as interfaces de rede disponíveis. tcpdump -c Use esta opção para definir o número máximo de pacotes a serem capturados. tcpdump -n Use esta opção para exibir endereços IP em vez de nomes de host. tcpdump -v | -vv -vvv Use estas opções para aumentar o nível de detalhe da saída.