OpenVPN script-security-niveloj de 0 ĝis 3, kaj kion ĉiu malfermas
Ĉiu script-security-nivelo larĝigas kion profilo rajtas plenumi: unue administraj helpiloj, poste uzantaj skriptoj, fine pasvortoj en la medio. Legu la direktivojn.
Importu profilon en labortablan klienton kaj la unua malsukceso ofte estas linio, kiun la kliento rifuzas obei: skripta hoko, kiun ĝi ne rulos, aŭ script-security-valoro, kiun ĝi konsideras tro permesa. Altigi la nombron forigas la dialogon. Ĝi ankaŭ larĝigas tion, kion tiu profilo rajtas plenumi en via maŝino, kio estas stranga donaco nur por forigi averton. Sekvu la importon ĝis la direktivo kaj la decido fariĝas konkreta.
De la importa dialogo al la direktivo
La profilo estas teksta dosiero kun direktivoj, kaj la kliento legas ilin antaŭ ol ekzistas ajna tunelo. Direktivo kiel up, down aŭ tls-verify nomas eksteran programon, kiun OpenVPN devus ruli en difinita momento. Ĉu OpenVPN pretas ruli ĝin, estas aparta agordo nomata script-security, kaj la profilo kutime ankaŭ fiksas ĝin.
Do la averto temas ne pri kriptografio aŭ atestiloj. Ĝi temas pri agorda dosiero petanta al la kliento plenumi ion en la gastiganto, kaj pri la kliento kontrolanta, ĉu ĝia nuna permesnivelo permesas tiun peton.
Du malsamaj fiaskoj aspektas samaj en ĉi tiu stadio. Profilo petanta nivelon, kiun la kliento ne donos, produktas rifuzon. Profilo petanta nivelon, kiun la kliento donas sed la skripto mankas, produktas fiaskon dum rulado, kaj la du miksiĝas en subtenaj diskutoj. Unu estas demando pri permesoj kaj la alia pri pakaĵo.
Kion ĉiu nivelo efektive malfermas
Nivelo 0 tute malpermesas alvokojn de eksteraj programoj, kio estas kohera por kliento, kiu agordas sian propran interfacon sen helpo, kaj malkohera por tiu, kiu alvokas la operaciumon. Nivelo 1, la defaŭlta, permesas la enkonstruitajn plenumeblojn, kiujn bezonas interfaca kaj itinera agordado. Neniu el la niveloj rulas ion, kion la uzanto provizis.
| 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 |
Nivelo 2 estas la interesa limo, ĉar ĝi akceptas uzantodifinitajn skriptojn. De tiu punkto la privilegioj de la kliento aplikiĝas al kodo, kiun vi eble neniam legis, alvokita en momentoj, kiujn vi ne elektis, kun medio, kiu enhavas konektajn detalojn. Nivelo 3 iras plu kaj permesas transdoni pasvortojn per mediaj variabloj, pro kio la manlibro priskribas ĝin kiel eble malsekura.
Neniu el ĉi tiuj nombroj estas agordo de forto. Profilo ĉe nivelo 3 havas neniun pli bonan ĉifradon ol unu ĉe nivelo 1; ĝi simple havas pli grandan plenuman surfacon, kaj la tunelo estas identa.
Decidu, kion la profilo meritas
Demandu, por kio la skripto utilas, antaŭ ol demandi, kiun nivelon ĝi bezonas. Hoko, kiu puŝas DNS-agordojn aŭ riparas itineron post konekto estas legitima kialo por ruli ion. Hoko, kiu alvokas nekonatan dunombran dosieron en provizora dosierujo, estas kialo por halti.
La vojo de la skripto gravas tiom kiom la skripto. Relativa vojo solviĝas rilate al ajna dosierujo, kiun la kliento uzas, kaj skribebla dosierujo igas unufojan importon daŭra plenumfendo. Absolute vojoj en dosierujo, kiun la uzanto ne povas modifi, estas la formo preferinda.
Skriptoj ankaŭ heredas la medion de la kliento, kie loĝas akreditaĵoj kaj konektaj metadatumoj. Ĝuste tiu heredeco igas nivelon 3 danĝera kune kun skripto, kiu registras sian medion, kaj tial diagnoza elprenaĵo el kliento kun skriptoj meritas duan rigardon antaŭ ol esti algluita en bileton. Forprenu la medion antaŭ ol dividi ĝin.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnŜanĝu unu aferon, kaj poste ankaŭ observu la malmuntadon
Se la profilo vere bezonas skripton, ŝanĝu nur la nivelon kaj nur por tiu profilo. Rulu la klienton en la malfono kun detala eligo, por ke la propraj eraroj de la skripto estu videblaj anstataŭ esti englutitaj de servadministrilo.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Testu la tutan vivciklon, ne nur la konekton. Malsukcesa malŝalta hoko lasas itinerojn montrantajn al morta tunelo, kio produktas maŝinon, kiu aspektas konektita kaj atingas neniun. Rekonektu unufoje kaj malkonektu unufoje antaŭ ol nomi la ŝanĝon finita, kaj kontrolu la itineran tabelon post ĉiu.
Konservu kopion de la originala profilo. Se platforma kliento ne realigas la saman skriptan modelon, forigo de direktivoj ĝis la importo sukcesos povas forigi la DNS- aŭ itineran integriĝon, kiun la tunelo bezonis, kaj la rezulta konekto aŭtentokontrolos perfekte dum ĝi solvas nenion.
La decido registrinda estas mallarĝa: kiu skripto, ĉe kiu vojo, ĉe kiu nivelo permesita, por kiu profilo. Ĉio alia en la profilo restas senŝanĝa, kaj tio estas frazo, kiun revizianto povas kontroli.