OpenVPN LDAP autentifikacija veikia, bet grupės patikra nepavyksta: kur ieškoti
Autentifikacija gali praeiti, o grupės patikra atmeta visus. Iš eilės peržiūrėkite Authorization bloką, narystės atributą ir katalogo galinį tašką.
Prisijungimo duomenys praeina, tunelis pradeda kilti, o tada sesija nepavyksta su pranešimu apie grupę, o ne apie slaptažodį. Šis derinys nukelia gedimą į antrąją LDAP papildinio darbo pusę: prisijungimas ir slaptažodžio patikra pavyko, o po jų einantis narystės sprendimas ne. Abi pusės skaito iš to paties konfigūracijos bloko, todėl pataisymas vienoje vietoje gali palikti kitą nepaliestą. Pradėkite nuo žurnalo eilutės, kuri įvardija veiksmą, o ne nuo paskyros, su kuria atsitiktinai testuojate.
Traktuokite atmetimą kaip autorizacijos atsakymą
Papildinys atlieka paslaugos prisijungimą, ieško paskyros, patikrina pateiktą slaptažodį ir tada klausia, ar ta paskyra priklauso leidžiamai grupei. Tai keturios atskiros operacijos, ir tik paskutinė yra apie grupes. Todėl atmetimas, atėjęs po sėkmingo prisijungimo, nieko nesako apie slaptažodį, net kai klientas rodo bendrą autentifikacijos klaidą. Papildinio žurnalo lygio padidinimas prieš keičiant konfigūraciją yra tai, kas išskiria tas keturias išvestyje.
Ieškokite pačios grupės vertinimo. Kai grupės užklausa visai nepasirodo, autorizacijos blokas nepasiekiamas, o tai paprastai reiškia, kad direktyva yra už ją turinčio bloko ribų arba trūksta privalomos parinkties. Kai užklausa pasirodo ir nieko negrąžina, galinis taškas arba filtras atsako į kitą klausimą nei tas, kurį turėjote omenyje.
Nuspręskite, ar narystė gyvena filtre, ar grupės bloke
Yra dvi palaikomos formos, ir jų maišymas yra būdas, kuriuo veikianti konfigūracija nustoja veikti. Pirmoji stumia narystę į vartotojo paiešką, prašydama atributo vartotojo objekte; antroji palieka vartotojo paiešką ramybėje ir leidžia papildiniui vėliau ieškoti grupės objekto. Pasirinkite vieną kiekvienam diegimui ir užsirašykite, kurią pasirinkote.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN Access,OU=Groups,DC=example,DC=org))"
RequireGroup false
</Authorization>Su ta forma filtras lemia viską, todėl RequireGroup turi būti false, kitaip papildinys eis ieškoti grupės objekto, kurio filtras niekada nepaminėjo. Filtro atributas turi egzistuoti vartotojo objekte ir būti užpildytas, o tai negarantuojama, kai grupės yra įdėtos.
Kita forma palieka paiešką paprastą ir po jos prideda grupės paiešką. Grupės objektas įvardijamas aiškiai, ir papildinys lygina vartotoją su nariais, kuriuos katalogas jam grąžina. Vartotojo filtre niekas nesikeičia, todėl šią formą lengviau audituoti, kai grupę valdo kita komanda.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(sAMAccountName=%u)"
RequireGroup true
Group "CN=VPN Access,OU=Groups,DC=example,DC=org"
</Authorization>Akloji vieta bendra: paprastas narystės palyginimas neišskleidžia įdėtų grupių, todėl paskyra, kurios prieiga ateina per tėvinę grupę, nepavyksta, nors konsolė vis dar rodo narystę. Active Directory atskleidžia member grupėje, kitos schemos naudoja uniqueMember, o nurodžius ne tą atributą grąžinamas tuščias rezultatas, o ne klaida.
Pasirinkite galinį tašką, kuriame yra grupės objektas
URL nulemia, kurio katalogo klausia papildinys, o domeno valdiklis prie 389 prievado atsako tik už savo vardų sritį. Visuotinis katalogas prie 3268 prievado atsako už visą mišką, tik skaitymui ir su daliniu atributų rinkiniu. Kai paskyros yra viename domene, o VPN grupė kitame, vieno domeno užklausa gali rasti vartotoją ir vis tiek praleisti narystę. Tai atvejis, kai URL perkėlimas į katalogo prievadą išsprendžia atmetimą, ir tai taip pat atvejis, kai žmonės apibendrina per daug.
Dalinis atributų rinkinys yra riba: atributo, kurio katalogas neturi, filtruoti negalima, todėl tas pats pakeitimas gali vieną diegimą priversti veikti, o kitą grąžinti nieką. Prieš perrašydami bloką patvirtinkite, ką galinis taškas iš tikrųjų grąžina tikram vartotojui ir grupei. Nukreipimai ir TLS vėl yra atskiri dalykai, nes nukreipimo reikia laikytis, o galiniam taškui, kuriam reikia TLS, reikalingi atitinkami pasitikėjimo failai.
Laikykite paskyros būseną ir paieškos apimtį savo laukuose
Išjungimo vėliavėlė priklauso filtrui, o ne grupės patikrai. Active Directory tai antrasis userAccountControl bitas, ir be šios sąlygos išjungta paskyra su galiojančiu slaptažodžiu autentifikuojasi ir tada nepavyksta grupės žingsnyje, o tai atrodo kaip autorizacijos klaida. Paieškos apimtis priklauso baziniam DN, nes pradėti nuo domeno šaknies lėčiau ir galima atitikti objektus už organizacinio vieneto, kurį norėjote aprėpti.
Laikykite ir prisijungimo paskyros teises siauras. Plačios katalogo teisės neteisingai sukonfigūruotą filtrą paverčia sėkminga užklausa ir slepia gedimą, kol kas nors neaudituoja paskyros. Keiskite narystę pačiame kataloge, niekada vietiniame išimčių sąraše, kad paskyros išjungimo pakaktų prieigai pašalinti. Jei grupę valdo kita komanda, susitarkite dėl atributo, kurį jie užpildo, prieš rašydami jam filtrą.
Įrodykite rezultatą trimis paskyromis
Paleiskite konfigūraciją trims tapatybėms: leidžiamam nariui, galiojančiai paskyrai už grupės ribų ir paskyrai, kuri buvo išjungta. Jei visos trys atmetamos, prisijungimas arba grupės užklausa sulaužyti; jei visos trys priimamos, grupės sąlyga visai netaikoma. Mišrus rezultatas yra vienintelis, įrodantis, kad konfigūracija išskiria jums svarbius atvejus.
Perskaitykite tuos pačius tris atsakymus tiesiai iš katalogo, prieš kaltindami papildinį. Pirmoji užklausa rodo grupės atributą, nuo kurio priklauso filtras, o antroji rodo paskyros valdymo reikšmę. Pakeiskite savo baziniu DN, paskyra ir galiniu tašku:
ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=alice)" memberOf
ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=bob)" userAccountControlVartotojas, kurio memberOf grįžta tuščias, yra katalogo faktas, o ne papildinio klaida, o paskyra, kuri po išjungimo vis dar autentifikuojasi, reiškia, kad filtre trūksta paskyros valdymo sąlygos. Pirmiausia pataisykite tą įrodymą, tada dar kartą paleiskite trijų paskyrų testą. Laikykite žurnalo eilutę, kuri įvardijo nepavykusį žingsnį, šalia konfigūracijos pakeitimo, kad kitas žmogus galėtų atskirti autorizaciją nuo autentifikacijos nekartodamas paieškos.