RHCSA seeria: LDAP-põhise autentimise seadistamine RHEL 7-s - 14. osa


Alustame selle artikli kirjeldamisega mõned LDAP-i põhitõed (mis see on, kus seda kasutatakse ja miks) ning näitame, kuidas seadistada LDAP-server ja konfigureerida klient selle vastu autentimiseks Red Hat Enterprise Linux 7 süsteemide abil.

Nagu näeme, on veel mitmeid võimalikke rakendusstsenaariume, kuid selles juhendis keskendume täielikult LDAP-põhisele autentimisele. Lisaks pidage meeles, et teema avaruse tõttu käsitleme siin ainult selle põhitõdesid, kuid põhjalikumate üksikasjade saamiseks võite viidata kokkuvõttes kirjeldatud dokumentatsioonile.

Samal põhjusel märkite, et olen lühiduse huvides otsustanud jätta välja mitmed viited LDAP-tööriistade manulehtedele, kuid vastavad selgitused on käeulatuses (näiteks man ldapadd).

See tähendab, et alustame.

Meie testikeskkond koosneb kahest RHEL 7 kastist:

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

Soovi korral saate kasutada osa 12: RHEL 7 installide automatiseerimist, kasutades kliendina Kickstarti.

LDAP tähistab kerget kataloogipöörduse protokolli ja koosneb protokollide komplektist, mis võimaldab kliendil võrgu kaudu juurde pääseda keskselt salvestatud teabele (nt sisselogimiskestade kataloog, kodukataloogide absoluutsed teed ja muu tüüpiline süsteemi kasutaja teave näiteks), mis peaks olema kättesaadav erinevatest kohtadest või kättesaadav suurele hulgale lõppkasutajatele (teine näide oleks ettevõtte kõigi töötajate koduaadresside ja telefoninumbrite kataloog).

Sellise (ja muu) teabe kesksel kohal hoidmine tähendab, et seda saavad hõlpsamini hooldada ja juurde pääseda kõik, kellele on antud luba selle kasutamiseks.

Järgmine diagramm pakub lihtsustatud LDAP-skeemi ja seda on üksikasjalikumalt kirjeldatud allpool:

Ülaltoodud skeemi üksikasjalik selgitus.

  1. LDAP-kataloogi kirje tähistab ühte üksust või teavet ja on ainulaadselt identifitseeritud nn eristatava nimega.
  2. Atribuut on kirjega seotud teave (näiteks aadressid, saadaolevad kontakttelefoninumbrid ja e-posti aadressid).
  3. Igale atribuudile määratakse üks või mitu väärtust, mis koosnevad tühikutega eraldatud loendist. Väärtust, mis on kande kohta ainulaadne, nimetatakse suhteliseks eristatavaks nimeks.

Nagu öeldud, jätkame serveri ja kliendi installimist.

LDAP-serveri ja kliendi installimine ja konfigureerimine

RHEL 7-s rakendab LDAP-i OpenLDAP. Serveri ja kliendi installimiseks kasutage vastavalt järgmisi käske:

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

Kui installimine on lõpule jõudnud, vaatame mõningaid asju. Järgmised toimingud tuleks teha ainult serveris, välja arvatud juhul, kui seda on otseselt märgitud:

1. Veenduge, et SELinux ei takistaks, lubades järgmised tõeväärtused püsivalt nii serveris kui kliendis:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Kui LDAP-põhise autentimise jaoks on vaja allow_ypbind ja mõned rakendused võivad vajada authlogin_nsswitch_use_ldap.

2. Lubage ja käivitage teenus:

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

Pidage meeles, et teenuse saate keelata, taaskäivitada või peatada ka systemctl-ga:

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

3. Kuna slapd-teenus töötab ldap-kasutajana (mida saate kontrollida rakendusega ps -e -o pid, uname, comm | grep slapd), peaks sellisele kasutajale kuuluma kataloog/var/lib/ldap, et server saaks olema võimeline muutma haldustööriistade loodud kirjeid, mida saab käivitada ainult juurkasutajana (rohkem selle kohta minutis).

