RHCSA sērija: Uz LDAP balstītas autentifikācijas iestatīšana RHEL 7 - 14. daļa


Mēs sāksim šo rakstu, izklāstot dažus LDAP pamatus (kas tas ir, kur un kāpēc tiek izmantots) un parādīsim, kā iestatīt LDAP serveri un konfigurēt klientu tā autentificēšanai, izmantojot Red Hat Enterprise Linux 7 sistēmas.

Kā redzēsim, ir vairāki citi iespējamie lietojumprogrammu scenāriji, taču šajā rokasgrāmatā mēs pilnībā koncentrēsimies uz LDAP balstītu autentifikāciju. Turklāt, lūdzu, ņemiet vērā, ka tēmas plašuma dēļ šeit aplūkosim tikai tās pamatus, taču, lai iegūtu detalizētāku informāciju, varat atsaukties uz kopsavilkumā izklāstīto dokumentāciju.

Šī paša iemesla dēļ jūs ievērosiet, ka es esmu nolēmis īsuma labad atstāt vairākas atsauces uz LDAP rīku manas lapām, taču atbilstošie paskaidrojumi ir rokas stiepiena attālumā (piemēram, man ldapadd).

Tas nozīmē, ka sāksim.

Mūsu testa vide sastāv no divām RHEL 7 kastēm:

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

Ja vēlaties, varat izmantot 12. daļā instalēto mašīnu: automatizēt RHEL 7 instalācijas, kā klientu izmantojot Kickstart.

LDAP nozīmē Lightweight Directory Access Protocol un sastāv no protokolu kopas, kas ļauj klientam tīklā piekļūt centralizēti glabātai informācijai (piemēram, pieteikšanās čaulu direktorijai, absolūtiem ceļiem uz mājas direktorijiem un citai tipiskai sistēmas lietotāja informācijai). piemēram), kam vajadzētu būt pieejamam no dažādām vietām vai pieejamam lielam skaitam galalietotāju (cits piemērs būtu visu uzņēmuma darbinieku mājas adrešu un tālruņu numuru katalogs).

Šādas (un citas) informācijas glabāšana centralizēti nozīmē, ka to var vieglāk uzturēt un piekļūt ikviens, kam ir piešķirtas atļaujas to izmantot.

Šī diagramma piedāvā vienkāršotu LDAP diagrammu, un tā ir sīkāk aprakstīta zemāk:

Šīs diagrammas detalizēts paskaidrojums.

  1. Ieraksts LDAP direktorijā apzīmē vienu vienību vai informāciju, un to unikāli identificē ar tā dēvēto atšķirīgo vārdu.
  2. Atribūts ir informācija, kas saistīta ar ierakstu (piemēram, adreses, pieejamie kontakttālruņu numuri un e-pasta adreses).
  3. Katram atribūtam tiek piešķirta viena vai vairākas vērtības, kas sastāv no atstarpēm atdalītā sarakstā. Vērtību, kas ir unikāla katram ierakstam, sauc par relatīvo atšķirīgo vārdu.

Paturot prātā, turpināsim servera un klienta instalēšanu.

LDAP servera un klienta instalēšana un konfigurēšana

RHEL 7 LDAP ievieš OpenLDAP. Lai instalētu serveri un klientu, izmantojiet attiecīgi šādas komandas:

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

Kad instalēšana ir pabeigta, mēs apskatām dažas lietas. Šīs darbības jāveic tikai serverī, ja vien nav skaidri norādīts:

1. Pārliecinieties, ka SELinux netraucē, pastāvīgi iespējojot šādus booleanus gan serverī, gan klientā:

# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

Ja uz LDAP balstītai autentifikācijai ir nepieciešama allow_ypbind, un dažām lietojumprogrammām var būt nepieciešama authlogin_nsswitch_use_ldap.

2. Iespējojiet un palaidiet pakalpojumu:

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

Paturiet prātā, ka pakalpojumu var atspējot, restartēt vai pārtraukt arī ar systemctl:

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

3. Tā kā slapd pakalpojums darbojas kā ldap lietotājs (kuru varat pārbaudīt, izmantojot ps -e -o pid, uname, comm | grep slapd), šādam lietotājam vajadzētu būt direktorijai/var/lib/ldap, lai serveris varētu jāspēj modificēt administratīvo rīku izveidotos ierakstus, kurus var palaist tikai kā root (vairāk par to minūtē).

