Uvozite profil v namizni odjemalec in prva napaka je pogosto vrstica, ki je odjemalec noče upoštevati: kavelj skripta, ki ga ne bo zagnal, ali vrednost script-security, ki se mu zdi preveč dovoljujoča. Zvišanje števila odstrani pogovorno okno. A razširi tudi, kaj sme ta profil izvajati na vašem računalniku, kar je nenavadna stvar za podeliti samo zato, da bi se znebili opozorila. Sledite uvozu do direktive in odločitev postane konkretna.

Od pogovornega okna za uvoz do direktive

Profil je besedilna datoteka z direktivami in odjemalec jih prebere, preden obstaja kakšen tunel. Direktiva, kot je up, down ali tls-verify, poimenuje zunanji program, ki naj bi ga OpenVPN zagnal ob določenem trenutku. Ali je OpenVPN pripravljen, da ga zažene, je ločena nastavitev z imenom script-security, in profil jo običajno nastavi tudi.

Opozorilo torej ni o kriptografiji ali potrdilih. Je o konfiguracijski datoteki, ki od odjemalca zahteva, da na gostitelju nekaj izvede, in o odjemalcu, ki preverja, ali njegova trenutna raven dovoljenj to zahtevo dopušča.

Na tej stopnji sta dve različni napaki videti enaki. Profil, ki zahteva raven, ki je odjemalec ne bo dal, povzroči zavrnitev. Profil, ki zahteva raven, ki jo odjemalec da, a skript manjka, namesto tega povzroči napako med izvajanjem, in oba se v nitih podpore zamenjujeta. Eno je vprašanje dovoljenj, drugo vprašanje pakiranja.

Kaj vsaka raven dejansko odpre

Raven 0 popolnoma prepove klice zunanjih programov, kar je dosledno pri odjemalcu, ki svoj vmesnik nastavi sam brez pomoči, in nedosledno pri tistem, ki se obrne na operacijski sistem. Raven 1, privzeta, dovoli vgrajene izvršljive datoteke, ki jih potrebuje konfiguracija vmesnika in poti. Nobena raven ne zažene ničesar, kar je priskrbel uporabnik.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials visible to child processes and their logs

Raven 2 je zanimiva meja, ker dopušča uporabniško določene skripte. Od te točke se pravice odjemalca uporabljajo za kodo, ki je morda nikoli niste prebrali, klicano v trenutkih, ki jih niste izbrali, v okolju, ki vsebuje podrobnosti povezave. Raven 3 gre dlje in omogoča posredovanje gesel prek okoljskih spremenljivk, zato jo priročnik opisuje kot potencialno nevarno.

Nobena od teh številk ni nastavitev moči. Profil na ravni 3 nima boljšega šifriranja kot tisti na ravni 1; preprosto ima večjo površino izvajanja, tunel pa je enak.

Odločite, kaj si profil zasluži

Najprej vprašajte, čemu je skript namenjen, nato pa, katero raven potrebuje. Kavelj, ki potisne nastavitve DNS ali po povezavi popravi pot, je legitimen razlog za zagon nečesa. Kavelj, ki v začasni mapi kliče neznano binarno datoteko, je razlog za ustavitev.

Pot skripta je enako pomembna kot skript. Relativna pot se razreši glede na mapo, ki jo uporablja odjemalec, in v mapo, v katero je mogoče pisati, spremeni enkratni uvoz v trajno mesto izvajanja. Absolutne poti v mapi, ki je uporabnik ne more spremeniti, so oblika, ki ji je treba dati prednost.

Skripti podedujejo tudi okolje odjemalca, kjer živijo poverilnice in metapodatki povezave. Prav to dedovanje naredi raven 3 nevarno v kombinaciji s skriptom, ki beleži svoje okolje, in zato si diagnostični izpis odjemalca z omogočenimi skripti zasluži drugi pogled, preden ga prilepite v zahtevek. Preden ga delite, odstranite okolje.

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

Spremenite eno stvar, nato pa opazujte tudi razgradnjo

Če profil res potrebuje skript, spremenite le raven in le za ta profil. Zaženite odjemalec v ospredju s podrobnim izhodom, da bodo lastne napake skripta vidne, namesto da jih pogoltne upravitelj storitev.

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

Preizkusite celoten življenjski cikel, ne le povezave. Kavelj ob izklopu, ki spodleti, pusti poti, ki kažejo na mrtev tunel, kar ustvari stroj, ki je videti povezan in ne doseže ničesar. Preden spremembo razglasite za končano, se enkrat znova povežite in enkrat prekinite, ter po vsakem preverite usmerjevalno tabelo.

Shranite kopijo izvirnega profila. Če odjemalec platforme ne izvaja istega modela skriptov, lahko brisanje direktiv do uspešnega uvoza odstrani integracijo DNS ali poti, ki jo je tunel potreboval, in nastala povezava se bo brezhibno overila, ne da bi kar koli razrešila.

Odločitev, ki jo velja zabeležiti, je ozka: kateri skript, na kateri poti, na kateri ravni odobren, za kateri profil. Vse ostalo v profilu ostane nespremenjeno, in to je stavek, ki ga lahko pregledovalec preveri.

Sorodni članki