Fișiere OVPN necunoscute: risc local și încredere la distanță
Un profil poate influența clientul de pe calculatorul tău și poate alege operatorul care îți vede traficul. Verifică ambele decizii înainte de a importa fișierul.
Tratează un fișier OVPN ca intrare pentru un program, nu ca un certificat că conținutul lui este inofensiv. Verificarea adresei serverului răspunde doar unde vrea profilul să se conecteze, și nimic altceva. În acel fișier stau două decizii de încredere separate: ce poate face clientul pe calculatorul tău și care operator primește traficul. Un nume de protocol cunoscut nu le rezolvă pe niciuna.
Două decizii se ascund într-un singur fișier
Prima decizie este locală. Profilul este un limbaj de configurare, iar clientul care îl citește poate accepta directive care încarcă un plugin, rulează un script sau schimbă modul în care se aplică rutarea și DNS. A doua decizie este la distanță. Indiferent ce conține fișierul, operatorul de ieșire vede traficul care ajunge la el.
Confundarea celor două produce sfaturi proaste în ambele direcții: un profil cu aspect curat de la un operator necunoscut, sau profilul unui operator cunoscut cu un cârlig pe care nimeni nu l-a citit. Un profil sigur local poate livra totuși traficul tău cuiva pe care nu l-ai alege.
Citește profilul înainte ca vreun client să o facă
Citește fișierul ca text înainte ca vreun client să îl proceseze. Caută directive care trimit în afara fișierului, fac referire la executabile sau schimbă privilegii, și compară acea listă cu suportul documentat al clientului. O căutare scurtă nu este un audit de securitate, dar îți spune dacă profilul este o listă de servere sau ceva mai mult.
grep -nE '^(script-security|up|down|plugin|route-up|ipchange)' untrusted.ovpn
Un rezultat gol este liniștitor și nu este concludent, pentru că opțiunile pot interacționa sau pot veni dintr-un fișier inclus. Tratează lista filtrată ca un motiv să citești mai departe, nu ca o sentință.
Instrucțiunile care vin împreună cu profilul merită aceeași atenție ca profilul. Patru cereri ar trebui să te oprească: activarea scripturilor, instalarea unui helper sau a unei biblioteci, rularea clientului ca administrator sau slăbirea unei restricții de import. Fiecare mută granița încrederii spre exterior, și niciuna nu face parte din importul obișnuit al unei liste de servere.
Citește și fișierul întreg o dată, pentru că o singură linie necunoscută se judecă mai ușor în context decât într-o listă filtrată. Dacă o linie îți este necunoscută, caută-o în manualul clientului tău în loc să ghicești.
Ce va executa de fapt clientul
Manualul 2.6 al Community OpenVPN documentează treptele script-security: nivelul 1 este implicit și blochează scripturile definite de utilizator, în timp ce nivelul 2 le permite. Încărcarea pluginurilor este un mecanism separat, cu directiva lui. De aceea același fișier poate însemna lucruri diferite în clienți diferiți. Clienții mobili și cei ai producătorilor pot accepta un set mai îngust de directive, sau niciunul dintre cârlige.
Metoda de pornire contează la fel de mult ca clientul. Un profil pornit de un helper privilegiat poate face mai mult decât unul pornit în spațiul utilizatorului, iar această diferență este un motiv să citești mesajul de import în loc să îl ignori.
Și versiunea contează, pentru că aceste niveluri sunt definite pentru fiecare versiune, iar un client cu câteva versiuni în urmă poate să nu implementeze aceeași politică. Citește manualul care corespunde compilării pe care o rulezi, nu pe cel mai nou pe care îl găsești. Dacă clientul nu afișează nicăieri un șir de versiune, acesta este deja un motiv să încetinești.
Compară operatorul, nu doar adresa
Compară operatorii așa cum compari orice alt intermediar. Întreabă cine administrează ieșirea, ce înregistrează și cum a ajuns profilul la tine. O pagină de descărcare verificată și o amprentă potrivită spun mai mult decât un nume de gazdă cunoscut. Un server accesibil dovedește doar că ceva a răspuns.
Credențialele sunt partea în care oamenii greșesc sub presiune. Nu tasta parola unui cont fără legătură într-un profil descărcat pentru că numele serverului pare cunoscut. Un profil poate purta și o cheie privată în clar, așa că publicarea întregului fișier într-un fir de recenzie predă acea cheie firului.
O sesiune HTTPS validată corect ascunde în continuare conținutul paginii de oricine doar redirecționează pachete, așa că ieșirea nu vede automat fiecare parolă. Vede însă ce site-uri atingi, iar această graniță merită spusă cu precizie în loc să fie exagerată.
Acolo unde originea fișierului rămâne neclară, sau un privilegiu cerut nu are o explicație pe care o poți accepta, înlocuiește profilul cu unul dintr-o sursă care poate fi trasă la răspundere. Pe o conexiune de lucru administrată, administratorul ar trebui să aprobe clientul și configurația ca o singură decizie, nu ca două. Nimic aici nu îți cere să dovedești mai întâi rea-credință; refuzul accesului este un răspuns legitim.