Cómo instalar y configurar OpenLDAP y phpLDAPadmin en Ubuntu 20.04

LDAP es un Protocolo Ligero de Acceso a Directorios que se utiliza para acceder y mantener un directorio distribuido a través de un protocolo de Internet. phpLDAPadmin es un cliente LDAP basado en la web que se utiliza para gestionar y administrar el servidor LDAP. Su potente funcionalidad de búsqueda y su vista de árbol jerárquico facilitan la gestión del servidor LDAP a través del navegador web. Puedes añadir y eliminar registros, ver y editar los atributos de las imágenes, gestionar los hashes de las contraseñas de los usuarios y muchas cosas más utilizando phpLDAPadmin.

En este tutorial, explicaremos cómo instalar phpLDAPadmin en Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, se recomienda siempre actualizar tu sistema con la última versión de los paquetes. Puedes actualizarlo con el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Instalar y configurar el servidor OpenLDAP

En primer lugar, tendrás que instalar Slapd y otras utilidades LDAP en tu servidor. Puedes instalarlos ejecutando el siguiente comando:

apt-get install slapd ldap-utils

Durante la instalación, se te pedirá que establezcas una contraseña de administrador, como se muestra a continuación:

Configurar slapd

Proporciona tu contraseña segura y pulsa Intro para continuar. Una vez finalizada la instalación, tendrás que reconfigurar el paquete SLAPD para establecer la información de tu dominio.

Puedes reconfigurarlo con el siguiente comando:

dpkg-reconfigure slapd

Se te pedirá que omitas la configuración del servidor OpenLDAP como se muestra a continuación:

Configuración de OpenLdap

Selecciona No y pulsa Intro para continuar. Se te pedirá que proporciones un nombre de dominio DNS como se muestra a continuación:

Configurar slapd

Proporciona tu nombre de dominio y pulsa Intro para continuar. Se te pedirá que proporciones el nombre de la organización como se muestra a continuación:

Nombre de la organización

Proporciona el nombre de la organización que desees y pulsa Intro para continuar. Se te pedirá la contraseña de administrador como se muestra a continuación:

contraseña de administrador

Proporciona tu contraseña de administrador y pulsa Intro para continuar. Se te pedirá que elimines la base de datos como se muestra a continuación:

purgar la base de datos

Selecciona y pulsa Intro para finalizar la configuración.

Ahora, puedes verificar tu información LDAP utilizando el siguiente comando:

slapcat

Deberías obtener la siguiente salida:

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
structuralObjectClass: organization
entryUUID: 971829cc-ac5f-103a-8e42-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.103064Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Tm5OYlpSMktkYjVnUUprb284MHFPTEVkMjQrQXpQWEk=
structuralObjectClass: organizationalRole
entryUUID: 9718c198-ac5f-103a-8e43-9f8486ff5685
creatorsName: cn=admin,dc=example,dc=com
createTimestamp: 20201027051828Z
entryCSN: 20201027051828.107057Z#000000#000#000000
modifiersName: cn=admin,dc=example,dc=com
modifyTimestamp: 20201027051828Z

Crear cuentas de usuario OpenLDAP

En primer lugar, tendrás que crear los contenedores de la unidad de organización para almacenar la información de los usuarios y grupos. Puedes crearlo con el siguiente comando:

nano users-ou.ldif

Añade las siguientes líneas:

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups

Guarda y cierra el archivo cuando hayas terminado y luego ajusta los controles de acceso a la base de datos SLAPD creando el siguiente archivo:

nano update-mdb-acl.ldif

Añade las siguientes líneas:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire
  by self write
  by anonymous auth
  by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" read 
  by * none
olcAccess: to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
olcAccess: to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
  by users read 
  by * none

Guarda y cierra el archivo y luego actualiza el ACL de la base de datos con la información anterior ejecutando el siguiente comando:

ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif

Deberías obtener la siguiente salida:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"

A continuación, actualiza la base de datos con la información del usuario OU ejecutando el siguiente comando:

ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif

Deberías obtener el siguiente resultado:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "ou=people,dc=example,dc=com"

adding new entry "ou=groups,dc=example,dc=com"

A continuación, crea una nueva cuenta de usuario llamada hiteshj creando el siguiente archivo:

nano hitesh.ldif

Añade las siguientes líneas:

dn: uid=hiteshj,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: hiteshj
cn: Hitesh
sn: Jethva
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/hiteshj
shadowMax: 60
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
shadowLastChange: 0

