Nivoi script-security u OpenVPN-u od 0 do 3 i šta svaki od njih otvara
Svaki nivo script-security proširuje šta profil smije izvršavati: prvo administrativne pomoćnike, zatim korisničke skripte, pa lozinke u okruženju. Pročitajte direktive.
Uvezite profil u desktop klijent i prva greška je često linija koju klijent odbija ispoštovati: skriptna kuka koju neće pokrenuti ili vrijednost script-security koju smatra previše dopuštajućom. Podizanje broja uklanja dijalog. Ono također širi ono što taj profil smije izvršavati na vašem računaru, što je čudna stvar za dati samo da bi se zatvorilo upozorenje. Pratite uvoz do direktive i odluka postaje konkretna.
Od dijaloga za uvoz do direktive
Profil je tekstualna datoteka s direktivama, a klijent ih čita prije nego što ikakav tunel postoji. Direktiva kao što su up, down ili tls-verify imenuje vanjski program koji OpenVPN treba pokrenuti u određenom trenutku. Da li je OpenVPN spreman pokrenuti ga, posebna je postavka zvana script-security, a profil je obično također postavlja.
Dakle upozorenje nije o kriptografiji ili certifikatima. Ono je o konfiguracijskoj datoteci koja traži od klijenta da izvrši nešto na hostu, i o klijentu koji provjerava da li njegov trenutni nivo dozvola dopušta taj zahtjev.
Dva različita kvara izgledaju slično u ovoj fazi. Profil koji traži nivo koji klijent neće dati proizvodi odbijanje. Profil koji traži nivo koji klijent daje, ali skripta nedostaje, proizvodi kvar u vrijeme izvršavanja, i to dvoje se miješa u temama podrške. Jedno je pitanje dozvola, a drugo pitanje pakovanja.
Šta svaki nivo zaista otvara
Nivo 0 potpuno zabranjuje pozive vanjskih programa, što je dosljedno za klijent koji sam konfiguriše svoj interfejs bez pomoći, a nedosljedno za onaj koji se obraća operativnom sistemu. Nivo 1, zadani, dopušta ugrađene izvršne datoteke potrebne za konfiguraciju interfejsa i ruta. Nijedan nivo ne pokreće ništa što je korisnik dao.
| 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 |
Nivo 2 je zanimljiva granica, jer dopušta skripte koje definiše korisnik. Od te tačke privilegije klijenta važe za kod koji možda nikada niste pročitali, pozvan u trenucima koje niste odabrali, u okruženju koje sadrži detalje veze. Nivo 3 ide dalje i dopušta prenošenje lozinki kroz varijable okruženja, zbog čega ga priručnik opisuje kao potencijalno nesiguran.
Nijedan od ovih brojeva nije postavka snage. Profil na nivou 3 nema bolje šifrovanje od onog na nivou 1; jednostavno ima veću površinu izvršavanja, a tunel je identičan.
Odlučite šta profil zaslužuje
Pitajte čemu skripta služi prije nego što pitate koji nivo joj treba. Kuka koja gura DNS postavke ili popravlja rutu nakon povezivanja legitiman je razlog da se nešto pokrene. Kuka koja poziva nepoznati binarni fajl u privremenom direktoriju razlog je da se zaustavite.
Putanja skripte važna je koliko i sama skripta. Relativna putanja rješava se prema direktoriju koji klijent koristi, a direktorij u koji se može pisati pretvara jednokratni uvoz u trajni slot za izvršavanje. Apsolutne putanje u direktoriju koji korisnik ne može mijenjati oblik su koji treba preferirati.
Skripte također nasljeđuju okruženje klijenta, gdje žive akreditivi i metapodaci veze. Upravo to nasljeđivanje čini nivo 3 opasnim u kombinaciji sa skriptom koja bilježi svoje okruženje, i to je razlog zašto dijagnostički ispis iz klijenta sa omogućenim skriptama zaslužuje drugi pogled prije nego što se zalijepi u tiket. Očistite okruženje prije nego što ga podijelite.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnPromijenite jednu stvar, pa pazite i na rasklapanje
Ako profil zaista treba skriptu, promijenite samo nivo i samo za taj profil. Pokrenite klijent u prvom planu s opširnim izlazom kako bi greške same skripte bile vidljive umjesto da ih proguta upravitelj servisa.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Testirajte cijeli životni ciklus, ne samo povezivanje. Kuka za prekid koja ne uspije ostavlja rute prema mrtvom tunelu, što daje mašinu koja izgleda povezano i ne može doći nigdje. Ponovo se povežite jednom i odspojite jednom prije nego što promjenu proglasite završenom, i provjerite tablicu ruta nakon svakog.
Čuvajte kopiju originalnog profila. Ako klijent platforme ne primjenjuje isti model skripti, brisanje direktiva dok uvoz ne uspije može ukloniti DNS ili rutnu integraciju koja je tunelu bila potrebna, a rezultirajuća veza autentificirat će se savršeno dok ništa ne razrješava.
Odluka koju treba zabilježiti uska je: koja skripta, na kojoj putanji, na kojem nivou odobrena, za koji profil. Sve ostalo u profilu ostaje nepromijenjeno, i to je rečenica koju recenzent može provjeriti.