Boa noite, caros leitores.
Hoje
estarei concluindo a série de post sobre ferramentas de análise e diagnose
de rede em S.O Linux.
O
intuito dessa série é prover uma linha de utilitários para troubleshooting de redes.
Todas as ferramentas demonstradas anteriormente
são essenciais para a análise de problemas; mas uma entre elas se destaca - é o
TCPDUMP, e ela será o "carro chefe" de hoje, pela sua importância e
utilidade.
TCPDUMP
É um analisador de pacotes via linha de comando,
extremamente útil em diversas ocasiões (análise pós-ataque, debug de
conectividade, etc..). Com ele, literalmente, você pode ver tudo o que se passa
no segmento de rede.
É aconselhável, normalmente usar a chave –p, para que a interface não
entre em modo promíscuo (modo em que a interface recebe todos os pacotes que passam por ela, mesmo os que não
são destinados a mesma). Outra chave que deve ser utilizada é -n, com ela o TCPDUMP não converte os nomes (hosts, portas, etc...), tornando o processo de análise mais limpo.
Outra chave importante é –i, com ela você especifica a interface a ser utilizada.
Capturando o tráfego com origem e destino de um único host:
Capturando o tráfego com origem e destino de mais de um host:
Capturando o tráfego com origem e destino de mais de um host, exceto
de um host específico:
Capturando o tráfego em direção a um host específico:
Capturando o tráfego com origem de um host específico:
Capturando um protocolo específico:
Capturando mais de um protocolo:
Capturando uma porta específica:
Capturando mais de uma porta:
Capturando um range de portas:
Capturando o tráfego de origem de uma determinada porta:
Capturando o tráfego de destino de uma determinada porta:
Capturar pacotes maiores do que o tamanho especificado:
Capturar pacotes menores do que o tamanho especificado:
Com a chave –X podemos ler o payload (corpo de dados). Por default, somente
são mostrados os primeiros 68 bytes, com a chave –s0 é exibido todo o payload:
Pode ser confuso fazer uma análise através
do shell. Para tornar o trabalho mais fácil, utilize a chave –w. Esse artifício,
permite que todo o tráfego capturado seja enviado para um arquivo, onde o mesmo poderá
ser lido com a chave –r ou analisado com o programa Wireshark:
Visualizando o arquivo com o Wireshark:
Agora para ficar mais claro a análise com o TCPDUMP, irei comentar os campos de um fragmento de acesso http (80):
00:54:08.780858: é o timestamp (hh:mm:ss:fraction);
vm-ubuntu.60691: é o host e a porta de origem (no caso deste fragmento);
vm-centos.http: é o host e a porta de destino (no caso deste fragmento);
Flags [S]: A primeira parte do handshake do TCP (SYN, SYN-ACK,ACK);
seq 2316528663: é o numero de sequência de byte. O número de sequência inicial (ISN) é gerado de forma randômica;
win 14600: é o tamanho da janela (em bytes) de buffer que o host, pode receber de dados;
mss 1460: é o tamanho máximo do segmento ou o tamanho máximo do conjunto de dados que pode ser gerenciado sem usar fragmentação;
sackOK: é o reconhecimento positivo, permite ao destinatário reconhecer pacotes fora da sequência;
TS val 560480 ecr 0: é o tempo de ida e de volta do pacote;
nop: no operation, é usado para preencher campos de tamanho menores;
wscale 6: é utilizado para contornar a limitação original de tamanho da janela de 65,535 bytes;
length 0: tamanho dos dados contidos no pacote.
Quando você estiver analisando uma tentativa/ataque ou um serviço com problema, será muito útil, realizar capturas por flags TCP (SYN, SYN-ACK, ACK, FIN, URG, PSH e RST). Na man page do TCPDUMP,
verifica-se como calcular os valores para as flags, ou você poderá utilizar os
seguintes valores já calculados:
SYN
# tcpdump 'tcp[13] & 2!=0'
SYN-ACK
# tcpdump 'tcp[13] = 18'
ACK
# tcpdump 'tcp[13] & 16!=0'
FIN
# tcpdump 'tcp[13] & 1!=0'
URG
# tcpdump 'tcp[13] & 32!=0'
PSH
# tcpdump 'tcp[13] & 8!=0'
RST
# tcpdump 'tcp[13] & 4!=0'
Lembrando que estes cálculos, podem ser combinados com todas as outras opções mostradas anteriormente (hosts, portas, protocolos, redes, etc...).
IFTOP
Outra ferramenta muito útil é o IFTOP, com ele você pode monitorar o consumo de banda de uma determinada interface:
Para entrar no menu de ajuda pressione h. A seguir os principais comandos utilizados no IFTOP:
Opções de Hosts:
n – resolve ou não o nome dos hosts;
s – mostra ou não o host de origem;
d – mostra ou não o host de destino;
t – Alterar o ciclo de transmissão (entrada e saída na mesma linha, somente entrada, somente saída, entrada e saída em linha separada).
Opções de Portas:
N – resolve ou não as portas (TCP e UDP);
S – mostra ou não a porta de origem;
D – mostra ou não a porta de destino;
p – mostra ou não as portas (origem e destino).
IPERF
IPERF é utilizado para medir o desempenho de TCP e UDP entre dois hosts. Para a realização dos testes, dever ser instalado em ambos hosts.
Um estará executando o IPERF em modo de servidor (chave -s) e o outro estará em modo cliente (chave -c):
Para realizar um teste bi-direcional, adicione a chave -d, ou se quiser realizar o teste um um host por vez, utilize a chave -r.
Bem, senhores (as), estou finalizando esta série sobre
ferramentas para troubleshooting de rede em S.O Linux.
Sei que existem milhares de outras que não foram citadas,
mas com certeza as que foram mencionadas são de grande valia em qualquer tipo
de ambiente ou de problema.
Espero que aproveitem e qualquer dúvida nos comandos
mencionados, consulte a man page ou execute comando --help.
Até
mais e um grande abraço.
Nenhum comentário:
Postar um comentário