Búsqueda de sitios web

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


El Protocolo ligero de acceso a directorios (LDAP para abreviar) es un conjunto de protocolos estándar de la industria, livianos y ampliamente utilizados 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 entradas. Una entrada en un directorio LDAP representa una única unidad o información y se identifica de forma única mediante 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 pieza de información asociada con una entrada. Los tipos suelen ser cadenas mnemotécnicas, como “cn” para el nombre común o “mail” 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.

A continuación se muestra 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. Primero comience instalando OpenLDAP, una implementación de código abierto de LDAP y algunas utilidades de administración de LDAP tradicionales utilizando 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 pedirá que ingrese la contraseña para la entrada de administrador en su directorio LDAP, establezca una contraseña segura y confírmela.

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

2. En CentOS 7, ejecute los siguientes comandos para iniciar el demonio 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 debe 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: Configurar el servidor LDAP

Nota: No se recomienda editar manualmente la configuración LDAP, debe agregar las configuraciones en un archivo y usar ldapadd o < comandoldapmodify para cargarlos en el directorio LDAP como se muestra a continuación.

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 proporcionada, anótelo, lo usará en el archivo de configuración LDAP.

slappasswd

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

sudo vim ldaprootpasswd.ldif

Agregue el siguiente contenido en él:

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

explicando los pares atributo-valor anteriores:

  • olcDatabase: indica un nombre de instancia de base de datos específica y normalmente se puede encontrar dentro de /etc/openldap/slapd.d/cn=config.
  • cn=config: indica opciones de configuración global.
  • CONTRASEÑA: es la cadena hash obtenida al crear el usuario administrativo.

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

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

Paso 3: Configurar 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 desde el 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 hash obtenido antes):

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, necesitamos 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 establecer 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 agréguelo 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

luego 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 usando LDAP como se explica en esta guía:

  1. Cómo configurar el cliente LDAP para conectar la autenticación externa

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.

Resumen

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 autenticación centralizada, en Ubuntu 16.04/18.04 y CentOS 7. Si tiene alguna pregunta o idea para compartir, no dude en comunicarse con nosotros a través del formulario de comentarios a continuación.