Pirms rekursīvi maināt šī direktorija īpašumtiesības, nokopējiet tajā slapd datu bāzes konfigurācijas faila paraugu:

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

4. Iestatiet OpenLDAP administratīvo lietotāju un piešķiriet paroli:

# slappasswd

kā parādīts nākamajā attēlā:

un izveidojiet LDIF failu (ldaprootpasswd.ldif) ar šādu saturu:

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

kur:

  1. PASSWORD ir iepriekš iegūta jaukta virkne.
  2. cn = config norāda globālās konfigurācijas opcijas.
  3. olcDatabase norāda konkrētu datu bāzes instances nosaukumu, un to parasti var atrast mapē /etc/openldap/slapd.d/cn=config.

Atsaucoties uz iepriekš sniegto teorētisko pamatu, fails ldaprootpasswd.ldif pievienos ierakstu LDAP direktorijā. Šajā ierakstā katra rinda apzīmē atribūtu: vērtību pāris (kur dn, changetype, add un olcRootPW ir atribūti, un virknes, kas atrodas pa labi no katra kolona, ir tām atbilstošās vērtības).

Iespējams, vēlēsities to paturēt prātā, turpinot darbu, un, lūdzu, ņemiet vērā, ka šī raksta atlikušajā daļā mēs izmantojam tos pašus parastos nosaukumus (cn =) , kur katrs solis ir atkarīgs no iepriekšējā .

5. Tagad pievienojiet atbilstošo LDAP ierakstu, norādot URI, atsaucoties uz ldap serveri, kur ir atļauti tikai protokola/resursdatora/porta lauki.

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

Rezultātam jābūt līdzīgam:

un importējiet dažas LDAP pamata definīcijas no direktorija /etc/openldap/schema :

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

6. Ļaujiet LDAP izmantot savu domēnu savā datu bāzē.

Izveidojiet citu LDIF failu, kuru mēs sauksim par ldapdomain.ldif , ar šādu saturu, attiecīgi aizstājot jūsu domēnu (domēna komponentā dc =) un paroli:

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

Pēc tam ielādējiet to šādi:

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

7. Tagad ir pienācis laiks pievienot dažus ierakstus mūsu LDAP direktorijā. Atribūtus un vērtības nākamajā failā atdala kols (:) , kuru mēs nosauksim par 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

Pievienojiet ierakstus LDAP direktorijā:

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

8. Izveidojiet LDAP lietotāju ar nosaukumu ldapuser (adduser ldapuser), pēc tam izveidojiet LDAP grupas definīcijas sadaļā ldapgroup.ldif .

# adduser ldapuser
# vi ldapgroup.ldif

Pievienojiet šādu saturu.

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

kur gidNumber ir ldapuser GID failā/etc/group) un ielādējiet to:

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

9. Pievienojiet LDIF failu ar lietotāja ldapuser ( ldapuser.ldif ) definīcijām:

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

un ielādējiet to:

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

Tāpat jūs varat izdzēst tikko izveidoto lietotāja ierakstu:

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

10. Atļaujiet sazināties caur ugunsmūri:

# firewall-cmd --add-service=ldap

11. Visbeidzot, bet ne mazāk svarīgi, ļaujiet klientam autentificēties, izmantojot LDAP.

Lai palīdzētu mums šajā pēdējā posmā, mēs izmantosim authconfig utilītu (saskarni sistēmas autentifikācijas resursu konfigurēšanai).

Izmantojot šo komandu, tiek izveidots pieprasītā lietotāja mājas direktorijs, ja tas nepastāv pēc tam, kad autentifikācija pret LDAP serveri ir veiksmīga:

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

Kopsavilkums

Šajā rakstā mēs esam paskaidrojuši, kā iestatīt pamata autentifikāciju pret LDAP serveri. Lai tālāk konfigurētu šajā rokasgrāmatā aprakstīto iestatīšanu, lūdzu, skatiet RHEL 7 sistēmas administratora rokasgrāmatas 13. nodaļu - LDAP konfigurācija, īpašu uzmanību pievēršot drošības iestatījumiem, izmantojot TLS.

Nekautrējieties atstāt visus jautājumus, izmantojot zemāk esošo komentāru veidlapu.