Cómo instalar el servidor OpenLDAP para la autenticación centralizada


El Protocolo ligero de acceso a directorios ( LDAP en pocas palabras) es un conjunto de protocolos estándar de la industria, ligero y ampliamente utilizado para acceder a servicios de directorio. Un servicio de directorio es una infraestructura de información compartida para acceder, administrar, organizar y actualizar elementos cotidianos y recursos de red, como usuarios, grupos, dispositivos, direcciones de correo electrónico, números de teléfono, volúmenes y muchos otros objetos.

El modelo de información LDAP se basa en las entradas. Una entrada en un directorio LDAP representa una sola unidad o información y se identifica de forma única por lo que se llama un nombre distinguido ( DN ). Cada uno de los atributos de la entrada tiene un tipo y uno o más valores.

Un atributo es una información asociada con una entrada. Los tipos suelen ser cadenas mnemónicas, como " cn " para el nombre común o " correo " para la dirección de correo electrónico. A cada atributo se le asigna uno o más valores que consisten en una lista separada por espacios.

La siguiente es una ilustración de cómo se organiza la información en el directorio LDAP .

En este artículo, mostraremos cómo instalar y configurar el servidor OpenLDAP para la autenticación centralizada en Ubuntu 16.04/18.04 y CentOS 7 .

Paso 1: Instalar el servidor LDAP

1. Empiece por instalar OpenLDAP , una implementación de código abierto de LDAP y algunas utilidades de administración de LDAP tradicionales usando los siguientes comandos.

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

En Ubuntu , durante la instalación del paquete, se le solicitará que ingrese la contraseña de la entrada de administrador en su directorio LDAP, establezca una contraseña segura y confírmela.

Cuando se complete la instalación, puede iniciar el servicio como se explica a continuación.

2. En CentOS 7 , ejecute los siguientes comandos para iniciar el daemon del servidor openldap , habilítelo para que se inicie automáticamente en el momento del arranque y verifique si está en funcionamiento (en Ubuntu el servicio debería iniciarse automáticamente en systemd, simplemente puede verificar su estado):

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

3. A continuación, permita las solicitudes al demonio del servidor LDAP a través del firewall como se muestra.

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

Paso 2: Configurando el servidor LDAP

4. Ahora cree un usuario administrativo de OpenLDAP y asigne una contraseña para ese usuario. En el siguiente comando, se crea un valor hash para la contraseña dada, tome nota de ello, lo usará en el archivo de configuración LDAP.

$ slappasswd

5. Luego cree un archivo LDIF ( ldaprootpasswd.ldif ) que se usa para agregar una entrada al directorio LDAP.

$ sudo vim ldaprootpasswd.ldif

Añade los siguientes contenidos en él:

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

explicando los pares de valor-atributo arriba:

  • olcDatabase: indicates a specific database instance name and can be typically found inside /etc/openldap/slapd.d/cn=config.
  • cn=config: indicates global config options.
  • PASSWORD: is the hashed string obtained while creating the administrative user.

6. A continuación, agregue la entrada LDAP correspondiente especificando el URI que se refiere al servidor ldap y al archivo anterior.

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

Paso 3: Configurando la base de datos LDAP

7. Ahora copie el archivo de configuración de la base de datos de muestra para slapd en el directorio /var/lib/ldap , y establezca los permisos correctos en el archivo .

$ 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ón, importe algunos esquemas LDAP básicos del directorio /etc/openldap/schema de la siguiente manera.

$ 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. Ahora agregue su dominio a la base de datos LDAP y cree un archivo llamado ldapdomain.ldif para su dominio.

$ sudo vim ldapdomain.ldif 

Agregue el siguiente contenido (reemplace el ejemplo con su dominio y CONTRASEÑA con el valor de hash obtenido anteriormente):

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. Luego agregue la configuración anterior a la base de datos LDAP con el siguiente comando.

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

11. En este paso, debemos agregar algunas entradas a nuestro directorio LDAP . Cree otro archivo llamado baseldapdomain.ldif con el siguiente contenido.

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 

Guarde el archivo y luego agregue las entradas al directorio LDAP.

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

12. El siguiente paso es crear un usuario LDAP para ejemplo , tecmint y configurar una contraseña para este usuario de la siguiente manera.

$ sudo useradd tecmint
$ sudo passwd tecmint

13. Luego cree las definiciones para un grupo LDAP en un archivo llamado ldapgroup.ldif con el siguiente contenido.

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

En la configuración anterior, gidNumber es el GID en /etc/group para tecmint y lo agrega a OpenLDAP directorio.

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

14. A continuación, cree otro archivo LDIF llamado ldapuser.ldif y agregue las definiciones para el usuario 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

a continuación, cargue la configuración en el directorio LDAP.

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

Una vez que haya configurado un servidor central para la autenticación, la parte final es permitir que el cliente se autentique utilizando LDAP como se explica en esta guía:

  1. How to Configure LDAP Client to Connect External Authentication

Para obtener más información, consulte la documentación correspondiente del catálogo de documentos del software OpenLDAP y los usuarios de Ubuntu pueden consultar la guía del servidor OpenLDAP.

OpenLDAP es una implementación de código abierto de LDAP en Linux. En este artículo, hemos mostrado cómo instalar y configurar el servidor OpenLDAP para la autenticación centralizada, en Ubuntu 16.04/18.04 y CentOS 7. Si tiene alguna pregunta o idea que compartir, no dude en comunicarse con nosotros a través del formulario de comentarios a continuación.