Monitore pares VPN sem registrar onde navegam
A disponibilidade exige quatro campos, não uma captura. Leia handshakes e contadores num intervalo documentado, mantenha os rótulos estáveis e defina uma regra de retenção.
Monitorar um par VPN exige quatro fatos, e nenhum deles é um destino. Se o túnel está ativo, quando trocou tráfego pela última vez, quais chaves estão envolvidas e quanto se moveu bastam para a disponibilidade. Qualquer coisa além disso é um registro sobre uma pessoa, e deveria ser uma decisão deliberada em vez de um efeito colateral de abrir uma página de status. Comece pela pergunta que precisa responder e depois escolha a menor saída que a responde.
Decida a pergunta antes da ferramenta
Escreva primeiro a pergunta operacional: este par está conectado e movimenta tráfego? Essa pergunta exige uma visão ao vivo, e uma visão ao vivo não tem problema de retenção. Uma segunda pergunta, se o par estava conectado às 02:00 de terça-feira passada, exige uma série armazenada e, portanto, uma decisão de retenção. Separar as duas é todo o desenho, porque a visão ao vivo é barata enquanto a série armazenada se transforma numa conversa sobre proteção de dados.
Mantenha também a verificação de saúde separada da saída de status. Um handshake recente prova que o túnel negociou, não que a aplicação privada por trás funcione, então teste a aplicação com uma verificação autorizada em vez de inferi-la dos contadores. Quando a verificação falha e o handshake é recente, o problema está além do túnel.
Leia os três campos que a respondem
A saída de status simples do WireGuard traz a interface, a chave pública, o endpoint, o último handshake e os contadores de transferência. A presença exige a chave pública e o último handshake; se for preciso, acrescente os contadores de bytes para ver movimento. O endpoint não é necessário para a presença e é o primeiro campo a descartar, porque identifica de onde um dispositivo se conecta. A página do manual descreve cada campo que a ferramenta imprime, e é curta o bastante para ler uma vez:
wg show
wg show wg0 latest-handshakes
Leia esses números como idades em vez de booleanos. Um handshake só é atual em relação ao intervalo de renovação de chaves do próprio protocolo, e um contador que não se moveu pode significar um par inativo em vez de um quebrado. Mantenha os dois na mesma visão para que idade e movimento sejam lidos juntos.
Escolha um intervalo que consiga defender
Cada amostra de status é um registro, portanto o intervalo é uma decisão de retenção com rótulo de monitoramento. Uma amostra a cada dez segundos dá detalhe fino e multiplica as linhas armazenadas, enquanto uma amostra por minuto costuma bastar para a disponibilidade a um sexto do custo. Escolha o intervalo a partir do tempo de resposta prometido e não daquilo que a ferramenta consegue fazer. Depois escreva o número ao lado do painel.
Para o OpenVPN, o recurso de status grava um arquivo num intervalo configurado. Na configuração do servidor isso aparece assim status /var/log/openvpn-status.log 60, em que o número final são os segundos entre regravações, e o arquivo é substituído em vez de acrescentado. Esse detalhe importa: um arquivo substituído não tem histórico, enquanto um coletor que acrescenta cria um.
Confirme que o coletor também respeita o intervalo. Uma ferramenta que amostra a cada segundo e guarda uma linha por minuto ainda lê a cada segundo.
Mantenha os rótulos estáveis e o mapeamento restrito
Uma chave pública identifica uma relação de dispositivo mesmo sem nome anexado, então trate a chave como dado pessoal em vez de identificador opaco. Rotule os pares com identificadores internos estáveis que sobrevivem a reconexões, e mantenha o mapeamento de identificador para pessoa num lugar restrito. Um painel que grava uma série temporal é um registro armazenado mesmo quando a VPN não mantém arquivo próprio. Quando o painel é o único armazenamento, é nele que a regra de retenção se aplica.
Revise também o caminho de exportação, porque um CSV copiado sobrevive ao sistema que o produziu. A disponibilidade agregada costuma bastar para um relatório: a proporção de pares com handshake dentro da janela responde à pergunta operacional sem listar quem estava conectado e quando.
Documente o que recolhe e o que não recolhe
Escreva a descrição da recolha em linguagem simples: quais campos, de que interface, em que intervalo, guardados onde, conservados por quanto tempo e quem pode lê-los. Coloque-a ao lado do runbook e não num repositório de políticas que ninguém abre durante um incidente. A descrição também deve dizer o que o monitoramento não consegue ver, porque é isso que impede alguém de supor que a ausência de dados de navegação significa a ausência de registros.
Revise a janela de retenção sempre que o monitoramento mudar, porque um campo novo prolonga silenciosamente o que é conservado. Depois apague o que a descrição diz que apaga, e verifique se a eliminação realmente ocorreu.