Legu vian VPN-protokolon antaŭ ol sendi ĝin: kampo post kampo
Subtenaj protokoloj enhavas uzantnomojn, atestilnomojn, internajn adresojn kaj foje ŝlosilon. Trairu la kampojn, serĉu sekretojn, poste sendu redaktitan eltiraĵon.
Vi malfermas subtenan bileton, alkroĉas la diagnostikan eksportaĵon, kiun la kliento produktis, kaj atendas. La dosiero verŝajne enhavas tute neniun retuman historion, kaj ĝuste tio igas ĝin ŝajni sekura. Ĝi tamen enhavas, kiu vi estas, kiun maŝinon vi uzis, kiujn internajn adresojn vi atingis kaj kiam, kaj foje privatan ŝlosilon kopiitan de kliento, kiu protokolas sian agordon. Trairi la dosieron antaŭ ol sendi ĝin daŭras proksimume kvin minutojn kaj malhelpas permanentan malkaŝon.
Malfermu ĝin kaj legu la unuajn kvardek liniojn
Komencu ĉe la supro, kie klientoj kutime elverŝas version, platformon kaj agordon. La unuaj linioj diras al vi, kiom detala estas la dosiero, kio determinas kiom da la resto vi devas prizorgi. Defaŭlta protokolo kaj sencimiga protokolo estas malsamaj artefaktoj kun malsama elmeto.
head -n 40 vpn-support.log
sed -n '1,40p' vpn-support.log | grep -nE 'version|platform|config|option'
Kontrolu ankaŭ la grandecon kaj formon de la dosiero antaŭ ol legi ajnan parton de ĝi. Teksta dosiero de du megabajtoj kun unu ripetata evento facile tranĉeblas. Binara kaptaĵo en la sama dosierujo estas tute alia problemo, kaj ĝi postulas alian konversacion kun tiu, kiu petis la eksportaĵon.
En Windows la ekvivalentoj estas po unu cmdlet, kaj la unuan indas ruli sur ajna dosiero, kiun vi mem ne kreis:
Get-Content .\vpn-support.txt -TotalCount 40
Get-Item .\vpn-support.txt | Select-Object Length,LastWriteTime
La kampoj, kiuj identigas personon
Uzantnomoj aperas en lokoj, kiujn homoj ne atendas: la konto uzata por aŭtentigi, la atestila subjekto, la profila vojo sub hejma dosierujo, kaj la maŝinnomo, kiu ofte kodas realan nomon. Protokolo, kiu redaktas la kontokampon kaj lasas la hejman vojon sendifekta, redaktis nenion.
| 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 |
Konsekvenco pli gravas ol kompleteco, kiam subtena inĝeniero devas sekvi unu sesion tra la dosiero. Anstataŭigu valorojn per stabilaj etikedoj anstataŭ forigi ilin, por ke ĉiu apero de la sama uzanto ankoraŭ legeblu kiel la sama uzanto. Forigi la kampon tute rompas la fadenon, kiun la inĝeniero bezonas, kaj ne igas la dosieron pli sekura.
Tempomarko ankaŭ estas persona datumaro en sumo. La tempoj, kiam konto konektiĝis, prenitaj dum monato, priskribas laborhorojn kaj vojaĝadon. Se la demando ne bezonas la plenan gamon, tranĉu la dosieron al la fenestro ĉirkaŭ la evento.
La kampoj, kiuj identigas reton
Finpunkta adresoj, internaj itineroj kaj puŝitaj opcioj priskribas la formon de privata reto. Ĝuste tion informon atakanto ŝatus havi, kaj ĝi kutime ĉeestas multe pli detale ol la bileto bezonas.
Serĉu la adresan familion uzatan, ne nur tiun, kiun vi atendis. Kliento kun duobla stako povas protokoli IPv6-finpunkton kaj aron da IPv6-itineroj, kiujn neniu pensis redakti, ĉar la revizio serĉis nur punktitajn kvaropojn.
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 unika listo estas la punkto. Ĝi diras al vi, kiom da malsamaj adresoj la dosiero mencias, kaj tio kutime estas multe malpli ol sentiĝas dum rulumado. Ĝi ankaŭ donas al vi kontrol-liston por redakti kaj manieron pruvi, ke vi kovris ĉiujn. Dek adresoj estas laboro de kvin minutoj, kaj cent diras al vi, ke la eksportaĵo estas pli larĝa ol la demando.
Konservu la topologion se la inĝeniero bezonas ĝin. Anstataŭigi la duan kaj trian okedojn konservante la subretajn rilatojn respondas la demandon sen publikigi la gamon. La sama truko funkcias por IPv6-prefiksoj. Kion la inĝeniero bezonas estas la formo de la paneo, kaj la formo postvivas konsekvencan anstataŭigon.
Sekretoj kaŝiĝas en formoj, ne en etikedoj
Privata ŝlosilo ne bezonas la vorton “password” proksime. Ĝi aperas kiel bloko inter markaj linioj, kiel longa base64-ĉeno aŭ kiel enmetita agorda elverŝo. Ĵetonoj aperas kiel petitparametroj, kaj legitimiloj aperas ene de URL-oj, kiujn kliento protokolis laŭvorte.
grep -nE 'BEGIN [A-Z ]*PRIVATE KEY|password|passwd|token|secret|psk|auth-user-pass' vpn-support.log
grep -nE 'https?://[^ ]*:[^ ]*@' vpn-support.log
La dua ŝablono estas tiu, kiun homoj forgesas. URL de la formo skemo, uzanto, pasvorto, gastiganto estas kompleta legitimilo, kaj klientoj protokolas tiajn URL-ojn ĉiam, kiam prokurilo aŭ fluo agordiĝas kun enmetita aŭtentigo.
Neniam sendu la originalan dosieron kiel pruvon, ke vi ne redaktis ĝin. Se operatoro insistos pri nemodifita eksportaĵo, demandu, por kio ĝi necesas, sendu ĝin tra ilia kontrolita subtena kanalo, kaj poste forigu vian lokan kopion. Tiu peto estas legitima; publika algluo ne estas.
Konstruu la redaktitan kopion kaj sendu la eltiraĵon
Laboru sur kopio, konservu la originalon en protektita loko, kaj redaktu per ripetebla komando anstataŭ mane. Unu paŝo tra la adresaj ŝablonoj kaptas la plej grandan parton:
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
La fina nombro devus esti nulo. Se ĝi ne estas, la redakta paŝo maltrafis formon, kaj vi devus rigardi tiujn liniojn antaŭ ol sendi ion ajn. Legu la redaktitan dosieron ankaŭ unufoje per viaj propraj okuloj; skripto kaptas ŝablonojn, ne kuntekston.
Sendu la plej malgrandan eltiraĵon, kiu ankoraŭ montras la paneon. Dek linioj ĉirkaŭ la eraro kutime sufiĉas, kaj ili estas multe pli facile reviziendaj ol dosiero de du megabajtoj. Poste konservu la mapadon inter viaj etikedoj kaj la realaj valoroj en loko, kiun vi kontrolas, ĉar la sekva demando bezonos ĝin.
La dokumentaro de OpenVPN pri protokolado priskribas, kiel niveloj de detalo ŝanĝas tion, kio registriĝas, kio estas utila kunteksto por decidi, kiom da la dosiero la problemo efektive postulas.