Citiți jurnalul VPN înainte de a-l trimite: câmp cu câmp
Jurnalele de asistență conțin nume de utilizator, nume de certificate, adrese interne și uneori o cheie. Parcurgeți câmpurile, căutați secrete, apoi trimiteți un extras redactat.
Deschideți un tichet de asistență, atașați exportul de diagnostic produs de client și așteptați. Fișierul probabil nu conține niciun istoric de navigare, și exact asta îl face să pară sigur. Totuși conține cine sunteți, ce mașină ați folosit, ce adrese interne ați atins și când, și uneori o cheie privată copiată de un client care își înregistrează configurația. Parcurgerea fișierului înainte de trimitere durează aproximativ cinci minute și împiedică o divulgare permanentă.
Deschideți-l și citiți primele patruzeci de linii
Începeți de sus, unde clienții descarcă de obicei versiunea, platforma și configurația. Primele linii vă spun cât de detaliat este fișierul, iar asta determină cât din restul trebuie să vă intereseze. Un jurnal implicit și un jurnal de depanare sunt artefacte diferite cu expunere diferită.
head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'
Verificați și dimensiunea și forma fișierului înainte de a citi ceva din el. Un fișier text de două megabaiți cu un eveniment repetat este ușor de scurtat. O captură binară în aceeași mapă este o problemă complet diferită și necesită o altă conversație cu cel care a cerut exportul.
În Windows echivalentele sunt câte un cmdlet fiecare, iar primul merită rulat pe orice fișier pe care nu l-ați creat dumneavoastră:
Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime
Câmpurile care identifică o persoană
Numele de utilizator apar în locuri în care oamenii nu se așteaptă: contul folosit pentru autentificare, subiectul certificatului, calea profilului sub un director principal și numele mașinii care codifică adesea un nume real. Un jurnal care redactează câmpul contului și lasă calea principală intactă nu a redactat nimic.
| 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 |
Consecvența contează mai mult decât completitudinea atunci când un inginer de asistență trebuie să urmărească o sesiune prin fișier. Înlocuiți valorile cu etichete stabile în loc să le ștergeți, astfel încât fiecare apariție a aceluiași utilizator să se citească în continuare ca același utilizator. Ștergerea completă a câmpului rupe firul de care are nevoie inginerul și nu face fișierul mai sigur.
O marcă temporală este și ea date personale în agregat. Orele la care un cont s-a conectat, luate pe o lună, descriu programul de lucru și călătoriile. Dacă întrebarea nu are nevoie de întregul interval, tăiați fișierul la fereastra din jurul evenimentului.
Câmpurile care identifică o rețea
Adresele punctelor finale, rutele interne și opțiunile împinse descriu forma unei rețele private. Exact aceasta este informația pe care un atacator ar vrea să o aibă, și de obicei este prezentă mult mai detaliat decât are nevoie tichetul.
Căutați familia de adrese folosită, nu doar pe cea la care vă așteptați. Un client cu stivă dublă poate înregistra un punct final IPv6 și un set de rute IPv6 la care nimeni nu s-a gândit să le redacteze, pentru că revizuirea a căutat doar cvadrupluri cu puncte.
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
Lista unică este esența. Vă spune câte adrese distincte menționează fișierul, iar de obicei sunt mult mai puține decât pare la derulare. Vă oferă și o listă de verificare pentru redactare și o modalitate de a dovedi că le-ați acoperit pe toate. Zece adrese sunt o muncă de cinci minute, iar o sută vă spun că exportul este mai larg decât întrebarea.
Păstrați topologia dacă inginerul are nevoie de ea. Înlocuirea celui de-al doilea și al treilea octet păstrând relațiile de subrețea răspunde la întrebare fără a publica intervalul. Același truc funcționează pentru prefixele IPv6. Ce are nevoie inginerul este forma defecțiunii, iar forma supraviețuiește unei substituții consecvente.
Secretele se ascund în forme, nu în etichete
O cheie privată nu are nevoie de cuvântul “password” în apropiere. Apare ca un bloc între linii de marcaj, ca un șir base64 lung sau ca o descărcare de configurație în linie. Tokenurile apar ca parametri de interogare, iar acreditările apar în interiorul URL-urilor pe care un client le-a înregistrat cuvânt cu cuvânt.
grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log
Al doilea model este cel pe care oamenii îl uită. Un URL de forma schemă, utilizator, parolă, gazdă este o acreditare completă, iar clienții înregistrează astfel de URL-uri ori de câte ori un proxy sau un flux este configurat cu autentificare în linie.
Nu trimiteți niciodată fișierul original ca dovadă că nu l-ați editat. Dacă un operator insistă pentru un export nemodificat, întrebați la ce îi trebuie, trimiteți-l prin canalul lor de asistență verificat și apoi ștergeți copia locală. Acea cerere este legitimă; o lipire publică nu este.
Construiți copia redactată și trimiteți extrasul
Lucrați pe o copie, păstrați originalul într-un loc protejat și redactați cu o comandă repetabilă, nu manual. O singură trecere peste modelele de adrese prinde cea mai mare 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
Numărul final ar trebui să fie zero. Dacă nu este, trecerea de redactare a ratat o formă și ar trebui să vă uitați la acele linii înainte de a trimite ceva. Citiți și fișierul redactat o dată cu propriii ochi; un script prinde modele, nu context.
Trimiteți cel mai mic extras care încă arată defecțiunea. Zece linii din jurul erorii sunt de obicei suficiente și sunt mult mai ușor de revizuit decât un fișier de doi megabaiți. Apoi păstrați corespondența dintre etichete și valorile reale într-un loc pe care îl controlați, pentru că întrebarea ulterioară o va necesita.
Documentația OpenVPN despre jurnalizare descrie cum nivelurile de verbositate schimbă ce se înregistrează, ceea ce este un context util pentru a decide cât din fișier necesită problema cu adevărat.