dn: cn=hiteshj,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: hiteshj
gidNumber: 10000
memberUid: hiteshj

Guarda y cierra el archivo y luego añade el usuario a la base de datos con el siguiente comando:

ldapadd -Y EXTERNAL -H ldapi:/// -f hitesh.ldif

Deberías obtener el siguiente resultado:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "uid=hiteshj,ou=people,dc=example,dc=com"

adding new entry "cn=hiteshj,ou=groups,dc=example,dc=com"

A continuación, tendrás que establecer la contraseña del usuario. Puedes establecerla con el siguiente comando:

ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=hiteshj,ou=people,dc=example,dc=com"

Deberías ver la siguiente salida:

New password: 
Re-enter new password: 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear el DN de enlace de OpenLDAP

A continuación, tendrás que definir el nombre de usuario y la contraseña para consultar el servidor de directorios. En primer lugar, genera el hash de la contraseña para el usuario bind DN utilizando el siguiente comando:

slappasswd

Deberías obtener la siguiente salida:

New password: 
Re-enter new password: 
{SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb

A continuación, crea un nombre Bind DN de sólo lectura con el siguiente comando:

nano readonly-user.ldif

Añade las siguientes líneas:

dn: cn=readonly,ou=people,dc=example,dc=com
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: {SSHA}DhjyJN5akaj2etaFKoyeAY8QMgSD/OTb
description: Bind DN user for LDAP Operations

Guarda y cierra el archivo cuando hayas terminado y luego añade el usuario BIND a la base de datos con el siguiente comando:

ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif

Deberías obtener la siguiente salida:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=readonly,ou=people,dc=example,dc=com"

A continuación, verifica la ACL del DN Bind con el siguiente comando:

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess

Deberías obtener la siguiente salida:

dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword,shadowLastChange,shadowExpire by self writ
 e by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=ext
 ernal,cn=auth" manage  by dn.exact="cn=readonly,ou=people,dc=example,dc=com" 
 read  by * none
olcAccess: {1}to dn.exact="cn=readonly,ou=people,dc=example,dc=com" by dn.subt
 ree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * non
 e
olcAccess: {2}to dn.subtree="dc=example,dc=com" by dn.subtree="gidNumber=0+uid
 Number=0,cn=peercred,cn=external,cn=auth" manage by users read  by * none

Instalar y configurar phpLDAPadmin

Por defecto, el paquete phpLDAPadmin está disponible en el repositorio por defecto de Ubuntu 20.04. Puedes instalarlo ejecutando el siguiente comando:

apt-get install phpldapadmin -y

Después de instalar phpLDAPadmin, tendrás que configurar phpLDAPadmin y definir la información de tu dominio. Puedes hacerlo editando el archivo /etc/phpldapadmin/config.php:

nano /etc/phpldapadmin/config.php

Cambia las siguientes líneas:

$servers->setValue('server','name','My LDAP Server');
$servers->setValue('server','host','69.87.216.102');
$servers->;setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','auth_type','session');
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
$servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000));

Guarda y cierra el archivo cuando hayas terminado.

Configurar Apache para phpLDAPadmin

El archivo de configuración por defecto de phpLDAPadmin para Apache se encuentra en /etc/apache2/conf-available/phpldapadmin.conf. No hagas ningún cambio y sigue con la configuración por defecto.

A continuación, desactiva el archivo de configuración del host virtual de Apache por defecto y reinicia el servicio de Apache para aplicar los cambios:

a2dissite 000-default.conf
systemctl restart apache2

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la interfaz web de phpLDAPadmin

Ahora, abre tu navegador web y accede a phpLDAPadmin utilizando la URL http://your-server-ip/phpldapadmin. Deberías ver la siguiente pantalla:

phpladpadmin

Ahora, haz clic en el botón de inicio de sesión. Deberías ver la pantalla de inicio de sesión de phpLDAPadmin:

Inicio de sesión de phpladpadmin

Proporciona tu DN de acceso, tu contraseña y haz clic en el botón Autenticar. Deberías ver el panel de phpLDAPadmin en la siguiente pantalla:

Panel de control Ldap

Conclusión

Enhorabuena! has instalado y configurado con éxito phpLDAPadmin en el servidor Ubuntu 20.04. Ahora puedes gestionar tu servidor LDAP y realizar varias tareas, como añadir unidades organizativas, grupos y usuarios con la interfaz web de phpLDAPadmin. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...