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.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials 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.

Rilataj artikoloj