El Protocolo ligero de acceso a directorios ( LDAP, por sus siglas en inglés) es un conjunto de protocolos estándar de la industria, ligero y ampliamente utilizado para acceder a los 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 sola unidad o información y se identifica de forma única mediante lo que se denomina un nombre distinguido ( DN ). Cada uno de los atributos de la entrada tiene un tipo y uno o más valores.
Un atributo es un dato asociado con una entrada. Los tipos suelen ser cadenas nemoté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.
La siguiente es una ilustración de cómo se organiza la información en el directorio LDAP .
Modelo de información 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: instalación del servidor LDAP
1. Primero, comience instalando OpenLDAP , una implementación de código abierto de LDAP y algunas utilidades tradicionales de administración de LDAP 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.
Configurar la contraseña de administrador de Slapd
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 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 el comando ldapadd o ldapmodify para cargarlas en el directorio LDAP como se muestra a continuación.
4. Ahora cree un usuario administrativo OpenLDAP y asigne una contraseña para ese usuario. En el siguiente comando, se crea un valor hash para la contraseña dada, anótelo, lo usará en el archivo de configuración LDAP.
$ slappasswd
Crear usuario administrador Ldap
5. Luego cree un archivo LDIF ( ldaprootpasswd.ldif ) que se usa 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ífico y normalmente se puede encontrar dentro de /etc/openldap/slapd.d/cn=config .
- cn = config : indica las 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
Agregar parámetros desde el archivo de contraseña raíz
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 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 en la base de datos LDAP y cree un archivo llamado ldapdomain.ldif para su dominio.
$ sudo vim ldapdomain.ldif
Agregue el siguiente contenido en él (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
Cargar configuración de dominio
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, por 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 lo agrega al directorio OpenLDAP.
$ 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:
- 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 la autenticación centralizada, en Ubuntu 16.04 / 18.04 y CentOS 7. Si tiene una pregunta o ideas para compartir, no dude en comunicarse con nosotros a través del formulario de comentarios a continuación.
CentOS , Ldap , OpenLDAP , Ubuntu