Úrovne script-security v OpenVPN od 0 do 3 a čo každá z nich otvára
Každá úroveň script-security rozširuje, čo profil smie spúšťať: najprv správcovskí pomocníci, potom používateľské skripty, nakoniec heslá v prostredí. Prečítajte si direktívy.
Naimportujte profil do desktopového klienta a prvým zlyhaním býva riadok, ktorý klient odmieta rešpektovať: háčik skriptu, ktorý nespustí, alebo hodnota script-security, ktorú považuje za príliš benevolentnú. Zvýšenie čísla dialóg odstráni. Zároveň však rozširuje, čo smie tento profil na vašom počítači spúšťať, čo je zvláštna vec udeliť len preto, aby zmizlo varovanie. Sledujte import až k direktíve a rozhodnutie sa skonkretizuje.
Od dialógu importu k direktíve
Profil je textový súbor s direktívami a klient ich číta skôr, než existuje akýkoľvek tunel. Direktíva ako up, down alebo tls-verify pomenúva externý program, ktorý má OpenVPN spustiť v určenom okamihu. Či je OpenVPN ochotný ho spustiť, je samostatné nastavenie nazvané script-security a profil ho zvyčajne nastavuje tiež.
Varovanie teda nie je o kryptografii ani certifikátoch. Je o konfiguračnom súbore, ktorý žiada klienta, aby na hostiteľovi niečo spustil, a o klientovi, ktorý overuje, či to jeho súčasná úroveň oprávnení dovoľuje.
V tomto štádiu vyzerajú dve rôzne poruchy rovnako. Profil, ktorý žiada úroveň, ktorú klient nedá, skončí odmietnutím. Profil, ktorý žiada úroveň, ktorú klient dá, ale skript chýba, vyvolá namiesto toho chybu počas behu, a oboje sa v diskusiách podpory zamieňa. Jedno je otázka oprávnení a druhé otázka balenia.
Čo každá úroveň skutočne otvára
Úroveň 0 zakazuje volania externých programov úplne, čo je konzistentné u klienta, ktorý si rozhranie nastaví sám bez pomoci, a nekonzistentné u toho, kto volá operačný systém. Úroveň 1, predvolená, povoľuje vstavané spustiteľné súbory, ktoré potrebuje konfigurácia rozhrania a trás. Ani jedna z úrovní nespúšťa nič, čo dodal používateľ.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
Úroveň 2 je zaujímavá hranica, pretože pripúšťa používateľsky definované skripty. Od tohto bodu sa oprávnenia klienta vzťahujú na kód, ktorý ste možno nikdy nečítali, volaný v okamihoch, ktoré ste si nevybrali, v prostredí, ktoré obsahuje údaje o pripojení. Úroveň 3 ide ďalej a umožňuje odovzdávať heslá cez premenné prostredia, a preto ju príručka označuje za potenciálne nebezpečnú.
Žiadne z týchto čísel nie je nastavenie sily. Profil na úrovni 3 nemá lepšie šifrovanie než ten na úrovni 1; má jednoducho väčšiu plochu na spúšťanie a tunel je rovnaký.
Rozhodnite, čo si profil zaslúži
Pýtajte sa, na čo skript je, skôr než sa opýtate, akú úroveň potrebuje. Háčik, ktorý pretlačí nastavenia DNS alebo po pripojení opraví trasu, je legitímny dôvod niečo spustiť. Háčik, ktorý v dočasnom adresári volá neznámy binárny súbor, je dôvod zastaviť.
Cesta ku skriptu je rovnako dôležitá ako skript. Relatívna cesta sa vyhodnocuje voči adresáru, ktorý klient používa, a zapisovateľný adresár mení jednorazový import na trvalé miesto spúšťania. Absolútne cesty v adresári, ktorý používateľ nemôže meniť, sú tvar, ktorý treba preferovať.
Skripty tiež dedia prostredie klienta, v ktorom žijú prihlasovacie údaje a metadáta pripojenia. Práve toto dedenie robí úroveň 3 nebezpečnou v spojení so skriptom, ktorý zaznamenáva svoje prostredie, a preto si diagnostický výpis z klienta s povolenými skriptmi zaslúži druhý pohľad, kým ho vložíte do tiketu. Pred zdieľaním prostredie vyčistite.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnZmeňte jednu vec a potom sledujte aj ukončenie
Ak profil skript naozaj potrebuje, zmeňte len úroveň a len u tohto profilu. Spustite klienta v popredí s podrobným výstupom, aby boli viditeľné vlastné chyby skriptu, namiesto toho, aby ich pohltil správca služieb.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Otestujte celý životný cyklus, nie len pripojenie. Zlyhávajúci háčik pri odpájaní nechá trasy ukazovať na mŕtvy tunel, takže stroj vyzerá pripojený a nikam sa nedostane. Pred vyhlásením zmeny za hotovú sa raz znova pripojte a raz odpojte a po každom kroku skontrolujte smerovaciu tabuľku.
Uchovajte kópiu pôvodného profilu. Ak klientska aplikácia platformy neimplementuje rovnaký model skriptov, mazanie direktív do úspešného importu môže odstrániť integráciu DNS alebo trás, ktorú tunel potreboval, a výsledné pripojenie sa dokonale autentifikuje, ale nič nevyrieši.
Rozhodnutie na zaznamenanie je úzke: ktorý skript, na ktorej ceste, na ktorej úrovni povolený, pre ktorý profil. Všetko ostatné v profile zostáva nezmenené, a to je veta, ktorú recenzent môže overiť.