Læs din VPN-log, før du sender den: felt for felt
Supportlogfiler indeholder brugernavne, certifikatnavne, interne adresser og nogle gange en nøgle. Gennemgå felterne, søg efter hemmeligheder, og send derefter et redigeret uddrag.
Du åbner en supportbillet, vedhæfter det diagnostikudtræk, klienten har lavet, og venter. Filen indeholder sandsynligvis slet ingen browserhistorik, og det er netop det, der får den til at føles sikker. Den indeholder stadig, hvem du er, hvilken maskine du brugte, hvilke interne adresser du nåede og hvornår, og af og til en privat nøgle kopieret ind af en klient, der logger sin konfiguration. At gennemgå filen, før du sender den, tager omkring fem minutter og forhindrer en permanent afsløring.
Åbn den, og læs de første fyrre linjer
Start foroven, hvor klienter normalt dumper version, platform og konfiguration. De første linjer fortæller, hvor ordrig filen er, og det bestemmer, hvor meget af resten du skal bekymre dig om. En standardlog og en fejlretningslog er forskellige artefakter med forskellig eksponering.
head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'
Kontroller også filens størrelse og form, før du læser noget af den. En tekstfil på to megabyte med én begivenhed, der gentages, er let at skære ned. En binær optagelse i samme mappe er et helt andet problem, og den kræver en anden samtale med den, der bad om udtrækket.
På Windows er ækvivalenterne én cmdlet hver, og den første er værd at køre på enhver fil, du ikke selv har oprettet:
Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime
Felterne, der identificerer en person
Brugernavne dukker op steder, folk ikke forventer: kontoen, der bruges til godkendelse, certifikatets emne, profilens sti under en hjemmemappe og maskinnavnet, der ofte koder et rigtigt navn. En log, der redigerer kontofeltet og lader hjemmestien være intakt, har ikke redigeret noget.
| 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 |
Konsistens betyder mere end fuldstændighed, når en supportingeniør skal følge én session gennem filen. Erstat værdier med stabile etiketter i stedet for at slette dem, så hver forekomst af den samme bruger stadig læses som den samme bruger. At slette feltet helt bryder den tråd, ingeniøren har brug for, og gør ikke filen sikrere.
Et tidsstempel er også personoplysninger i samlet form. De tidspunkter, hvor en konto har været forbundet, taget over en måned, beskriver arbejdstider og rejser. Hvis spørgsmålet ikke behøver hele området, skal du skære filen til vinduet omkring hændelsen.
Felterne, der identificerer et netværk
Endpoint-adresser, interne ruter og push-konfigurerede valgmuligheder beskriver formen af et privat netværk. Det er præcis den information, en angriber gerne ville have, og den findes normalt i langt større detaljeringsgrad, end billetten har brug for.
Kig efter den adressefamilie, der bruges, ikke kun den, du forventede. En dual-stack-klient kan logge et IPv6-endpoint og et sæt IPv6-ruter, som ingen tænkte på at redigere, fordi gennemgangen kun ledte efter punktseparerede kvadrupler.
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
Den unikke liste er pointen. Den fortæller, hvor mange forskellige adresser filen nævner, og det er normalt langt færre, end det føles, når man ruller. Den giver dig også en tjekliste at redigere efter og en måde at bevise, at du dækkede dem alle. Ti adresser er et arbejde på fem minutter, og hundrede fortæller dig, at udtrækket er bredere end spørgsmålet.
Behold topologien, hvis ingeniøren har brug for den. At erstatte anden og tredje oktet, mens subnetrelationerne bevares, besvarer spørgsmålet uden at offentliggøre området. Det samme trick virker for IPv6-præfikser. Det, ingeniøren har brug for, er fejlens form, og formen overlever en konsistent substitution.
Hemmeligheder gemmer sig i former, ikke i labels
En privat nøgle behøver ikke ordet “password” i nærheden. Den optræder som en blok mellem markørlinjer, som en lang base64-streng eller som et inline-konfigurationsdump. Tokens optræder som forespørgselsparametre, og legitimationsoplysninger optræder inde i URL’er, som en klient loggede ordret.
grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log
Det andet mønster er det, folk glemmer. En URL af formen skema, bruger, adgangskode, vært er en komplet legitimationsoplysning, og klienter logger sådanne URL’er, hver gang en proxy eller et feed konfigureres med inline-godkendelse.
Send aldrig den originale fil som bevis for, at du ikke har redigeret den. Hvis en operatør insisterer på et uændret udtræk, så spørg, hvad de skal bruge det til, send det gennem deres verificerede supportkanal, og slet din lokale kopi bagefter. Den anmodning er legitim; en offentlig kopiering er ikke.
Byg den redigerede kopi, og send uddraget
Arbejd på en kopi, opbevar originalen et beskyttet sted, og rediger med en kommando, der kan gentages, i stedet for i hånden. Én gennemgang af adressemønstrene fanger det meste af det:
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
Det endelige antal skal være nul. Hvis det ikke er, har redigeringsgennemgangen overset en form, og du bør se på de linjer, før du sender noget. Læs også den redigerede fil én gang med dine egne øjne; et script fanger mønstre, ikke kontekst.
Send det mindste uddrag, der stadig viser fejlen. Ti linjer omkring fejlen er normalt nok, og de er langt lettere at gennemgå end en fil på to megabyte. Opbevar derefter kortlægningen mellem dine etiketter og de rigtige værdier et sted, du kontrollerer, fordi opfølgningsspørgsmålet får brug for den.
OpenVPN’s dokumentation om logning beskriver, hvordan detaljeringsniveauer ændrer, hvad der registreres, hvilket er nyttig kontekst til at afgøre, hvor meget af filen problemet egentlig kræver.