Hozzáadsz egy client-connect szkriptet, amely elutasít minden olyan kapcsolatot, ahol a common_name eltér a username értékétől, és ez úgy tűnik, mintha összekötné a tanúsítványt a fiókkal. Egy username-as-common-name beállítással futó kiszolgálón ez az összehasonlítás már elvesztette értelmét, mire a szkript lefut. Mindkét érték ugyanaz a karakterlánc, így a teszt átmegy egy teljesen másvalakinek kiállított tanúsítvány esetén is.

Az ellenőrzés nem azért hibás, mert a szkript rosszul van megírva. Azért hibás, mert az általa olvasott értéket ugyanabban a kapcsolatban korábban lecserélték.

Mit látszik bizonyítani az összehasonlítás

A tanúsítvány-hitelesítés és a jelszó-hitelesítés külön bizonyítékok, és a kiszolgáló mindkettőt megkövetelheti anélkül, hogy megkövetelné, ugyanahhoz a személyhez tartozzanak. A rés valós: egy érvényes eszköztanúsítvány bármely érvényes fiókkal más állítás, mint ugyanaz a tanúsítvány egyetlen megnevezett fiókkal. A common_name és a username összehasonlítását végző szkript a kettő közötti hiányzó láncszemként olvasható. Az is lenne, ha a common_name még azt jelentené, amit a tanúsítvány mondott.

Hogy így van-e, egyetlen kiszolgálóbeállítástól függ, és ezt a beállítást általában független okból kapcsolják be, például hogy könnyebb legyen elnevezni a felhasználónkénti konfigurációs fájlokat.

Mit tesz a username-as-common-name a névvel

Ha a username-as-common-name be van kapcsolva, az OpenVPN a jelszó és a felhasználónév ellenőrzése után a hitelesített felhasználónevet teszi a tanúsítvány közönséges neve helyére. Az ellenőrzés során futó ellenőrző kampó még mindig a tanúsítvány közönséges nevét kapja, mert a csere még nem történt meg. Minden későbbi, a client-connect is beleértve, a felhasználónevet látja. Így a későbbi visszahívás egyetlen identitást kap kétszer, és nem tudja összevetni a bemutatott tanúsítvánnyal.

StageWhat common_name holds
Username and password verification hookThe certificate common name, for example bob-device
After the replacementThe authenticated account, alice
client-connect callbackThe account again, alice

Kövess egy szemléltető kapcsolatot: bob-device számára kiállított tanúsítvány, sikeres könyvtárbejelentkezés alice néven, és a beállítás bekapcsolva. Az ellenőrzési szakasz még két különböző karakterláncot lát. A kapcsolódási szakasz a alice és a alice értéket látja.

Ez a példa megmutatja, miért üres az összehasonlítás. Nem mutatja meg, hogy a kapcsolat egyébként elfogadható lenne, mivel a tanúsítvány-érvényesítés és a jelszó-ellenőrzés továbbra is önállóan fut.

Helyezze a kötést oda, ahol mindkét identitás még létezik

A szabályt olyan szakaszban kell kikényszeríteni, amely egyszerre látja a tanúsítvány identitását és a fiókot, ami a gyakorlatban a felhasználónév- és jelszó-ellenőrző kampót vagy az ott betöltött bővítményt jelenti. Egy támogatott bővítmény, amely már végez jelszó-ellenőrzést, általában a megfelelő hely a párosítási szabály hozzáadására, mert név-összehasonlítással helyettesítve teljesen elveszne a jelszó-ellenőrzés.

A kód írása előtt határozza meg a leképezést, mert az egyenlőség ritkán a valódi szabály. A tanúsítvány gyakran egy eszközt azonosít, míg a bejelentkezés egy személyt, és egy eszköz jogszerűen szolgálhat több embert. A kapcsolatot olyan formában tárolja, amelynek kiállítását Ön ellenőrzi, és döntse el, mi történik átnevezéskor, újrakiadáskor és tartományi minősítésű nevek esetén. A kisbetűsítés vagy a tartományi előtag eltávolítása a könyvtár megértése nélkül összevonhat két fiókot, amelyeket külön kellett volna tartani.

Ne feledje, hogy a beállítás azt is megváltoztatja, melyik ügyfélenkénti konfiguráció érvényes, mert a client-config-dir a közönséges névhez van kötve.

Tesztelje a párosítást két érvényes hitelesítő adattal

Kezdje azzal a párral, amelyet a szabályzata engedélyez, és erősítse meg, hogy csatlakozik. Majd mutassa be ugyanazt az érvényes tanúsítványt egy másik, egyébként érvényes fiókkal: ennek a kísérletnek meg kell hiúsulnia, és a párosítási szabály miatt kell meghiúsulnia, nem pedig egy elgépelt jelszó miatt. A rossz jelszó bizonyítja, hogy a jelszó-ellenőrzés működik, és semmit sem mond a tanúsítvány és a fiók közötti szabályról.

Ellenőrizze a hiányzó tanúsítvány és az érvénytelen tanúsítvány útvonalait is, és erősítse meg, melyik identitást használja a kiszolgáló az ügyfélenkénti beállításokhoz. Ha az összehasonlítás működésének egyetlen módja a username-as-common-name kikapcsolása, először árazza be ezt a változtatást, mert az minden ügyfél konfigurációkeresését visszaállítja a tanúsítvány nevére.

Kapcsolódó cikkek