Importējiet profilu galddatora klientā, un pirmais neizdošanās gadījums bieži ir rinda, kuru klients atsakās ievērot: skripta āķis, ko tas neizpildīs, vai script-security vērtība, ko tas uzskata par pārāk atļaujošu. Skaitļa palielināšana liek dialogam pazust. Taču tā arī paplašina to, ko šis profils drīkst izpildīt jūsu mašīnā, kas ir dīvaini dot tikai tāpēc, lai aizvērtu brīdinājumu. Izsekojiet importam līdz direktīvai, un lēmums kļūst konkrēts.

No importa dialoga līdz direktīvai

Profils ir teksta fails ar direktīvām, un klients tās nolasa pirms jebkura tuneļa pastāvēšanas. Tāda direktīva kā up, down vai tls-verify nosauc ārēju programmu, kuru OpenVPN ir jāpalaiž noteiktā brīdī. Vai OpenVPN ir gatavs to palaist, ir atsevišķs iestatījums ar nosaukumu script-security, un profils to parasti arī nosaka.

Tātad brīdinājums nav par kriptogrāfiju vai sertifikātiem. Tas ir par konfigurācijas failu, kas lūdz klientam kaut ko izpildīt resursdatorā, un par klientu, kas pārbauda, vai tā pašreizējais atļauju līmenis šo pieprasījumu atļauj.

Šajā posmā divas dažādas neizdošanās izskatās vienādas. Profils, kas pieprasa līmeni, kuru klients nedos, rada atteikumu. Profils, kas pieprasa līmeni, kuru klients dod, bet skripta nav, tā vietā rada izpildes laika kļūdu, un abi tiek sajaukti atbalsta pavedienos. Viens ir atļauju jautājums, otrs ir iepakojuma jautājums.

Ko katrs līmenis patiešām atver

0. līmenis pilnībā aizliedz ārēju programmu izsaukumus, kas ir konsekventi klientam, kurš pats bez palīdzības konfigurē savu saskarni, un nekonsekventi tam, kurš vēršas pie operētājsistēmas. 1. līmenis, noklusējuma, atļauj iebūvētos izpildfailus, kas nepieciešami saskarnes un maršrutu konfigurācijai. Neviens līmenis neizpilda neko, ko nodrošinājis lietotājs.

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

2. līmenis ir interesantā robeža, jo tas pieņem lietotāja definētus skriptus. No šī brīža klienta privilēģijas attiecas uz kodu, ko jūs, iespējams, nekad neesat lasījis, kas tiek izsaukts brīžos, kurus jūs neizvēlējāties, vidē, kas satur savienojuma informāciju. 3. līmenis iet tālāk un atļauj nodot paroles caur vides mainīgajiem, tāpēc rokasgrāmata to raksturo kā potenciāli nedrošu.

Neviens no šiem skaitļiem nav stipruma iestatījums. Profilam 3. līmenī nav labākas šifrēšanas nekā 1. līmenī; tam vienkārši ir lielāka izpildes virsma, un tunelis ir identisks.

Izlemiet, ko profils ir pelnījis

Jautājiet, kam skripts domāts, pirms jautājat, kāds līmenis tam vajadzīgs. Āķis, kas iegrūž DNS iestatījumus vai pēc savienojuma salabo maršrutu, ir likumīgs iemesls kaut ko izpildīt. Āķis, kas pagaidu mapē izsauc nepazīstamu bināro failu, ir iemesls apstāties.

Skripta ceļš ir tikpat svarīgs kā pats skripts. Relatīvs ceļš tiek atrisināts attiecībā pret mapi, kuru klients izmanto, un ierakstāma mape pārvērš vienreizēju importu pastāvīgā izpildes vietā. Absolūti ceļi mapē, kuru lietotājs nevar mainīt, ir forma, kas jāpreferē.

Skripti arī manto klienta vidi, kur dzīvo akreditācijas dati un savienojuma metadati. Tieši šī mantošana padara 3. līmeni bīstamu kopā ar skriptu, kas reģistrē savu vidi, un tāpēc diagnostikas izraksts no klienta ar iespējotiem skriptiem ir pelnījis otru skatienu pirms ielīmēšanas biļetē. Noņemiet vidi pirms tās kopīgošanas.

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

Mainiet vienu lietu, un tad vērojiet arī demontāžu

Ja profilam patiešām vajag skriptu, mainiet tikai līmeni un tikai šim profilam. Palaidiet klientu priekšplānā ar detalizētu izvadi, lai paša skripta kļūdas būtu redzamas, nevis pakalpojumu pārvaldnieka aprītas.

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

Pārbaudiet visu dzīves ciklu, ne tikai savienojumu. Neizdevies izslēgšanas āķis atstāj maršrutus, kas norāda uz mirušu tuneli, un tas rada mašīnu, kas izskatās savienota un nekur nenokļūst. Pirms pasludināt izmaiņu pabeigtu, vienreiz savienojieties no jauna un vienreiz atvienojieties, un pēc katra pārbaudiet maršrutēšanas tabulu.

Saglabājiet oriģinālā profila kopiju. Ja platformas klients neīsteno to pašu skriptu modeli, direktīvu dzēšana līdz veiksmīgam importam var noņemt DNS vai maršruta integrāciju, kas tunelim bija vajadzīga, un iegūtais savienojums autentificēsies nevainojami, neko neatrisinot.

Reģistrējamais lēmums ir šaurs: kurš skripts, kādā ceļā, kādā līmenī atļauts, kuram profilam. Viss pārējais profilā paliek nemainīgs, un tas ir teikums, ko recenzents var pārbaudīt.

Saistītie raksti