Vous ouvrez un ticket d’assistance, joignez l’export de diagnostic produit par le client et attendez. Le fichier ne contient probablement aucun historique de navigation, et c’est précisément ce qui le fait paraître sûr. Il contient toujours qui vous êtes, quelle machine vous avez utilisée, quelles adresses internes vous avez atteintes et quand, et parfois une clé privée copiée par un client qui journalise sa configuration. Parcourir le fichier avant de l’envoyer prend environ cinq minutes et évite une divulgation définitive.

Ouvrez-le et lisez les quarante premières lignes

Commencez par le haut, où les clients déversent généralement la version, la plateforme et la configuration. Les premières lignes vous disent à quel point le fichier est bavard, ce qui détermine quelle part du reste vous devez prendre en compte. Un journal par défaut et un journal de débogage sont des artefacts différents avec une exposition différente.

head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'

Vérifiez aussi la taille et la forme du fichier avant d’en lire quoi que ce soit. Un fichier texte de deux mégaoctets avec un événement répété se retaille facilement. Une capture binaire dans le même dossier est un problème entièrement différent, et elle demande une autre conversation avec celui qui a demandé l’export.

Sous Windows, les équivalents sont une cmdlet chacun, et la première vaut la peine d’être exécutée sur tout fichier que vous n’avez pas créé vous-même :

Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime

Les champs qui identifient une personne

Les noms d’utilisateur apparaissent là où les gens ne les attendent pas : le compte utilisé pour s’authentifier, le sujet du certificat, le chemin du profil sous un répertoire personnel et le nom de la machine qui encode souvent un vrai nom. Un journal qui expurge le champ du compte et laisse le chemin personnel intact n’a rien expurgé.

FieldWhat it identifiesPractical treatment
Account or usernameA person, and often an employerReplace consistently, keep the mapping
Certificate subject and CNDevice or user identityKeep the structure, replace the value
Home directory pathA login name, sometimes a full nameReplace the segment, not the whole path
Machine or hostnameA person or a physical locationReplace with a stable pseudonym

La cohérence compte plus que l’exhaustivité quand un ingénieur d’assistance doit suivre une session dans le fichier. Remplacez les valeurs par des étiquettes stables plutôt que de les supprimer, afin que chaque occurrence du même utilisateur se lise toujours comme le même utilisateur. Supprimer le champ entièrement casse le fil dont l’ingénieur a besoin et ne rend pas le fichier plus sûr.

Un horodatage est aussi une donnée personnelle dans son ensemble. Les heures auxquelles un compte s’est connecté, prises sur un mois, décrivent des horaires de travail et des déplacements. Si la question n’a pas besoin de toute la plage, retaillez le fichier à la fenêtre autour de l’événement.

Les champs qui identifient un réseau

Les adresses de points de terminaison, les routes internes et les options poussées décrivent la forme d’un réseau privé. C’est exactement l’information qu’un attaquant aimerait avoir, et elle est généralement présente bien plus en détail que le ticket n’en a besoin.

Cherchez la famille d’adresses utilisée, pas seulement celle que vous attendiez. Un client à double pile peut journaliser un point de terminaison IPv6 et un ensemble de routes IPv6 que personne n’a pensé à expurger parce que la revue ne cherchait que des quadruplets pointés.

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

La liste unique est le point clé. Elle vous dit combien d’adresses distinctes le fichier mentionne, ce qui est généralement bien moins que ce qu’il paraît en faisant défiler. Elle vous donne aussi une liste de contrôle pour expurger et un moyen de prouver que vous les avez toutes couvertes. Dix adresses, c’est un travail de cinq minutes, et cent vous disent que l’export est plus large que la question.

Conservez la topologie si l’ingénieur en a besoin. Remplacer le deuxième et le troisième octet tout en préservant les relations de sous-réseau répond à la question sans publier la plage. La même astuce fonctionne pour les préfixes IPv6. Ce dont l’ingénieur a besoin, c’est la forme de la panne, et la forme survit à une substitution cohérente.

Les secrets se cachent dans les formes, pas dans les étiquettes

Une clé privée n’a pas besoin du mot “password” à proximité. Elle apparaît comme un bloc entre des lignes de marqueur, comme une longue chaîne base64 ou comme un vidage de configuration en ligne. Les jetons apparaissent comme des paramètres de requête, et les identifiants apparaissent dans des URL qu’un client a journalisées mot pour mot.

grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log

Le second motif est celui que les gens oublient. Une URL de la forme schéma, utilisateur, mot de passe, hôte est un identifiant complet, et les clients journalisent de telles URL chaque fois qu’un proxy ou un flux est configuré avec une authentification en ligne.

N’envoyez jamais le fichier original pour prouver que vous ne l’avez pas modifié. Si un opérateur insiste sur un export non modifié, demandez à quoi il lui sert, envoyez-le par son canal d’assistance vérifié et supprimez ensuite votre copie locale. Cette demande est légitime ; un collage public ne l’est pas.

Construisez la copie expurgée et envoyez l’extrait

Travaillez sur une copie, gardez l’original dans un endroit protégé et expurgez avec une commande reproductible plutôt qu’à la main. Une seule passe sur les motifs d’adresses attrape l’essentiel :

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

Le décompte final devrait être nul. S’il ne l’est pas, la passe d’expurgation a manqué une forme et vous devriez regarder ces lignes avant d’envoyer quoi que ce soit. Lisez aussi le fichier expurgé une fois de vos propres yeux ; un script attrape des motifs, pas du contexte.

Envoyez le plus petit extrait qui montre encore la panne. Dix lignes autour de l’erreur suffisent généralement, et elles sont bien plus faciles à relire qu’un fichier de deux mégaoctets. Gardez ensuite la correspondance entre vos étiquettes et les valeurs réelles dans un endroit que vous contrôlez, car la question de suivi en aura besoin.

La documentation d’OpenVPN sur la journalisation décrit comment les niveaux de verbosité changent ce qui est enregistré, ce qui est un contexte utile pour décider de la part du fichier dont le problème a réellement besoin.

Articles similaires