OpenVPN script-security lygiai nuo 0 iki 3 ir ką kiekvienas atveria
Kiekvienas script-security lygis praplečia, ką profilis gali vykdyti: pirmiausia administravimo pagalbinės priemonės, paskui vartotojo scenarijai, galiausiai slaptažodžiai aplinkoje. Skaitykite direktyvas.
Importuokite profilį į darbalaukio klientą ir pirmoji klaida dažnai būna eilutė, kurios klientas atsisako paisyti: scenarijaus kabliukas, kurio jis nevykdys, arba script-security reikšmė, kurią jis laiko per daug leidžiančia. Skaičių padidinus dialogas dingsta. Bet tai taip pat praplečia, ką tas profilis gali vykdyti jūsų kompiuteryje, o tai keistas dalykas duoti vien tam, kad išnyktų įspėjimas. Sekite importą iki direktyvos ir sprendimas taps konkretus.
Nuo importo dialogo iki direktyvos
Profilis yra tekstinis failas su direktyvomis, ir klientas jas perskaito dar prieš atsirandant bet kokiam tuneliui. Tokia direktyva kaip up, down ar tls-verify įvardija išorinę programą, kurią OpenVPN turi paleisti nurodytu momentu. Ar OpenVPN pasirengęs ją paleisti, yra atskiras nustatymas, vadinamas script-security, ir profilis dažniausiai jį taip pat nustato.
Taigi įspėjimas ne apie kriptografiją ar sertifikatus. Jis apie konfigūracijos failą, kuris prašo kliento ką nors įvykdyti pagrindiniame kompiuteryje, ir apie klientą, kuris tikrina, ar jo dabartinis leidimų lygis leidžia tą užklausą.
Šiame etape dvi skirtingos klaidos atrodo vienodai. Profilis, prašantis lygio, kurio klientas neduos, sukelia atmetimą. Profilis, prašantis lygio, kurį klientas duoda, bet scenarijaus trūksta, vietoj to sukelia vykdymo laiko klaidą, ir abi painiojamos pagalbos temose. Viena yra leidimų klausimas, kita – pakavimo klausimas.
Ką kiekvienas lygis iš tikrųjų atveria
0 lygis visiškai draudžia išorinių programų kvietimus, o tai nuoseklu klientui, kuris pats be pagalbos konfigūruoja savo sąsają, ir nenuoseklu tam, kuris kreipiasi į operacinę sistemą. 1 lygis, numatytasis, leidžia įtaisytus vykdomuosius failus, kurių reikia sąsajos ir maršrutų konfigūracijai. Nė vienas lygis nevykdo nieko, ką pateikė vartotojas.
| 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 |
2 lygis yra įdomi riba, nes jis priima vartotojo apibrėžtus scenarijus. Nuo to momento kliento privilegijos taikomos kodui, kurio galbūt niekada neskaitysite, iškviečiamam momentais, kurių nepasirinkote, aplinkoje, kurioje yra ryšio informacija. 3 lygis eina toliau ir leidžia perduoti slaptažodžius per aplinkos kintamuosius, todėl vadovas jį apibūdina kaip galimai nesaugų.
Nė vienas iš šių skaičių nėra stiprumo nustatymas. 3 lygio profilis neturi geresnio šifravimo nei 1 lygio; jis tiesiog turi didesnį vykdymo plotą, o tunelis yra identiškas.
Nuspręskite, ko profilis nusipelno
Paklauskite, kam skirtas scenarijus, prieš klausdami, kokio lygio jam reikia. Kabliukas, kuris stumia DNS nustatymus arba po prisijungimo sutaiso maršrutą, yra teisėta priežastis ką nors vykdyti. Kabliukas, kuris laikiname kataloge kviečia nepažįstamą dvejetainį failą, yra priežastis sustoti.
Scenarijaus kelias svarbus tiek pat, kiek pats scenarijus. Santykinis kelias sprendžiamas atsižvelgiant į katalogą, kurį naudoja klientas, o įrašomas katalogas vienkartinį importą paverčia nuolatine vykdymo vieta. Absoliutūs keliai kataloge, kurio vartotojas negali pakeisti, yra forma, kurią verta rinktis.
Scenarijai taip pat paveldi kliento aplinką, kurioje gyvena prisijungimo duomenys ir ryšio metaduomenys. Būtent šis paveldėjimas daro 3 lygį pavojingą kartu su scenarijumi, kuris registruoja savo aplinką, ir todėl scenarijais įjungto kliento diagnostikos išvestis nusipelno antro žvilgsnio prieš įklijuojant ją į bilietą. Prieš bendrindami pašalinkite aplinką.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnPakeiskite vieną dalyką, o tada stebėkite ir išardymą
Jei profiliui tikrai reikia scenarijaus, pakeiskite tik lygį ir tik tam profiliui. Paleiskite klientą pirmame plane su išsamia išvestimi, kad paties scenarijaus klaidos būtų matomos, o ne paslėptos paslaugų tvarkyklės.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Išbandykite visą gyvavimo ciklą, ne tik prisijungimą. Nepavykęs išjungimo kabliukas palieka maršrutus, nukreiptus į mirusį tunelį, o tai sukuria mašiną, kuri atrodo prisijungusi ir nieko nepasiekia. Prieš paskelbdami pakeitimą baigtu, kartą prisijunkite iš naujo ir kartą atsijunkite, ir po kiekvieno patikrinkite maršrutizavimo lentelę.
Išsaugokite pradinio profilio kopiją. Jei platformos klientas neįgyvendina to paties scenarijų modelio, direktyvų trynimas iki sėkmingo importo gali pašalinti DNS ar maršruto integraciją, kurios tuneliui reikėjo, ir gautas ryšys bus nepriekaištingai autentifikuotas, bet nieko neišspręs.
Užfiksuotinas sprendimas siauras: kuris scenarijus, kokiu keliu, kokiu lygiu suteiktas, kuriam profiliui. Visa kita profilyje lieka nepakeista, ir tai yra sakinys, kurį recenzentas gali patikrinti.