Váš soubor .ovpn může spouštět kód, ne jen směrovat provoz
Profil, který jmenuje pomocníka up nebo down, spouští kód s vašimi oprávněními. Zkontrolujte cestu, vlastnictví, úklid a nastavení script-security.
Většina lidí čte soubor .ovpn stejně jako stránku nastavení routeru: adresy, trasy, seznam šifer. Část, která spouští kód, sedí blízko dna, vedle direktiv, jež vypadají jako instalatérská práce, a běží s jakýmikoli oprávněními, která klient už má. To je mezera, kterou využívá neopatrný nebo škodlivý profil, a také mezera, která po třech týdnech promění užitečného pomocníka DNS v problém podpory. Direktiva události, úroveň zabezpečení a vlastnictví souboru rozhodují, co se může stát; obsah skriptu rozhoduje, co se skutečně děje. Přečtěte si všechny čtyři, než se připojíte.
Profil, který spouští pomocníka, je program, ne konfigurační soubor
Direktivy jako route a dhcp-option popisují stav, který má klient nastolit, a klient s nimi zachází jako s daty. Skript up je jiný: klient ho spustí jako proces a předá mu prostředí plné podrobností o připojení, takže vše, co jeho autor napsal, běží s právy vašeho účtu. Na notebooku, kde je uživatel administrátor, jsou to široké dveře pro soubor, který dorazil jako příloha nebo vložený text z vlákna fóra. Rozdíl není stylistický, je to rozdíl mezi konfigurací a kódem.
Mýtus, který stojí za to opustit, je, že profil může jen přesměrovat provoz. Pomocník, který spouští ip route add, a ten, který spouští curl proti vzdálenému hostiteli, jsou stejný mechanismus a profil zvenčí vypadá totožně. Nic ve vzhledu souboru neříká, který z nich máte, proto se kontrola musí dostat až ke skriptu samotnému.
Co spuštění skutečně rozhoduje a jak vypadají povolující řádky
Pomocníka ovládají tři věci: direktiva události, která ho pojmenovává, úroveň script-security, která ho povoluje, a vlastní implementace platformy klienta. Profil může požádat o hák a přesto nic nevidět, protože mobilní klient nebo okleštěné sestavení pro stolní počítač nemusí tu událost vůbec implementovat. Stejně tak profil, který žádá více oprávnění, než jeho funkce potřebuje, vám něco říká o svém původu. Úroveň oprávnění je schopnost, ne schválení. Povolující řádky vypadají takto, s cestou, která zastupuje tu vaši.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shÚroveň 0 odmítá externí programy a úroveň 1, výchozí, povoluje jen vestavěné spustitelné soubory klienta, takže hák potřebuje 2 nebo více; úroveň 3 existuje hlavně pro předávání starých hesel a je lepší se jí vyhnout. Profil dodávaný s hákem potřebuje direktivu i tuto úroveň, proto si jeden řádek u dna souboru zaslouží stejnou pozornost jako blok certifikátu. Příručka OpenVPN vypisuje úrovně oprávnění a její formulaci stojí za to číst vedle toho, co profil skutečně žádá.
Vlastnictví, cesta a čím se pomocník krmí
Profil, kterému věříte, ale který ukazuje na skript, jejž může přepsat jiný účet, není spolehlivé uspořádání, protože včerejší kontrola už nepopisuje, co běží dnes. Zkontrolujte vlastníka a režim pomocníka a ověřte, že nakonfigurovaná cesta vede k souboru, který jste prohlédli, a ne k názvu, který může něco jiného zastínit. Argumenty a prostředí si zaslouží stejný pohled: klient předává háku podrobnosti o připojení a pomocník, který zaznamenává celé své prostředí, může zapisovat přihlašovací údaje do tiketu podpory. Dejte přednost dokumentované integraci od operátora nebo platformy před skriptem DNS zkopírovaným z nesouvisejícího příspěvku, protože dva správci resolverů bojující o stejný soubor vytvářejí selhání, které vypadá jako rozbitá VPN.
Když hlásíte selhávající hák, zredigujte prostředí, než ho někam vložíte. Výpis, který vám pomáhá ladit, může také nést token, který vás ověřuje.
Selhání úklidu se objeví poté, co tunel zmizí
Pomocník up přidává trasy a nastavení resolveru a pomocník down je má zase odebrat. Když hák down chybí, selže tiše nebo se nikdy nespustí, protože byl klient zabit, zbytky přežijí relaci. Provoz pak jde cestou, kterou nikdo neplánoval, a jména se překládají přes resolver, který měl být odstraněn, zatímco tunel sám vypadá zdravě. Tyto příznaky přicházejí po odpojení, proto se viní síť, a ne profil.
Otestujte demontáž jako samostatný krok: zvedněte tunel, poznamenejte trasy a resolver, sundejte ho a potvrďte, že obojí zmizelo. Profil, který se připojí čistě, přesto může zanechat stav, a nulový návratový kód pomocníka nedokazuje, že resolver skončil tam, kde si myslíte.
Kontrola pomocníka a udržení východu
Přečtěte skript od začátku do konce a hledejte tři věci: příkazy, které potřebují oprávnění, natvrdo zapsané cesty, které na vašem systému nemusí existovat, a jakékoli síťové volání, které dělá. Pak se podívejte, jak selhává, protože pomocník, který polyká chyby, mění konfigurační chybu v záhadu. Pokud nedokážete jednou větou říct, co skript dělá a kdo ho může změnit, nejste připraveni ho povolit. Profil, který žádá víc oprávnění, než ta věta vyžaduje, je signál zastavit se.
Uchovávejte poslední funkční profil a pomocníka, na který odkazoval, v chráněném úložišti s poznamenanými oběma verzemi, aby návrat byl kopií, a ne rekonstrukcí v nejhorší možný okamžik. Pokud pomocník existuje jen pro distribuci nebo verzi klienta, která ho už nepotřebuje, vyřaďte ho v konfiguraci, která nastavení vlastní, místo abyste zvyšovali oprávnění, dokud chyby nepřestanou. To je východ: méně pohyblivých částí, ne více oprávnění.