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:
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:
Selecciona No y pulsa Intro para continuar. Se te pedirá que proporciones un nombre de dominio DNS como se muestra a continuación:
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:
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:
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:
Selecciona Sí 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:
Ahora, haz clic en el botón de inicio de sesión. Deberías ver la pantalla de inicio de sesión de phpLDAPadmin:
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:
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.