Leia o registo VPN antes de o enviar: campo a campo
Os registos de suporte contêm nomes de utilizador, nomes de certificados, endereços internos e por vezes uma chave. Percorra os campos, procure segredos e envie depois um extrato redigido.
Abre um ticket de suporte, anexa a exportação de diagnóstico que o cliente produziu e espera. O ficheiro provavelmente não contém qualquer histórico de navegação, e é isso que o faz parecer seguro. Ainda assim contém quem é, que máquina utilizou, que endereços internos alcançou e quando, e por vezes uma chave privada copiada por um cliente que registra a sua configuração. Percorrer o ficheiro antes de o enviar leva cerca de cinco minutos e evita uma divulgação permanente.
Abra-o e leia as primeiras quarenta linhas
Comece pelo topo, onde os clientes costumam despejar versão, plataforma e configuração. As primeiras linhas dizem-lhe quão detalhado é o ficheiro, o que determina quanto do resto tem de considerar. Um registo predefinido e um registo de depuração são artefactos diferentes com exposições diferentes.
head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'
Verifique também o tamanho e a forma do ficheiro antes de ler seja o que for dele. Um ficheiro de texto de dois megabytes com um evento repetido é fácil de cortar. Uma captura binária na mesma pasta é um problema completamente diferente, e exige outra conversa com quem pediu a exportação.
No Windows os equivalentes são um cmdlet cada, e vale a pena executar o primeiro em qualquer ficheiro que não tenha criado:
Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime
Os campos que identificam uma pessoa
Os nomes de utilizador aparecem em locais que as pessoas não esperam: a conta usada para autenticar, o assunto do certificado, o caminho do perfil sob um diretório pessoal e o nome da máquina que muitas vezes codifica um nome real. Um registo que redige o campo da conta e deixa o caminho pessoal intacto não redigiu nada.
| Field | What it identifies | Practical treatment |
|---|---|---|
| Account or username | A person, and often an employer | Replace consistently, keep the mapping |
| Certificate subject and CN | Device or user identity | Keep the structure, replace the value |
| Home directory path | A login name, sometimes a full name | Replace the segment, not the whole path |
| Machine or hostname | A person or a physical location | Replace with a stable pseudonym |
A consistência importa mais do que a completude quando um engenheiro de suporte tem de seguir uma sessão pelo ficheiro. Substitua os valores por etiquetas estáveis em vez de os eliminar, para que cada ocorrência do mesmo utilizador continue a ler-se como o mesmo utilizador. Eliminar o campo por completo quebra o fio de que o engenheiro precisa e não torna o ficheiro mais seguro.
Um carimbo temporal também é dado pessoal no conjunto. As horas a que uma conta se ligou, tomadas ao longo de um mês, descrevem horários de trabalho e viagens. Se a questão não precisa de todo o intervalo, corte o ficheiro para a janela em torno do evento.
Os campos que identificam uma rede
Os endereços de extremidade, as rotas internas e as opções empurradas descrevem a forma de uma rede privada. É exatamente a informação que um atacante gostaria de ter, e costuma estar presente com muito mais detalhe do que o ticket necessita.
Procure a família de endereços em uso, não apenas a que esperava. Um cliente de pilha dupla pode registar um extremo IPv6 e um conjunto de rotas IPv6 que ninguém pensou em redigir porque a revisão só procurou quádruplos com pontos.
grep -nEo '([0-9]{1,3}\.){3}[0-9]{1,3}' vpn-support.log | sort -u | head -n 40
grep -nEo '([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}' vpn-support.log | sort -u | head -n 20
A lista única é o ponto. Diz-lhe quantos endereços distintos o ficheiro menciona, e normalmente são muito menos do que parece ao percorrer. Também lhe dá uma lista de verificação para redigir e uma forma de provar que os cobriu todos. Dez endereços são um trabalho de cinco minutos, e cem dizem-lhe que a exportação é mais ampla do que a questão.
Guarde a topologia se o engenheiro precisar dela. Substituir o segundo e o terceiro octeto mantendo as relações de sub-rede responde à questão sem publicar o intervalo. O mesmo truque funciona para os prefixos IPv6. O que o engenheiro precisa é da forma da falha, e a forma sobrevive a uma substituição consistente.
Os segredos escondem-se nas formas, não nas etiquetas
Uma chave privada não precisa da palavra “password” por perto. Aparece como um bloco entre linhas marcadoras, como uma cadeia base64 longa ou como um despejo de configuração em linha. Os tokens aparecem como parâmetros de consulta, e as credenciais aparecem dentro de URL que um cliente registou à letra.
grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log
O segundo padrão é o que as pessoas esquecem. Um URL da forma esquema, utilizador, palavra-passe, anfitrião é uma credencial completa, e os clientes registam esses URL sempre que um proxy ou um feed é configurado com autenticação em linha.
Nunca envie o ficheiro original como forma de provar que não o editou. Se um operador insistir numa exportação sem alterações, pergunte para que a precisa, envie-a pelo canal de suporte verificado e depois apague a sua cópia local. Esse pedido é legítimo; uma colagem pública não é.
Construa a cópia redigida e envie o extrato
Trabalhe sobre uma cópia, guarde o original num local protegido e redija com um comando repetível em vez de à mão. Uma única passagem pelos padrões de endereços apanha a maior parte:
cp vpn-support.log vpn-support.original.log
sed -E 's/([0-9]{1,3}\.){3}[0-9]{1,3}/ADDR/g; s/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+/USER@DOMAIN/g' \
vpn-support.original.log > vpn-support.redacted.log
grep -cE 'PRIVATE KEY|password|token' vpn-support.redacted.log
A contagem final deve ser zero. Se não for, a passagem de redação deixou escapar uma forma e deve olhar para essas linhas antes de enviar seja o que for. Leia também o ficheiro redigido uma vez com os seus próprios olhos; um script apanha padrões, não contexto.
Envie o extrato mais pequeno que ainda mostra a falha. Dez linhas em torno do erro costumam ser suficientes, e são muito mais fáceis de rever do que um ficheiro de dois megabytes. Depois guarde a correspondência entre as suas etiquetas e os valores reais num local que controle, porque a pergunta seguinte vai precisar dela.
A documentação de registo do OpenVPN descreve como os níveis de verbosidade mudam o que é registado, o que é um contexto útil para decidir quanto do ficheiro o problema realmente exige.