OpenVPN LDAP-autentimine töötab, aga grupikontroll ebaõnnestub: kuhu vaadata
Autentimine võib õnnestuda, samal ajal kui grupikontroll lükkab kõik tagasi. Vaadake järjest läbi Authorization plokk, liikmelisuse atribuut ja kataloogi lõpp-punkt.
Kasutajaandmed läbivad, tunnel hakkab tõusma ja siis ebaõnnestub seanss teatega grupi, mitte parooli kohta. See kombinatsioon paigutab vea LDAP-pistmiku töö teise poolde: sidumine ja parooli kontroll õnnestusid, aga sellele järgnev liikmelisuse otsus mitte. Mõlemad pooled loevad samast konfiguratsiooniplokist, mistõttu võib parandus ühes kohas jätta teise puutumata. Alustage logireast, mis nimetab sammu, mitte kontost, millega te parasjagu testimas olete.
Käsitlege tagasilükkamist autoriseerimise vastusena
Pistmik teeb teenuse sidumise, otsib konto, kontrollib antud parooli ja küsib seejärel, kas see konto kuulub lubatud gruppi. Need on neli eraldi toimingut ja ainult viimane on gruppide kohta. Seetõttu ei ütle õnnestunud sidumise järel saabuv tagasilükkamine parooli kohta midagi, isegi kui klient näitab üldist autentimisviga. Pistmiku logitaseme tõstmine enne konfiguratsiooni muutmist on see, mis need neli väljundis eraldab.
Otsige grupi hindamist ennast. Kui grupi päringut ei ilmu üldse, ei jõuta autoriseerimisplokini, mis tavaliselt tähendab, et direktiiv asub väljaspool plokki, millele see kuulub, või et nõutav valik puudub. Kui päring ilmub ja ei tagasta midagi, vastab lõpp-punkt või filter teisele küsimusele kui see, mida te mõtlesite.
Otsustage, kas liikmelisus elab filtris või grupiplokis
Toetatud on kaks vormi ja nende segamine on viis, kuidas töötav konfiguratsioon lakkab töötamast. Esimene surub liikmelisuse kasutajaotsingusse, küsides atribuuti kasutajaobjektil; teine jätab kasutajaotsingu puutumata ja laseb pistmikul hiljem grupiobjekti otsida. Valige üks juurutuse kohta ja kirjutage üles, millise valisite.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN Access,OU=Groups,DC=example,DC=org))"
RequireGroup false
</Authorization>Selle vormi puhul otsustab filter kõik, seega peab RequireGroup olema false, muidu läheb pistmik otsima grupiobjekti, mida filter kunagi ei maininud. Filtri atribuut peab kasutajaobjektil olemas olema ja olema täidetud, mida ei ole tagatud, kui grupid on pesastatud.
Teine vorm hoiab otsingu lihtsa ja lisab selle järele grupiotsingu. Grupiobjekt nimetatakse selgesõnaliselt ja pistmik võrdleb kasutajat liikmetega, mille kataloog selle jaoks tagastab. Kasutajafiltris ei muutu midagi, mis teeb selle vormi kergemini auditeeritavaks, kui gruppi haldab teine meeskond.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(sAMAccountName=%u)"
RequireGroup true
Group "CN=VPN Access,OU=Groups,DC=example,DC=org"
</Authorization>Pimeala on ühine: lihtne liikmelisuse võrdlus ei ava pesastatud gruppe, seega konto, mille juurdepääs tuleb ülemgrupi kaudu, ebaõnnestub, samal ajal kui konsool näitab endiselt liikmelisust. Active Directory avaldab grupis member, teised skeemid kasutavad uniqueMember ja vale atribuudi poole osutamine tagastab vea asemel tühja tulemuse.
Valige lõpp-punkt, mis sisaldab grupiobjekti
URL otsustab, milliselt kataloogilt pistmik küsib, ja domeenikontroller pordil 389 vastab ainult oma nimeruumi eest. Globaalne kataloog pordil 3268 vastab kogu metsa eest, ainult lugemiseks ja osalise atribuudikomplektiga. Kui kontod asuvad ühes domeenis ja VPN-grupp teises, võib ühe domeeni päring kasutaja leida ja liikmelisuse siiski vahele jätta. See on juhtum, kus URL-i viimine kataloogi pordile lahendab tagasilükkamise, ja see on ka juhtum, kus inimesed üldistavad liiga kaugele.
Osaline atribuudikomplekt on piir: atribuudi järgi, mida kataloog ei sisalda, ei saa filtreerida, seega võib sama muudatus teha ühe juurutuse töötavaks ja teise mitte midagi tagastama. Enne ploki ümberkirjutamist kinnitage, mida lõpp-punkt tegeliku kasutaja ja grupi jaoks tegelikult tagastab. Ümbersuunamised ja TLS on jälle eraldi teemad, sest ümbersuunamist tuleb järgida ja TLS-i nõudev lõpp-punkt vajab vastavaid usaldusfaile.
Hoidke konto olek ja otsingu ulatus nende endi väljadel
Keelamise lipp kuulub filtrisse, mitte grupikontrolli. Active Directorys on see userAccountControl teine bitt ja ilma selle tingimuseta autendib end keelatud konto kehtiva parooliga ning ebaõnnestub seejärel grupisammul, mis näeb välja nagu autoriseerimisviga. Otsingu ulatus kuulub baas-DN-i, sest domeeni juurest alustamine on aeglasem ja võib tabada objekte väljaspool organisatsiooniüksust, mida te kavatsesite katta.
Hoidke ka sidumiskonto õigused kitsad. Laiad kataloogiõigused muudavad valesti konfigureeritud filtri õnnestunud päringuks ja peidavad vea, kuni keegi konto auditeerib. Muutke liikmelisust kataloogis endas, mitte kunagi kohalikus erandite loendis, et konto keelamisest piisaks juurdepääsu eemaldamiseks. Kui gruppi haldab teine meeskond, leppige kokku atribuut, mida nad täidavad, enne kui kirjutate selle vastu filtri.
Tõestage tulemus kolme kontoga
Käivitage konfiguratsioon kolme identiteedi vastu: lubatud liige, kehtiv konto väljaspool gruppi ja konto, mis on keelatud. Kui kõik kolm lükatakse tagasi, on sidumine või grupipäring katki; kui kõik kolm võetakse vastu, ei rakendata üldse ühtki grupitingimust. Segatud tulemus on ainus, mis tõestab, et konfiguratsioon eristab juhtumeid, mis teile olulised on.
Lugege samad kolm vastust otse kataloogist, enne kui pistmikku süüdistate. Esimene päring näitab grupiatribuuti, millest filter sõltub, ja teine näitab kontokontrolli väärtust. Asendage oma baas-DN, konto ja lõpp-punktiga:
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)" userAccountControlKasutaja, kelle memberOf tuleb tühjalt tagasi, on kataloogi fakt, mitte pistmiku viga, ja konto, mis pärast keelamist endiselt autendib, tähendab, et filtril puudub kontokontrolli tingimus. Parandage kõigepealt see tõend ja käivitage siis uuesti kolme konto test. Hoidke logirida, mis nimetas ebaõnnestunud sammu, konfiguratsioonimuudatuse kõrval, et järgmine inimene saaks autoriseerimise autentimisest eraldada ilma otsingut kordamata.