OpenVPN script-security līmeņi no 0 līdz 3 un ko katrs atver
Katrs script-security līmenis paplašina, ko profils drīkst izpildīt: vispirms administratīvie palīgi, tad lietotāja skripti, tad paroles vidē. Lasiet direktīvas.
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.
| 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. 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.ovpnMainiet 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.