Montar servidor LDAP en Ubuntu (OpenLDAP)
Actualizado: 2026-01-07 · Dificultad: Fácil · Tiempo estimado: 20-30 min
Resultado: al final tendrás un servidor OpenLDAP funcionando con una estructura básica (OUs), usuarios y grupos,
y podrás validar consultas y autenticación con ldapsearch.
Requisitos
- Ubuntu 22.04/24.04 (recomendado) con acceso
sudo - IP fija o al menos una IP estable en tu red
- Acceso a terminal y conectividad desde tu equipo (para pruebas)
Objetivo
Instalar y configurar OpenLDAP en Ubuntu, definir un Base DN (ej.: dc=lab,dc=local),
crear las OUs ou=People y ou=Groups, y añadir un usuario y un grupo de ejemplo
para usar posteriormente en FortiGate (autenticación remota por LDAP).
Conceptos clave
Antes de empezar, es importante entender algunos conceptos básicos de LDAP que se utilizarán a lo largo del tutorial.
- Conceptos LDAP usados en este laboratorio:
-
Dominio LDAP (Base DN):
dc=lab,dc=local
Raíz del directorio LDAP. Equivale al dominio lógico del laboratorio. -
OU (Organizational Unit):
ou=People,dc=lab,dc=local / ou=Groups,dc=lab,dc=local
Contenedores para organizar usuarios y grupos. -
DN (Distinguished Name):
uid=user1,ou=People,dc=lab,dc=local
Ruta completa que identifica de forma única un objeto dentro del directorio. - Usuario de ejemplo: uid=user1,ou=People,dc=lab,dc=local
- Grupo de ejemplo: cn=vpn_users,ou=Groups,dc=lab,dc=local
Pasos
1) Preparación del sistema
Actualiza el sistema e instala los paquetes necesarios.
sudo apt update && sudo apt upgrade -y
sudo apt install slapd ldap-utils -y
Una vez instalamos slapd, automáticamente nos pide asignar una contraseña de administrador.
“1234” para mi prueba.
Contraseña de administrador
2) Configuración inicial de slapd
slapd es el demonio (servicio) principal de OpenLDAP: implementa el protocolo LDAP y permite el acceso
y gestión del directorio.
Reconfiguramos slapd con el siguiente comando:
sudo dpkg-reconfigure slapd
Omisión de configuración
Seleccionamos No.
Nombre de dominio DNS
Ponemos el nombre de dominio que queremos para nuestro servidor. De aquí se obtendrá el DN:
dc=lab,dc=local.
Nombre de la organización
Ponemos el nombre de la organización. Es meramente informativo; aparecerá en algunos atributos LDAP.
Confirmar acceso admin
Introducimos la contraseña de administrador (la del paso 1).
Purgado de base de datos al purgar slapd
En esta opción normalmente seleccionamos No.
Mover base de datos antigua (copia de seguridad)
Normalmente seleccionamos Yes para mantener una copia si existían datos antiguos.
3) Crear directorio de trabajo
Crearemos el directorio de trabajo /opt/ldap para trabajar de manera ordenada.
sudo mkdir -p /opt/ldap
sudo chown $USER:$USER /opt/ldap
cd /opt/ldap
4) Crear estructura base (OUs)
Vamos a crear las unidades organizativas People y Groups.
Creamosel archivo base.ldif y guarda lo siguiente:
dn: ou=People,dc=lab,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=lab,dc=local
objectClass: organizationalUnit
ou: Groups
Aplica el LDIF:
ldapadd -x -D "cn=admin,dc=lab,dc=local" -W -f base.ldif
5) Crear un grupo y un usuario de ejemplo
Crea un grupo (ej.: vpn_users) y un usuario (ej.: user1).
Guarda los siguientes archivos:
group.ldif
dn: cn=vpn_users,ou=Groups,dc=lab,dc=local
objectClass: posixGroup
cn: vpn_users
gidNumber: 5000
user1.ldif
dn: uid=user1,ou=People,dc=lab,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: User One
sn: One
uid: user1
uidNumber: 10000
gidNumber: 5000
homeDirectory: /home/user1
loginShell: /bin/bash
userPassword: password123
Aplica ambos LDIF:
ldapadd -x -D "cn=admin,dc=lab,dc=local" -W -f group.ldif
ldapadd -x -D "cn=admin,dc=lab,dc=local" -W -f user1.ldif
Resultados
Esto es lo que hemos creado:
- Resumen de DN usados en este laboratorio:
- Base DN: dc=lab,dc=local
- Usuarios: ou=People,dc=lab,dc=local
- Grupos: ou=Groups,dc=lab,dc=local
- Usuario ejemplo: uid=user1,ou=People,dc=lab,dc=local
- Grupo ejemplo: cn=vpn_users,ou=Groups,dc=lab,dc=local
Validación
Verifica que puedes consultar el directorio y que aparecen las OUs, el usuario y el grupo.
ldapsearch -x -b "dc=lab,dc=local"
ldapsearch -x -b "ou=People,dc=lab,dc=local"
ldapsearch -x -b "ou=Groups,dc=lab,dc=local"
Preparación Ubuntu cliente
Vamos a crear un Ubuntu unido a este servidor para probar los accesos. Para ello ejecutamos:
sudo apt update
sudo apt install libnss-ldap libpam-ldap ldap-utils nscd -y
1) URI del servidor
Durante la instalación de los paquetes te pedirá que introduzcas la URI del servidor LDAP:
Si os fijais en el texto que hay en la linea rosa, este comienza con la palabra "ldapi". Esa i debemos de eliminarla, ya que es solo para conexiones locales. Nosotros queremos conectarnos a un servidor remoto así que con que ponga "ldap" nos vale.
Posteriormente verificar que tengais esta linea descomentada y con la IP del servidor en el archivo de configuración /etc/ldap.conf
2) Introducir DN
Nos pedirá que introduzcamos el DN base del dominio al que queremos unir el cliente, en este caso "dc=lab,dc=local":
2) Versión LDAP
Seleccionamos la versión 3
3) Require Login
Seleccionamos "No"
4) Preparación de los usuarios del sistema
Vamos a editar el fichero /etc/nsswitch.conf. Este fichero configura el servicio NSS, que sirve para decirle al sistema donde buscar la información. En este caso pondremos:
passwd: files ldap
group: files ldap
shadow: files ldap
Esto es decirle al sistema que los usuarios también los busque en LDAP
El resto de configuraciones las dejamos como están, solo cambiamos las 3 indicadas en la foto.
5) Configuración PAM
Vamos a editar el fichero /etc/pam.d/common-session. Este fichero configura el servicio NSS, que sirve para decirle al sistema donde buscar la información. En este caso pondremos:
sudo nano /etc/pam.d/common-session
Añadimos al final:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
PAM (Pluggable Authentication Modules) es el sistema de autenticación de Linux.
- Decide si un usuario puede o no autenticarse
- NO decide si el usuario existe (eso es NSS)
- NO guarda usuarios (eso es LDAP / archivos locales)
6) Reiniciar servicios
Para finalizar, reiniciamos los servicios y reiniciamos el equipo
sudo systemctl restart nscd
reboot
7) Verificación
Vamos a usar el comando getent. Este sirve para consultar las bases de datos del sistema a través de NSS. Es decir, te dice lo que el sistema operativo ve y puede acceder.
getent passwd user1
getent group vpn_users
getent passwd | grep user1
Ahora podemos logearnos con un usuario remoto en el equipo cliente:
Troubleshooting
- Error:
Invalid credentials (49)→ Solución: revisa elBind DN(cn=admin,dc=lab,dc=local) y la contraseña usada con-W. - Error:
Can't contact LDAP server→ Solución: verifica queslapdestá activo (systemctl status slapd) y el puerto 389 accesible. - Error: LDIF no se aplica → Solución: revisa el formato del archivo (DN correcto, saltos de línea y comillas si procede).
Tutoriales relacionados
Instalar maquina virtual Fortinet
Configurar autenticación remota con LDAP en Fortinet
Volver a tutoriales.