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. 5. Luego cree un archivo LDIF ( ldaprootpasswd.ldif ) que se usa para agregar una entrada al directorio LDAP. Añade los siguientes contenidos en él: explicando los pares de valor-atributo arriba: 6. A continuación, agregue la entrada LDAP correspondiente especificando el URI que se refiere al servidor ldap y al archivo anterior. 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 . 8. A continuación, importe algunos esquemas LDAP básicos del directorio /etc/openldap/schema de la siguiente manera. 9. Ahora agregue su dominio a la base de datos LDAP y cree un archivo llamado ldapdomain.ldif para su dominio. Agregue el siguiente contenido (reemplace el ejemplo con su dominio y CONTRASEÑA con el valor de hash obtenido anteriormente): 10. Luego agregue la configuración anterior a la base de datos LDAP con el siguiente comando. 11. En este paso, debemos agregar algunas entradas a nuestro directorio LDAP . Cree otro archivo llamado baseldapdomain.ldif con el siguiente contenido. Guarde el archivo y luego agregue las entradas al directorio LDAP. 12. El siguiente paso es crear un usuario LDAP para ejemplo , tecmint y configurar una contraseña para este usuario de la siguiente manera. 13. Luego cree las definiciones para un grupo LDAP en un archivo llamado ldapgroup.ldif con el siguiente contenido. En la configuración anterior, gidNumber es el GID en /etc/group para tecmint y lo agrega a OpenLDAP directorio. 14. A continuación, cree otro archivo LDIF llamado ldapuser.ldif y agregue las definiciones para el usuario tecmint . a continuación, cargue la configuración en el directorio LDAP. 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: 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.$ slappasswd
$ sudo vim ldaprootpasswd.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif
Paso 3: Configurando la base de datos LDAP
$ 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
$ 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
$ sudo vim ldapdomain.ldif
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
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif
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
$ sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif
$ sudo useradd tecmint
$ sudo passwd tecmint
dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005
$ sudo ldapadd -Y EXTERNAL -x -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif
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
$ ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f ldapuser.ldif