Enne selle kataloogi omandiõiguse rekursiivset muutmist kopeerige slapdi näidisandmebaasi konfiguratsioonifail sinna:

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

4. Seadistage OpenLDAP-i administraatorikasutaja ja määrake parool:

# slappasswd

nagu on näidatud järgmisel pildil:

ja looge järgmise sisuga LDIF-fail (ldaprootpasswd.ldif):

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

kus:

  1. PASSWORD on varem saadud räsitud string.
  2. cn = config näitab globaalseid seadistusvõimalusi.
  3. olcDatabase tähistab kindlat andmebaasi eksemplari nime ja selle võib tavaliselt leida /etc/openldap/slapd.d/cn=config.

Viidates varem esitatud teoreetilisele taustale, lisab fail ldaprootpasswd.ldif kirje LDAP-kataloogi. Selles kirjes tähistab iga rida atribuuti: väärtuspaar (kus dn, changetype, add ja olcRootPW on atribuudid ja igast koolonist paremal asuvad stringid on nende vastavad väärtused).

Võite seda meeles pidada, kui jätkame, ja pidage meeles, et kogu ülejäänud artikli osas kasutame samu üldnimesid (cn =) , kus iga samm sõltub eelmisest .

5. Nüüd lisage vastav LDAP-kirje, määrates ldap-serverile viitava URI, kus on lubatud ainult protokolli/hosti/pordi väljad.

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

Väljund peaks olema sarnane:

ja importige mõned põhilised LDAP-määratlused kataloogist /etc/openldap/schema :

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

6. Laske LDAP-il oma domeenis oma andmebaasis kasutada.

Looge järgmine LDIF-fail, mida nimetame ldapdomain.ldif , järgmise sisuga, asendades teie domeeni (domeenikomponendis dc =) ja parooli vastavalt vajadusele:

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

Seejärel laadige see järgmiselt:

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

7. Nüüd on aeg lisada mõned kirjed meie LDAP-kataloogi. Atribuudid ja väärtused eraldatakse järgmises failis kooloniga (:) , millele paneme nimeks 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

Lisage kirjed LDAP-kataloogi:

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

8. Looge LDAP kasutaja nimega ldapuser (adduser ldapuser), seejärel looge LDAP-rühma definitsioonid jaotises ldapgroup.ldif .

# adduser ldapuser
# vi ldapgroup.ldif

Lisage järgmine sisu.

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

kus gidNumber on ldapuseri grupi/etc/grupi GID) ja laadige see:

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

9. Lisage LDIF-fail koos kasutaja ldapuser ( ldapuser.ldif ) definitsioonidega:

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

ja laadige see:

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

Samamoodi saate kustutada äsja loodud kasutajakande:

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

10. Lubage tulemüüri kaudu suhtlemine:

# firewall-cmd --add-service=ldap

11. Lõpuks, kuid mitte vähem oluline, võimaldage kliendil LDAP abil autentida.

Selle viimase sammu abistamiseks kasutame authconfig utiliiti (liidest süsteemi autentimisressursside konfigureerimiseks).

Järgmise käsu abil luuakse taotletud kasutaja kodukataloog, kui seda pole pärast LDAP-serveri autentimise õnnestumist:

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

Kokkuvõte

Selles artiklis oleme selgitanud, kuidas seadistada LDAP-serveri põhiline autentimine. Selles juhendis kirjeldatud seadistuse täpsemaks konfigureerimiseks vaadake RHEL 7 süsteemiadministraatori juhendi peatükki 13 - LDAP-i seadistamine, pöörates erilist tähelepanu turvaseadetele TLS-i abil.

Jätke julgelt küsimused, mis teil tekkida võivad, kasutades allolevat kommentaarivormi.