Serija RHCSA: Nastavitev overjanja na osnovi LDAP v RHEL 7 - 14. del


Ta članek bomo začeli z opisom nekaterih osnov LDAP (kaj je to, kje se uporablja in zakaj) ter prikazali, kako nastaviti strežnik LDAP in konfigurirati odjemalca, da se z njim overja z uporabo sistemov Red Hat Enterprise Linux 7.

Kot bomo videli, obstaja še več možnih scenarijev aplikacij, vendar se bomo v tem priročniku v celoti osredotočili na preverjanje pristnosti na osnovi LDAP. Poleg tega ne pozabite, da bomo zaradi obsežnosti teme tukaj obravnavali le njene osnove, vendar lahko za podrobnejše informacije preberete dokumentacijo, opisano v povzetku.

Iz istega razloga boste opazili, da sem se zaradi kratkosti odločil izpustiti več sklicev na priročne strani orodij LDAP, vendar so ustrezna pojasnila na dosegu roke (na primer man ldapadd).

Torej, začnimo.

Naše testno okolje je sestavljeno iz dveh škatel RHEL 7:

Server: 192.168.0.18. FQDN: rhel7.mydomain.com
Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

Če želite, lahko uporabite napravo, nameščeno v 12. delu: Avtomatizirajte namestitve RHEL 7 z uporabo Kickstart kot odjemalca.

LDAP pomeni Lahki protokol za dostop do imenika in je sestavljen iz nabora protokolov, ki odjemalcu omogoča dostop do omrežja do centralno shranjenih informacij (kot so imenik prijavnih lupin, absolutne poti do domačih imenikov in druge značilne informacije o uporabnikih sistema, na primer), ki bi morale biti dostopne z različnih krajev ali na voljo velikemu številu končnih uporabnikov (drug primer bi bil imenik domačih naslovov in telefonskih številk vseh zaposlenih v podjetju).

Centralno hranjenje takšnih (in več) informacij pomeni, da jih je lažje vzdrževati in do njih dostopati vsakdo, ki ima dovoljenje za njihovo uporabo.

Naslednji diagram ponuja poenostavljen diagram LDAP in je podrobneje opisan spodaj:

Podrobna razlaga zgornjega diagrama.

  1. Vnos v imeniku LDAP predstavlja eno enoto ali informacijo in je enoznačno identificiran s tako imenovanim uglednim imenom.
  2. Atribut je informacija, povezana z vnosom (na primer naslovi, razpoložljive kontaktne telefonske številke in e-poštni naslovi).
  3. Vsakemu atributu je dodeljena ena ali več vrednosti, ki so na seznamu, ločenem s presledkom. Vrednost, ki je edinstvena na vnos, se imenuje relativno razločno ime.

Kot rečeno, nadaljujmo z namestitvijo strežnika in odjemalca.

Namestitev in konfiguracija strežnika LDAP in odjemalca

V RHEL 7 LDAP uvaja OpenLDAP. Če želite namestiti strežnik in odjemalca, uporabite naslednje ukaze:

# yum update && yum install openldap openldap-clients openldap-servers
# yum update && yum install openldap openldap-clients nss-pam-ldapd

Ko je namestitev končana, si oglejte nekaj stvari. Naslednje korake je treba izvesti samo na strežniku, razen če je izrecno navedeno:

1. Prepričajte se, da vam SELinux ne ovira, tako da v strežniku in na odjemalcu vztrajno omogočite naslednje logične vrednosti:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Kjer je za preverjanje pristnosti na osnovi LDAP potreben allow_ypbind, bodo nekatere aplikacije morda potrebovale authlogin_nsswitch_use_ldap.

2. Omogočite in zaženite storitev:

# systemctl enable slapd.service
# systemctl start slapd.service

Upoštevajte, da lahko tudi s sistemom systeml onemogočite, znova zaženete ali ustavite storitev:

# systemctl disable slapd.service
# systemctl restart slapd.service
# systemctl stop slapd.service

3. Ker se storitev slapd izvaja kot uporabnik ldap (kar lahko preverite s ps -e -o pid, uname, comm | grep slapd), bi tak uporabnik moral imeti imenik/var/lib/ldap, da bi strežnik lahko lahko spreminjate vnose, ustvarjene s skrbniškimi orodji, ki jih je mogoče zagnati samo kot root (več o tem čez minuto).

Preden rekurzivno spremenite lastništvo tega imenika, vanj kopirajte vzorčno konfiguracijsko datoteko baze podatkov za slapd:

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown -R ldap:ldap /var/lib/ldap

