Vaša datoteka .ovpn lahko izvaja kodo, ne le usmerja promet
Profil, ki imenuje pomočnika up ali down, izvaja kodo z vašimi pravicami. Preverite pot, lastništvo, čiščenje in nastavitev script-security.
Večina ljudi bere datoteko .ovpn tako, kot bere stran nastavitev usmerjevalnika: naslovi, poti, seznam šifer. Del, ki izvaja kodo, je blizu dna, ob direktivah, ki izgledajo kot vodovodarsko delo, in teče s pravicami, ki jih odjemalec že ima. To je vrzel, ki jo izkoristi nepreviden ali zlonameren profil, in to je tudi vrzel, ki po treh tednih spremeni koristnega pomočnika DNS v težavo podpore. Direktiva dogodka, raven varnosti in lastništvo datoteke odločajo, kaj se lahko zgodi; vsebina skripta odloča, kaj se v resnici zgodi. Preberite vse štiri, preden se povežete.
Profil, ki zažene pomočnika, je program, ne nastavitvena datoteka
Direktive, kot sta route in dhcp-option, opisujejo stanje, ki naj bi ga odjemalec vzpostavil, in odjemalec jih obravnava kot podatke. Skript up je drugačen: odjemalec ga zažene kot proces in mu preda okolje, polno podrobnosti povezave, zato vse, kar je napisal njegov avtor, teče s pravicami vašega računa. Na prenosniku, kjer je uporabnik skrbnik, so to široka vrata za datoteko, ki je prišla kot priloga ali prilepljena iz niti foruma. Razlika ni slogovna, to je razlika med konfiguracijo in kodo.
Mit, ki se ga velja posloviti, je, da profil lahko le preusmeri promet. Pomočnik, ki izvaja ip route add, in tisti, ki izvaja curl proti oddaljenemu gostitelju, sta isti mehanizem, profil pa je od zunaj videti enak. Nič v videzu datoteke ne pove, katerega imate, zato mora pregled priti do samega skripta.
Kaj v resnici odloča o izvajanju in kako izgledajo vrstice, ki ga omogočajo
Pomočnika nadzorujejo tri stvari: direktiva dogodka, ki ga imenuje, raven script-security, ki ga dovoljuje, in lastna izvedba odjemalčeve platforme. Profil lahko zahteva kavelj in vseeno ne vidi ničesar, ker mobilni odjemalec ali okrnjena namizna različica tega dogodka morda sploh ne izvaja. Prav tako profil, ki zahteva več dovoljenj, kot jih njegova funkcija potrebuje, pove nekaj o svojem izvoru. Raven dovoljenja je zmožnost, ne odobritev. Vrstice, ki ga omogočajo, izgledajo tako, pot pa stoji namesto vaše.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shRaven 0 zavrne zunanje programe, raven 1, privzeta, pa dovoljuje samo vgrajene izvršljive datoteke odjemalca, zato kavelj potrebuje 2 ali več; raven 3 obstaja predvsem za posredovanje starih gesel in se ji je bolje izogniti. Profil, dobavljen s kavljem, potrebuje tako direktivo kot to raven, zato si ena vrstica blizu dna datoteke zasluži enak pregled kot blok potrdila. Priročnik OpenVPN navaja ravni dovoljenj in njegovo besedilo velja brati ob tem, kar profil v resnici zahteva.
Lastništvo, pot in s čim se pomočnik hrani
Profil, ki mu zaupate, a kaže na skript, ki ga lahko prepiše drug račun, ni zanesljiva ureditev, ker včerajšnji pregled ne opisuje več tega, kar teče danes. Preverite lastnika in način pomočnika ter preverite, da konfigurirana pot vodi do datoteke, ki ste jo pregledali, in ne do imena, ki ga lahko kaj drugega zasenči. Argumenti in okolje si zaslužijo enak pogled: odjemalec preda podrobnosti povezave kavlju, pomočnik, ki beleži celotno svoje okolje, pa morda zapisuje poverilnice v zahtevek za podporo. Prednost dajte dokumentirani integraciji ponudnika ali platforme pred skriptom DNS, kopiranim iz nepovezane objave, ker dva upravitelja razreševalnikov, ki se prepirata za isto datoteko, ustvarita okvaro, ki je videti kot pokvarjen VPN.
Ko prijavite kavelj, ki ne uspe, preden ga kamor koli prilepite, prečrtajte okolje. Izpis, ki vam pomaga pri odpravljanju napak, lahko nosi tudi žeton, ki vas overi.
Napake čiščenja se pokažejo po tem, ko tunela ni več
Pomočnik up doda poti in nastavitve razreševalnika, pomočnik down pa naj bi jih spet odstranil. Ko kavelj down manjka, tiho odpove ali se nikoli ne zažene, ker je bil odjemalec ubit, ostanki preživijo sejo. Promet nato ubira pot, ki je nihče ni načrtoval, in imena se razrešujejo prek razreševalnika, ki bi moral biti odstranjen, medtem ko je tunel videti zdrav. Ti simptomi pridejo po prekinitvi, zato se krivi omrežje in ne profil.
Preizkusite razgradnjo kot samostojen korak: dvignite tunel, zabeležite poti in razreševalnik, spustite ga in nato potrdite, da sta oba izginila. Profil, ki se poveže čisto, lahko vseeno pusti stanje za sabo, ničelna izhodna koda pomočnika pa ne dokazuje, da je razreševalnik končal tam, kjer mislite.
Pregled pomočnika in ohranitev izhoda
Preberite skript od začetka do konca in iščite tri stvari: ukaze, ki potrebujejo pravice, trdo kodirane poti, ki jih v vašem sistemu morda ni, in vsak omrežni klic, ki ga izvede. Nato poglejte, kako odpove, ker pomočnik, ki pogoltne napake, spremeni konfiguracijsko napako v uganko. Če ne morete v enem stavku povedati, kaj skript počne in kdo ga lahko spremeni, niste pripravljeni, da ga omogočite. Profil, ki zahteva več pravic, kot jih ta stavek potrebuje, je znak, da se ustavite.
Shranite zadnji delujoči profil in pomočnika, na katerega se je skliceval, v zaščiteno shrambo z zabeleženima obema različicama, da bo vrnitev kopija in ne obnova v najslabšem možnem trenutku. Če pomočnik obstaja samo za distribucijo ali različico odjemalca, ki ga ne potrebuje več, ga upokojite v konfiguraciji, ki ima nastavitev, namesto da dvigujete pravice, dokler se napake ne ustavijo. To je izhod: manj gibljivih delov, ne več dovoljenj.