Váš súbor .ovpn môže spúšťať kód, nielen smerovať prevádzku
Profil, ktorý pomenúva pomocníka up alebo down, spúšťa kód s vašimi právami. Skontrolujte cestu, vlastníctvo, čistenie a nastavenie script-security.
Väčšina ľudí číta súbor .ovpn tak, ako číta stránku nastavení routera: adresy, trasy, zoznam šifier. Časť, ktorá spúšťa kód, sedí blízko dna, vedľa direktív, ktoré vyzerajú ako inštalatérska práca, a beží s akýmikoľvek právami, ktoré klient už má. To je medzera, ktorú využíva neopatrný alebo škodlivý profil, a je to aj medzera, ktorá po troch týždňoch premení užitočného pomocníka DNS na problém podpory. Direktíva udalosti, úroveň zabezpečenia a vlastníctvo súboru rozhodujú, čo sa môže stať; obsah skriptu rozhoduje, čo sa skutočne deje. Prečítajte si všetky štyri skôr, než sa pripojíte.
Profil, ktorý spúšťa pomocníka, je program, nie konfiguračný súbor
Direktívy ako route a dhcp-option opisujú stav, ktorý má klient nastoliť, a klient s nimi zaobchádza ako s dátami. Skript up je iný: klient ho spustí ako proces a odovzdá mu prostredie plné podrobností o pripojení, takže všetko, čo napísal jeho autor, beží s právami vášho účtu. Na notebooku, kde je používateľ administrátor, sú to široké dvere pre súbor, ktorý dorazil ako príloha alebo vložený text z vlákna fóra. Rozdiel nie je štylistický, je to rozdiel medzi konfiguráciou a kódom.
Mýtus, ktorý stojí za to opustiť, je, že profil môže len presmerovať prevádzku. Pomocník, ktorý spúšťa ip route add, a ten, ktorý spúšťa curl proti vzdialenému hostiteľovi, sú ten istý mechanizmus a profil zvonku vyzerá rovnako. Nič vo vzhľade súboru nehovorí, ktorý máte, preto sa kontrola musí dostať až k samotnému skriptu.
Čo spustenie skutočne rozhoduje a ako vyzerajú povoľujúce riadky
Pomocníka ovládajú tri veci: direktíva udalosti, ktorá ho pomenúva, úroveň script-security, ktorá ho povoľuje, a vlastná implementácia platformy klienta. Profil môže požiadať o hák a napriek tomu nič nevidieť, pretože mobilný klient alebo oklieštené zostavenie pre stolový počítač nemusí tú udalosť vôbec implementovať. Rovnako tak profil, ktorý žiada viac oprávnení, než jeho funkcia potrebuje, vám niečo hovorí o svojom pôvode. Úroveň oprávnenia je schopnosť, nie schválenie. Povoľujúce riadky vyzerajú takto, s cestou, ktorá zastupuje tú vašu.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shÚroveň 0 odmieta externé programy a úroveň 1, predvolená, povoľuje iba vstavané spustiteľné súbory klienta, takže hák potrebuje 2 alebo viac; úroveň 3 existuje hlavne na odovzdávanie starých hesiel a je lepšie sa jej vyhnúť. Profil dodaný s hákom potrebuje direktívu aj túto úroveň, preto si jeden riadok pri dne súboru zaslúži rovnakú kontrolu ako blok certifikátu. Príručka OpenVPN vypisuje úrovne oprávnení a jej formuláciu stojí za to čítať vedľa toho, čo profil skutočne žiada.
Vlastníctvo, cesta a čím sa pomocník kŕmi
Profil, ktorému dôverujete, ale ktorý ukazuje na skript, ktorý môže prepísať iný účet, nie je spoľahlivé usporiadanie, pretože včerajšia kontrola už neopisuje, čo beží dnes. Skontrolujte vlastníka a režim pomocníka a overte, že nakonfigurovaná cesta vedie k súboru, ktorý ste preskúmali, a nie k názvu, ktorý môže niečo iné zatieniť. Argumenty a prostredie si zaslúžia rovnaký pohľad: klient odovzdáva podrobnosti o pripojení háku a pomocník, ktorý zaznamenáva celé svoje prostredie, môže zapisovať prihlasovacie údaje do tiketu podpory. Uprednostnite dokumentovanú integráciu od operátora alebo platformy pred skriptom DNS skopírovaným z nesúvisiaceho príspevku, pretože dvaja správcovia resolverov, ktorí sa hádajú o ten istý súbor, vytvárajú zlyhanie, ktoré vyzerá ako pokazený VPN.
Keď hlásite zlyhávajúci hák, zredigujte prostredie skôr, než ho niekam vložíte. Výpis, ktorý vám pomáha pri ladení, môže niesť aj token, ktorý vás overuje.
Zlyhania čistenia sa objavia po tom, ako tunel zmizne
Pomocník up pridáva trasy a nastavenia resolvera a pomocník down by ich mal zase odobrať. Keď hák down chýba, zlyháva ticho alebo sa nikdy nespustí, pretože klient bol zabitý, zvyšky prežijú reláciu. Prevádzka potom ide cestou, ktorú nikto neplánoval, a mená sa prekladajú cez resolver, ktorý mal byť odstránený, zatiaľ čo tunel sám vyzerá zdravo. Tieto príznaky prichádzajú po odpojení, preto sa obviňuje sieť, a nie profil.
Otestujte demontáž ako samostatný krok: zdvihnite tunel, poznamenajte trasy a resolver, zložte ho a potom potvrďte, že oboje zmizlo. Profil, ktorý sa pripája čisto, môže napriek tomu zanechať stav, a nulový návratový kód pomocníka nedokazuje, že resolver skončil tam, kde si myslíte.
Kontrola pomocníka a udržanie východu
Prečítajte skript od začiatku do konca a hľadajte tri veci: príkazy, ktoré potrebujú oprávnenia, natvrdo zapísané cesty, ktoré vo vašom systéme nemusia existovať, a akékoľvek sieťové volanie, ktoré robí. Potom sa pozrite, ako zlyháva, pretože pomocník, ktorý prehĺta chyby, mení chybu konfigurácie na záhadu. Ak neviete jednou vetou povedať, čo skript robí a kto ho môže zmeniť, nie ste pripravení ho zapnúť. Profil, ktorý žiada viac oprávnení, než tá veta vyžaduje, je signál zastaviť sa.
Uchovávajte posledný funkčný profil a pomocníka, na ktorého odkazoval, v chránenom úložišti s poznamenanými oboma verziami, aby návrat bol kópiou a nie rekonštrukciou v najhoršom možnom okamihu. Ak pomocník existuje len pre distribúciu alebo verziu klienta, ktorá ho už nepotrebuje, vyraďte ho v konfigurácii, ktorá nastavenie vlastní, namiesto zvyšovania oprávnení, kým chyby neprestanú. To je východ: menej pohyblivých častí, nie viac oprávnení.