Cum se instalează serverul OpenLDAP pentru autentificare centralizată


Lightweight Directory Access Protocol (LDAP pe scurt) este un set de protocoale standard, ușor și utilizat pe scară largă pentru accesarea serviciilor de directoare. Un serviciu de director este o infrastructură de informații partajată pentru accesarea, gestionarea, organizarea și actualizarea elementelor de zi cu zi și a resurselor de rețea, cum ar fi utilizatori, grupuri, dispozitive, adrese de e-mail, numere de telefon, volume și multe alte obiecte.

Modelul de informații LDAP se bazează pe intrări. O intrare dintr-un director LDAP reprezintă o singură unitate sau informație și este identificată în mod unic prin ceea ce se numește Nume distinctiv (DN). Fiecare dintre atributele intrării are un tip și una sau mai multe valori.

Un atribut este o informație asociată cu o intrare. Tipurile sunt de obicei șiruri mnemonice, cum ar fi „cn” pentru numele comun sau „mail” pentru adresa de e-mail. Fiecărui atribut i se atribuie una sau mai multe valori constând într-o listă separată prin spații.

Următoarea este o ilustrare a modului în care sunt aranjate informațiile în directorul LDAP.

În acest articol, vom arăta cum să instalați și să configurați serverul OpenLDAP pentru autentificarea centralizată în Ubuntu 16.04/18.04 și CentOS 7.

Pasul 1: Instalarea serverului LDAP

1. Începeți mai întâi prin a instala OpenLDAP, o implementare open source a LDAP și a unor utilitare tradiționale de gestionare LDAP, folosind următoarele comenzi.

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Pe Ubuntu, în timpul instalării pachetului, vi se va solicita să introduceți parola pentru intrarea de administrator în directorul dvs. LDAP, să setați o parolă sigură și să o confirmați.

Când instalarea este finalizată, puteți porni serviciul așa cum este explicat în continuare.

2. Pe CentOS 7, rulați următoarele comenzi pentru a porni demonul serverului openldap, activați-l să pornească automat la pornire și verificați dacă este în funcțiune (pe Ubuntu serviciul ar trebui să fie pornit automat sub systemd, puteți pur și simplu să-i verificați starea):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. Apoi, permiteți solicitările către demonul serverului LDAP prin firewall, așa cum se arată.

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

Pasul 2: Configurarea serverului LDAP

Notă: nu este recomandat să editați manual configurația LDAP, trebuie să adăugați configurațiile într-un fișier și să utilizați ldapadd sau ldapmodify pentru a le încărca în directorul LDAP, așa cum se arată mai jos.

4. Acum creați un utilizator administrativ OpenLDAP și atribuiți o parolă utilizatorului respectiv. În comanda de mai jos, se creează o valoare hashed pentru parola dată, luați notă de ea, o veți folosi în fișierul de configurare LDAP.

slappasswd

5. Apoi creați un fișier LDIF (ldaprootpasswd.ldif) care este folosit pentru a adăuga o intrare în directorul LDAP.

sudo vim ldaprootpasswd.ldif

Adăugați următorul conținut în el:

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

explicând perechile atribut-valoare de mai sus:

  • olcDatabase: indică un anumit nume de instanță a bazei de date și poate fi găsit de obicei în /etc/openldap/slapd.d/cn=config.
  • cn=config: indică opțiunile globale de configurare.
  • PAROLA: este șirul hash obținut la crearea utilizatorului administrativ.

6. Apoi, adăugați intrarea LDAP corespunzătoare specificând URI-ul care se referă la serverul ldap și la fișierul de mai sus.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Pasul 3: Configurarea bazei de date LDAP

7. Acum copiați exemplul de fișier de configurare a bazei de date pentru slapd în directorul /var/lib/ldap și setați permisiunile corecte pentru fișier .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. Apoi, importați câteva scheme LDAP de bază din directorul /etc/openldap/schema, după cum urmează.

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Acum adăugați domeniul dvs. în baza de date LDAP și creați un fișier numit ldapdomain.ldif pentru domeniul dvs.

sudo vim ldapdomain.ldif 

Adăugați următorul conținut în el (înlocuiți exemplul cu domeniul dvs. și PAROLA cu valoarea hashing obținută anterior):

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=example,dc=com" read by * none

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,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=example,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=example,dc=com" write by * read

10. Apoi adăugați configurația de mai sus la baza de date LDAP cu următoarea comandă.

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. În acest pas, trebuie să adăugăm câteva intrări în directorul nostru LDAP. Creați un alt fișier numit baseldapdomain.ldif cu următorul conținut.

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

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

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

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

Salvați fișierul și apoi adăugați intrările în directorul LDAP.

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. Următorul pas este să creați un utilizator LDAP de exemplu, tecmint și să setați o parolă pentru acest utilizator după cum urmează.

sudo useradd tecmint
sudo passwd tecmint

13. Apoi creați definițiile pentru un grup LDAP într-un fișier numit ldapgroup.ldif cu următorul conținut.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

În configurația de mai sus, gidNumber este GID în /etc/group pentru tecmint și adăugați-l la OpenLDAP director.

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Apoi, creați un alt fișier LDIF numit ldapuser.ldif și adăugați definițiile pentru utilizatorul tecmint.

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

apoi încărcați configurația în directorul LDAP.

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Odată ce ați configurat un server central pentru autentificare, partea finală este să permiteți clientului să se autentifice folosind LDAP, așa cum este explicat în acest ghid:

  1. Cum se configurează clientul LDAP pentru a conecta autentificarea externă

Pentru mai multe informații, consultați documentația corespunzătoare din catalogul de documente OpenLDAP Software, iar utilizatorii Ubuntu pot consulta ghidul serverului OpenLDAP.

rezumat

OpenLDAP este o implementare open source a LDAP în Linux. În acest articol, am arătat cum să instalați și să configurați serverul OpenLDAP pentru autentificare centralizată, în Ubuntu 16.04/18.04 și CentOS 7. Dacă aveți o întrebare sau gânduri de împărtășit, nu ezitați să ne contactați prin formularul de comentarii de mai jos.