Comece por uma captura que comece antes do primeiro pacote da tentativa, senão estará a ler o meio de uma conversa. Uma negociação já em curso mostra trocas cifradas e renovações de chaves, e nenhuma delas se parece com a abertura. A abertura é a parte que pode descodificar sem chaves, e é por isso que responde tão bem a perguntas de acessibilidade. Quatro verificações por ordem levam-no de uma captura recente a uma afirmação defensável sobre que lado deixou de falar.

Primeiro, confirme que a captura começa no início

Uma captura iniciada depois de o túnel subir conterá o fluxo de dados encapsulado e keepalives periódicos, e ambos estão cifrados ou quase vazios. Reinicie o cliente e registe a tentativa em si, ou provoque deliberadamente uma ligação nova enquanto a captura corre. Se não conseguir produzir uma tentativa recente, anote-o, porque nenhuma descodificação recupera uma abertura que nunca registou.

Limite a captura aos dois extremos e a UDP 500 e 4500 para que o ficheiro fique pequeno o suficiente para ler. Num anfitrião ocupado, uma captura sem filtro enterra a negociação sob tráfego alheio.

tcpdump -i any -n -s 0 -w fresh-ike.pcap 'udp port 500 or udp port 4500'

Guarde o ficheiro quando a tentativa for interessante, porque a mesma captura responde às duas perguntas seguintes: o que foi a troca, e se voltou alguma coisa. Etiquete-o com a hora de início e o par de extremos pelo qual filtrou. Uma captura sem esses dois factos é inútil uma semana depois, quando os endereços mudaram e ninguém se lembra de que tentativa registou.

Segundo, leia o cabeçalho antes das cargas

O cabeçalho IKE transporta os índices de parâmetros de segurança, o tipo de troca e o ID de mensagem, e numa negociação nova esses valores são distintivos. O iniciador inventa um SPI diferente de zero, o pedido inicial transporta um SPI de respondente zero porque ainda não foi vista qualquer resposta, o tipo de troca é IKE_SA_INIT e o ID de mensagem é zero. Tudo o resto pertence a uma fase posterior da mesma negociação ou a uma tentativa completamente diferente.

As cargas de proposta, troca de chaves e nonce desta primeira troca são legíveis em claro. Legível não significa autenticado, e neste ponto nenhuma das partes provou a sua identidade.

O valor privado Diffie-Hellman nunca atravessa o cabo, pelo que a captura não lhe permite derivar chaves de sessão. A autenticação ocorre na troca seguinte, protegida pelo que a primeira negociou. Se alguém perguntar se um extremo é genuíno, esta troca não pode responder a essa pergunta. Só pode mostrar que ambos os lados concordaram numa proposta e produziram um segredo partilhado que o ficheiro não contém.

Terceiro, emparelhe o pedido com a sua resposta

Emparelhe pelo par de SPI, pelo tipo de troca e pelo ID de mensagem, e depois verifique o indicador de resposta. Uma retransmissão repete o ID de mensagem do original e não é uma segunda tentativa de início de sessão. Contar pacotes em vez de trocas é como uma negociação saudável se transforma num ciclo fantasma.

Uma resposta também pode ser uma recusa: um pedido de cookie, uma notificação de grupo inaceitável ou um erro sobre uma proposta. São respostas legítimas, e significam que o caminho funciona enquanto a política não. Descodifique a notificação em vez de tratar cada resposta como sucesso. Quando a notificação nomeia um grupo ou uma proposta, a reparação está no lado da configuração e não na firewall.

A direção também importa. Um pedido sem resposta e uma resposta que nunca chega ao cliente são falhas diferentes, e só a segunda se parece com um tempo limite do lado do cliente.

Quarto, separe o IKE de tudo o resto no 4500

O porto 4500 transporta três coisas que numa vista resumida parecem iguais: IKE atrás de um marcador non-ESP zero de quatro bytes, ESP encapsulado cuja posição do marcador contém um SPI diferente de zero, e keepalives curtos. É esse marcador que separa o IKE do ESP encapsulado, por isso leia esses bytes antes de rotular o tráfego como IKE. Uma etiqueta de captura que lê 4500 é um número de porto, não um protocolo.

O ESP encapsulado é carga cifrada que não pode interpretar sem chaves, e a sua presença pode ser o sinal de um túnel a funcionar e não de uma falha.

Vigie os dois portos para a mesma tentativa, porque o IKE pode mudar para 4500 após a deteção de NAT, embora tenha aberto no 500. Um traço filtrado apenas no 500 parece silencioso exatamente quando a negociação teve êxito e se mudou. Alargue o filtro e releia a mesma janela temporal antes de tirar qualquer conclusão da ausência.

O que significa o silêncio num ponto de observação

A ausência de resposta no cliente prova apenas o que esse ponto observou. A filtragem, o encaminhamento, o endereço remoto errado, um serviço em baixo e uma incompatibilidade de protocolo produzem todos o mesmo traço vazio.

Um ICMP unreachable relevante acrescenta prova, mas leia o pacote citado lá dentro e anote o endereço do dispositivo que o enviou.

A recusa de um router é um evento diferente de um erro autenticado devolvido pelo extremo, e só o segundo prova que o serviço está vivo. Correlacione a mesma tentativa com registos do servidor ou com uma observação aprovada para saber se o pedido chegou e se uma resposta saiu. Mantenha as capturas limitadas e privadas, porque os campos legíveis do aperto de mão não tornam o resto do ficheiro inofensivo. O resultado que vale a pena é um pedido e uma resposta emparelhados, ou uma lacuna documentada com um ponto de observação nomeado.

Artigos relacionados