Az OpenVPN script-security szintjei 0-tól 3-ig, és mit nyit meg mindegyik
Minden script-security szint bővíti, mit futtathat egy profil: először adminisztratív segédeszközök, aztán felhasználói szkriptek, végül jelszavak a környezetben. Olvassa el az utasításokat.
Importáljon egy profilt egy asztali kliensbe, és az első hiba gyakran egy sor, amelyet a kliens nem hajlandó teljesíteni: egy szkript-hook, amelyet nem futtat, vagy egy script-security-érték, amelyet túl megengedőnek tart. A szám növelése eltünteti a párbeszédablakot. Ugyanakkor kiszélesíti, mit futtathat az a profil a gépén, ami furcsa dolog egy figyelmeztetés eltüntetéséért adni. Kövesse az importot az utasításig, és a döntés kézzelfoghatóvá válik.
Az importálási párbeszédtől az utasításig
A profil egy szöveges fájl utasításokkal, és a kliens még azelőtt beolvassa őket, hogy bármilyen alagút létezne. Egy utasítás, például up, down vagy tls-verify, egy külső programot nevez meg, amelyet OpenVPN egy meghatározott pillanatban futtatni hivatott. Hogy az OpenVPN hajlandó-e futtatni, az egy külön beállítás, amelynek neve script-security, és a profil általában ezt is megadja.
A figyelmeztetés tehát nem a kriptográfiáról vagy a tanúsítványokról szól. Arról szól, hogy egy konfigurációs fájl arra kéri a klienst, hogy futtasson valamit a gazdagépen, és a kliens ellenőrzi, hogy jelenlegi engedélyszintje engedi-e ezt a kérést.
Ebben a szakaszban két különböző hiba hasonlónak tűnik. Egy profil, amely olyan szintet kér, amelyet a kliens nem ad meg, elutasítást eredményez. Egy profil, amely olyan szintet kér, amelyet a kliens megad, de a szkript hiányzik, futásidejű hibát eredményez helyette, és a kettőt a támogatási szálakban összekeverik. Az egyik engedélykérdés, a másik csomagoláskérdés.
Mit nyit meg valójában az egyes szintek
A 0. szint teljesen tiltja a külső programhívásokat, ami következetes egy olyan kliensnél, amely segítség nélkül konfigurálja a saját interfészét, és következetlen annál, amely az operációs rendszert hívja. Az 1. szint, az alapértelmezett, engedélyezi azokat a beépített futtatható fájlokat, amelyekre az interfész- és útvonalkonfigurációnak szüksége van. Egyik szint sem futtat semmit, amit a felhasználó adott.
| 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 |
A 2. szint az érdekes határ, mert beengedi a felhasználó által definiált szkripteket. Attól a ponttól a kliens jogosultságai olyan kódra vonatkoznak, amelyet talán soha nem olvasott el, olyan pillanatokban hívva meg, amelyeket nem Ön választott, olyan környezetben, amely tartalmazza a kapcsolat részleteit. A 3. szint tovább megy, és lehetővé teszi a jelszavak környezeti változókon keresztüli átadását, ezért írja le a kézikönyv potenciálisan nem biztonságosnak.
Ezek közül egyik szám sem erősségi beállítás. A 3. szinten lévő profil titkosítása nem jobb az 1. szinten lévőénél; egyszerűen nagyobb a végrehajtási felülete, és az alagút azonos.
Döntse el, mit érdemel a profil
Kérdezze meg, mire való a szkript, mielőtt azt kérdezné, milyen szintre van szüksége. Egy hook, amely DNS-beállításokat tol ki vagy kapcsolódás után kijavít egy útvonalat, jogos ok valami futtatására. Egy hook, amely egy ismeretlen binárist hív meg egy ideiglenes könyvtárban, ok a megállásra.
A szkript útvonala ugyanolyan fontos, mint a szkript. A relatív útvonal ahhoz a könyvtárhoz képest oldódik fel, amelyet a kliens használ, és egy írható könyvtár az egyszeri importot állandó végrehajtási hellyé teszi. Az abszolút útvonalak egy olyan könyvtárban, amelyet a felhasználó nem módosíthat, az előnyben részesítendő forma.
A szkriptek öröklik a kliens környezetét is, ahol a hitelesítő adatok és a kapcsolati metaadatok élnek. Ez az öröklés az, ami a 3. szintet veszélyessé teszi egy olyan szkripttel kombinálva, amely naplózza a környezetét, és ezért érdemel egy második pillantást egy szkriptekkel működő kliens diagnosztikai kimenete, mielőtt egy jegybe illesztenék. Távolítsa el a környezetet, mielőtt megosztja.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnVáltoztasson meg egy dolgot, aztán figyelje a lebontást is
Ha a profilnak valóban szüksége van szkriptre, csak a szintet változtassa meg, és csak annál a profilnál. Futtassa a klienst előtérben részletes kimenettel, hogy a szkript saját hibái láthatók legyenek, ne nyelje le őket a szolgáltatáskezelő.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Tesztelje a teljes életciklust, ne csak a kapcsolódást. Egy meghiúsuló leállítási hook olyan útvonalakat hagy, amelyek egy halott alagútra mutatnak, ami olyan gépet eredményez, amely kapcsolódottnak látszik, és semmit nem ér el. Kapcsolódjon újra egyszer, és szakítsa meg egyszer, mielőtt késznek nyilvánítja a változtatást, és mindkettő után ellenőrizze az útválasztási táblát.
Őrizzen meg egy másolatot az eredeti profilról. Ha egy platformkliens nem ugyanazt a szkriptmodellt valósítja meg, az utasítások törlése az import sikeréig eltávolíthatja azt a DNS- vagy útvonal-integrációt, amelyre az alagútnak szüksége volt, és az így létrejövő kapcsolat tökéletesen hitelesít, miközben semmit nem old fel.
A rögzítendő döntés szűk: melyik szkript, melyik útvonalon, melyik szinten engedélyezve, melyik profilhoz. A profilban minden más változatlan marad, és ez egy olyan mondat, amelyet egy bíráló ellenőrizhet.