RADIUS bekötése az OpenVPN-be: plugin vagy szkript-horog?
A régi RADIUS-plugin ahhoz a szerverbuildhez kötődik, amelyhez fordították. Az auth-user-pass-verify horog váltja fel, de a bizalmat a szkriptedbe helyezi át.
A plugint még mindig ajánlják olyan szálakban, amelyek régebbiek a jelenlegi buildeknél, és egy tegnap fordított szerveren már betöltéskor elbukik. Ez nem olyan konfigurációs hiba, amelyet egy útvonallal ki lehet javítani. A plugin és a szkript-horog ugyanazt a problémát oldja meg különböző rétegeken, és az egyikről a másikra váltás megváltoztatja, mit kell telepíteni, mi fut szerverjogosultságokkal, és mit mond el valójában egy sikertelen bejelentkezés.
A mítosz: a plugin a támogatott út
A plugin egy megosztott objektum, amelyet az OpenVPN folyamatába töltenek be, ezért meg kell felelnie annak az interfésznek, amelyet a folyamat biztosít. A buildek változnak, a csomagolás változik, és egy régebbi interfészhez fordított könyvtár egyszerűen nem hajlandó betöltődni. A szerverkonfigurációban semmi sem hidalhatja át ezt a szakadékot, ezért a „csak telepítsd a radiusplugint” tanács egy el nem induló szerverrel végződik.
A szkript-horog ehelyett a folyamaton kívül áll. Az OpenVPN futtat egy programot, átadja neki a hitelesítő adatokat, és visszaolvas egy ítéletet. Ez a leválasztás teszi alkalmassá arra, hogy túlélje a frissítéseket, és ez teszi a te felelősségeddé olyan módon, ahogy a plugin soha nem volt.
Egyik megközelítés sem biztonságosabb a felépítésénél fogva. Az egyik idegen kódot futtat a démonban; a másik a te kódodat futtatja mellette, a hitelesítő adatokkal a kézben. A helyes kérdés az, hogy e két kockázat közül melyiket tudod valóban üzemeltetni.
Mit kötött össze a plugin
A plugin saját konfigurációs fájlt hordozott a RADIUS-gazdagéppel, a közös titokkal, az újrapróbálkozások számával és az időkorláttal, és a szerverkonfiguráció egyetlen sorral hivatkozott rá. A hitelesítő adatok kezelése a szerverfolyamaton belül maradt, ami azt jelentette, hogy a jelszó soha nem lépett át egy olyan folyamathatárt, amelyet az adminisztrátornak biztosítania kellett.
Az ár az összekapcsoltság volt. Minden OpenVPN-frissítés inkompatibilis interfészt kockáztatott, és minden disztribúció, amely újraépítette a csomagot, olyan könyvtárat kockáztatott, amely már nem illeszkedik. Amikor ez megtörténik, a hiba hangos és azonnali, és ez a terv egyetlen kegyelme.
Ha egy ilyen plugin még betöltődik a buildeden, lehet, hogy ez a kisebb üzemeltetési felület. Erősítsd meg az interfészt, amelyhez épült, tartsd a tesztelt buildhez rögzítve, és kezeld minden frissítést olyan változásként, amely teljes bejelentkezési tesztet igényel, nem rutin csomagfrissítésként.
Miben bízik valójában a szkript-horog
A horog az auth-user-pass-verify-jal és egy átadási mechanizmussal konfigurálható: környezeti változókkal vagy ideiglenes fájllal. A környezeti formában az OpenVPN script-security 3-at követel, a dokumentált szintet, amely engedélyezi a jelszó szkripteknek való kitárását. Ez a szint az alapértelmezés szándékos gyengítése, és úgy kell kezelni, mint indoklással ellátott engedélyt.
Minden, amihez a szkript hozzányúl, örökli ezt a bizalmat. root-tulajdonban kell lennie, nem írhatónak csoport vagy mások számára, abszolút útvonallal kell hivatkozni rá, és mentesnek kell lennie minden olyan helytől, ahol nem megbízható érték ér el egy shellt. Tegyél minden változót idézőjelbe, utasítsd el a váratlan karaktereket, és soha ne építs parancsot a megadott felhasználónévből. Egy szkript, amely minden bejelentkezési kísérletnél rootként fut, megér egy átvizsgálást éppen e négy tulajdonság miatt.
ls -l /usr/local/sbin/radius-auth.sh
stat -c '%U %a' /usr/local/sbin/radius-auth.sh
A fájlos átadási forma elkerüli a környezetöröklés problémáját, és korlátozott engedélyű ideiglenes fájlon keresztül adja át a hitelesítő adatokat a szkriptnek. Ha az ügyfeled támogatja, ez általában a jobb alapértelmezés, bár egy további tisztítandó objektumot ad hozzá hiba esetén.
A kilépési kódok döntik el, hogy nyitottan buksz-e el
A szkript kilépési állapota az ítélet: nulla elfogad, nem nulla elutasít. A bajt okozó minta egy shell-szkript, amely csak akkor fogad el, ha a RADIUS-válasz tartalmaz egy adott elfogadási tokent, és minden másra hibát ad vissza, mert ez három különböző eseményt olvaszt egyetlen válaszba. A rossz jelszó, az elérhetetlen szerver és a hibás válasz mind ugyanazzá az elutasítássá válnak.
Válaszd szét ezeket az eseteket a szkriptben, még ha a horog csak elfogadást vagy elutasítást adhat vissza. Naplózd a háttérrendszer eredményét külön, riassz időtúllépésekre és átviteli hibákra, és tedd nyilvánvalóvá a monitorozásban, amikor a hitelesítés azért hiúsul meg, mert a szolgáltatás áll, és nem azért, mert a felhasználók elgépelnek.
Két szokás tartja ésszerűen a többit. Ha a RADIUS a hatóság, akkor annak kell lennie az egyetlen helynek, ahol jelszót ellenőriznek, mert az árnyéktábla két választ ad ugyanarra a kérdésre, és a második olyan támadási felület, amelyet senki sem figyel. És ne feledd, hogy a horgot minden újabb kísérletnél újra hívják, így a lassú szkript és a türelmetlen kliens a jelszókitalálás erősítőjévé válik, hacsak nem adsz hozzá késleltetést vagy szabályt a RADIUS oldalán.
Miről mondasz le, amikor a tanúsítvány eltűnik
Sok ilyen formájú telepítés teljesen kikapcsolja az ügyféltanúsítvány ellenőrzését, és a felhasználónevet meg a jelszót hagyja az ügyfél teljes igényeként. Ami ezzel a beállítással eltűnik, az a tanúsítványalapú identitás. A csatorna titkosítva marad, de az egyetlen dolog, amely megnevezi az ügyfelet, a RADIUS ítélete. Bármi, ami korábban a tanúsítvány tárgyára támaszkodott, mostantól a felhasználónévre kell támaszkodjon.
Tartsd meg a vezérlőcsatorna védelmét, hogy egy nem hitelesített fél ne tudja fürkészni vagy elárasztani a kézfogást, és használd a username-as-common-name beállítást, ha a felhasználónkénti konfiguráció a közös névtől függ. A felügyelt átjárók ezt gyakran másképp oldják meg, a tanúsítványhitelesítést egy olyan átjárón fejezik be, amely EAP-TLS-t beszél a RADIUS-szal, és ebben az esetben ezek a szerverdirektívák egyike sem érvényes. A saját platformod által dokumentált modellt másold, ne a szomszédos termékét. A fontos direktívák eléggé különböznek ahhoz, hogy keverésük olyan konfigurációt adjon, amely elemződik, majd senkit nem hitelesít.