Com instal·lar el servidor OpenLDAP per a l'autenticació centralitzada


El protocol d'accés a directoris lleuger (LDAP, en resum) és un conjunt de protocols estàndard de la indústria, lleuger i molt utilitzat per accedir als serveis de directori. Un servei de directori és una infraestructura d'informació compartida per accedir, gestionar, organitzar i actualitzar elements quotidians i recursos de xarxa, com ara usuaris, grups, dispositius, adreces de correu electrònic, números de telèfon, volums i molts altres objectes.

El model d'informació LDAP es basa en entrades. Una entrada en un directori LDAP representa una unitat o informació única i s'identifica de manera única amb el que s'anomena un nom distingit (DN). Cadascun dels atributs de l'entrada té un tipus i un o més valors.

Un atribut és una informació associada a una entrada. Els tipus solen ser cadenes mnemotècniques, com ara cn per al nom comú o correu per a l'adreça de correu electrònic. A cada atribut se li assignen un o més valors que consisteixen en una llista separada per espais.

A continuació es mostra una il·lustració de com s'organitza la informació al directori LDAP.

En aquest article, mostrarem com instal·lar i configurar el servidor OpenLDAP per a l'autenticació centralitzada a Ubuntu 16.04/18.04 i CentOS 7.

Pas 1: instal·lació del servidor LDAP

1. Primer comenceu instal·lant OpenLDAP, una implementació de codi obert de LDAP i algunes utilitats de gestió LDAP tradicionals mitjançant les ordres següents.

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

A Ubuntu, durant la instal·lació del paquet, se us demanarà que introduïu la contrasenya per a l'entrada d'administrador al vostre directori LDAP, establiu una contrasenya segura i la confirmeu.

Quan s'hagi completat la instal·lació, podeu iniciar el servei tal com s'explica a continuació.

2. A CentOS 7, executeu les ordres següents per iniciar el dimoni del servidor openldap, activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada i comproveu si està en funcionament (a Ubuntu, el servei s'hauria d'iniciar automàticament amb systemd, simplement podeu comprovar el seu estat):

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

3. A continuació, permeteu les sol·licituds al dimoni del servidor LDAP a través del tallafoc, tal com es mostra.

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

Pas 2: Configuració del servidor LDAP

Nota: No es recomana editar manualment la configuració LDAP, cal afegir les configuracions en un fitxer i utilitzar l'ordre ldapadd o ldapmodify per carregar-les al directori LDAP tal com es mostra a continuació.

4. Ara creeu un usuari administratiu d'OpenLDAP i assigneu-li una contrasenya. A l'ordre següent, es crea un valor hash per a la contrasenya proporcionada, tingueu-ne en compte, l'utilitzareu al fitxer de configuració LDAP.

$ slappasswd

5. A continuació, creeu un fitxer LDIF (ldaprootpasswd.ldif) que s'utilitza per afegir una entrada al directori LDAP.

$ sudo vim ldaprootpasswd.ldif

Afegiu-hi el contingut següent:

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

explicant els parells atribut-valor anteriors:

  • olcDatabase: indica el nom d'una instància de base de dades específica i normalment es pot trobar a /etc/openldap/slapd.d/cn=config.
  • cn=config: indica opcions de configuració global.
  • CONTRAsenya: és la cadena hash obtinguda en crear l'usuari administratiu.

6. A continuació, afegiu l'entrada LDAP corresponent especificant l'URI que fa referència al servidor ldap i al fitxer anterior.

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

Pas 3: Configuració de la base de dades LDAP

7. Ara copieu el fitxer de configuració de la base de dades de mostra per a slapd al directori /var/lib/ldap i configureu els permisos correctes al fitxer.

$ 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. A continuació, importeu alguns esquemes LDAP bàsics del directori /etc/openldap/schema de la manera següent.

$ 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. Ara afegiu el vostre domini a la base de dades LDAP i creeu un fitxer anomenat ldapdomain.ldif per al vostre domini.

$ sudo vim ldapdomain.ldif 

Afegiu-hi el contingut següent (substituïu l'exemple pel vostre domini i la CONTRAsenya pel valor hash obtingut abans):

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. A continuació, afegiu la configuració anterior a la base de dades LDAP amb l'ordre següent.

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

11. En aquest pas, hem d'afegir algunes entrades al nostre directori LDAP. Creeu un altre fitxer anomenat baseldapdomain.ldif amb el contingut següent.

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 

Deseu el fitxer i, a continuació, afegiu les entrades al directori LDAP.

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

12. El següent pas és crear un usuari LDAP, per exemple, tecmint, i establir una contrasenya per a aquest usuari de la manera següent.

$ sudo useradd tecmint
$ sudo passwd tecmint

13. A continuació, creeu les definicions per a un grup LDAP en un fitxer anomenat ldapgroup.ldif amb el contingut següent.

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

A la configuració anterior, gidNumber és el GID a /etc/group per a tecmint i afegiu-lo al directori OpenLDAP.

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

14. A continuació, creeu un altre fitxer LDIF anomenat ldapuser.ldif i afegiu les definicions per a l'usuari 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

després carregueu la configuració al directori LDAP.

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

Un cop hàgiu configurat un servidor central per a l'autenticació, la part final és permetre que el client s'autentiqui mitjançant LDAP, tal com s'explica en aquesta guia:

  1. Com configurar el client LDAP per connectar l'autenticació externa

Per obtenir més informació, consulteu la documentació adequada de la guia del servidor OpenLDAP.

OpenLDAP és una implementació de codi obert de LDAP a Linux. En aquest article, hem mostrat com instal·lar i configurar el servidor OpenLDAP per a l'autenticació centralitzada, a Ubuntu 16.04/18.04 i CentOS 7. Si teniu alguna pregunta o reflexió per compartir, no dubteu a posar-vos en contacte amb nosaltres a través del formulari de comentaris a continuació.