4. Nastavite skrbniškega uporabnika OpenLDAP in dodelite geslo:

# slappasswd

kot je prikazano na naslednji sliki:

in ustvarite datoteko LDIF (ldaprootpasswd.ldif) z naslednjo vsebino:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

kje:

  1. GESLO je zgoščen niz, pridobljen prej.
  2. cn = config označuje globalne možnosti konfiguriranja.
  3. olcDatabase označuje določeno ime primerka baze podatkov in ga je običajno mogoče najti znotraj /etc/openldap/slapd.d/cn=config.

Glede na prej omenjeno teoretično ozadje bo datoteka ldaprootpasswd.ldif dodala vnos v imenik LDAP. V tem vnosu vsaka vrstica predstavlja par atribut: vrednost (kjer so dn, changetype, add in olcRootPW atributi in nizi na desni strani vsakega dvopičja so njihove ustrezne vrednosti).

Morda boste to želeli upoštevati, ko nadaljujemo, in upoštevajte, da uporabljamo ista splošna imena (cn =) skozi preostali del tega članka, kjer je vsak korak odvisen od prejšnjega .

5. Zdaj dodajte ustrezen vnos LDAP, tako da navedete URI, ki se nanaša na strežnik ldap, kjer so dovoljena samo polja protokola/gostitelja/vrat.

# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif 

Rezultat mora biti podoben:

in uvozite nekaj osnovnih definicij LDAP iz imenika /etc/openldap/schema :

# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. LDAP naj svojo domeno uporabi v svoji zbirki podatkov.

Ustvarite drugo datoteko LDIF, ki jo bomo imenovali ldapdomain.ldif , z naslednjo vsebino, ki bo nadomeščala vašo domeno (v komponenti domene dc =) in geslo, kot je primerno:

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=mydomain,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=mydomain,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=mydomain,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=mydomain,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=mydomain,dc=com" write by * read

Nato ga naložite na naslednji način:

# ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. Zdaj je čas, da v naš imenik LDAP dodate nekaj vnosov. Atributi in vrednosti so ločeni z dvopičjem (:) v naslednji datoteki, ki jo bomo poimenovali baseldapdomain.ldif :

dn: dc=mydomain,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: mydomain com
dc: mydomain

dn: cn=Manager,dc=mydomain,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=mydomain,dc=com
objectClass: organizationalUnit
ou: Group

Vnose dodajte v imenik LDAP:

# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif

8. Ustvarite uporabnika LDAP, imenovanega ldapuser (adduser ldapuser), nato v ldapgroup.ldif ustvarite definicije za skupino LDAP.

# adduser ldapuser
# vi ldapgroup.ldif

Dodajte naslednjo vsebino.

dn: cn=Manager,ou=Group,dc=mydomain,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1004

kjer je gidNumber GID v/etc/group za ldapuser) in ga naložite:

# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif

9. Dodajte datoteko LDIF z definicijami za uporabnika ldapuser ( ldapuser.ldif ):

dn: uid=ldapuser,ou=People,dc=mydomain,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldapuser
uid: ldapuser
uidNumber: 1004
gidNumber: 1004
homeDirectory: /home/ldapuser
userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M
loginShell: /bin/bash
gecos: ldapuser
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

in ga naložite:

# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif

Prav tako lahko izbrišete uporabniški vnos, ki ste ga pravkar ustvarili:

# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"

10. Omogočite komunikacijo prek požarnega zidu:

# firewall-cmd --add-service=ldap

11. Nenazadnje odjemalcu omogočite avtentikacijo z LDAP.

V tem zadnjem koraku si bomo pomagali s pripomočkom authconfig (vmesnik za konfiguracijo virov za preverjanje pristnosti sistema).

Z naslednjim ukazom se ustvari domači imenik za zahtevanega uporabnika, če po uspešni avtentikaciji proti strežniku LDAP ne obstaja:

# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update

Povzetek

V tem članku smo razložili, kako nastaviti osnovno preverjanje pristnosti proti strežniku LDAP. Za nadaljnjo konfiguracijo nastavitve, opisane v tem priročniku, glejte poglavje 13 - Konfiguracija LDAP v vodniku sistemskega skrbnika RHEL 7, pri čemer posebno pozornost namenite varnostnim nastavitvam s pomočjo TLS.

Vprašanja lahko pustite na spodnjem obrazcu za komentar.