Instalación y configuración de OpenLDAP en un VPS: gestión centralizada de usuarios y grupos
TL;DR
En esta guía detallada, configuraremos paso a paso un servidor OpenLDAP en su VPS para proporcionar una gestión centralizada de cuentas de usuarios y grupos. Aprenderá a instalar los componentes necesarios, configurar el dominio, cargar esquemas, crear usuarios y grupos, y configurar una conexión segura utilizando TLS/SSL. Como resultado, obtendrá un sistema de autenticación y autorización listo para usar que se puede integrar con otros servicios.
- Configuración de un servidor OpenLDAP en Ubuntu 24.04 LTS para una gestión centralizada.
- Instalación paso a paso y configuración básica del demonio
slapdy las utilidades cliente. - Ejemplos de archivos LDIF para crear unidades organizativas, usuarios y grupos.
- Configuración de una conexión segura utilizando TLS/SSL y certificados Let's Encrypt a través de Certbot.
- Recomendaciones para copias de seguridad, mantenimiento y resolución de problemas comunes.
- Comandos prácticos que se pueden copiar y ejecutar en su servidor.
Qué configuramos y por qué
En el panorama de TI moderno, donde las organizaciones utilizan una multitud de servicios y aplicaciones diferentes, la gestión de las cuentas de usuario se convierte en una tarea compleja. Cada servicio requiere su propia base de usuarios, sus propias contraseñas, lo que lleva a la fragmentación de datos, problemas de seguridad y altos costos generales de administración. Precisamente para resolver este problema existen los servicios de directorio centralizados, uno de los más populares y potentes de los cuales es OpenLDAP.
OpenLDAP (Lightweight Directory Access Protocol) es una implementación de código abierto del protocolo LDAP, que proporciona un sistema flexible y escalable para almacenar y acceder a información sobre usuarios, grupos, dispositivos y otros recursos de red. Al instalar OpenLDAP en su VPS, creará un único punto de autenticación y autorización para todos sus servicios internos y externos: desde servidores de correo y VPN hasta sistemas de control de versiones (GitLab) y mensajería corporativa (Mattermost).
En última instancia, obtendrá una base de datos de usuarios unificada, donde cada empleado tendrá una cuenta y una contraseña para acceder a todos los recursos necesarios. Esto simplificará significativamente la gestión de accesos, aumentará la seguridad mediante el control centralizado y reducirá la carga de los administradores. El lector podrá integrar su servidor OpenLDAP con sistemas como FreeIPA, Samba (para compatibilidad con Windows), Nextcloud, Jenkins, Grafana y muchos otros que admiten la autenticación LDAP.
Qué alternativas existen y por qué self-hosted en un VPS
Existen varios enfoques para la gestión centralizada de identidades:
- Soluciones gestionadas en la nube: Google Workspace, Microsoft Azure Active Directory, Okta, Auth0. Ofrecen alta disponibilidad, escalabilidad y costos de mantenimiento mínimos, pero a menudo tienen un costo más alto, menos flexibilidad en la configuración y pueden generar preguntas sobre la confidencialidad de los datos, ya que se almacenan en un proveedor externo.
- Soluciones self-hosted: OpenLDAP, FreeIPA (basado en OpenLDAP y Kerberos), Samba Active Directory. Estas soluciones brindan control total sobre los datos, máxima flexibilidad y un costo potencialmente más bajo a largo plazo.
La elección de OpenLDAP self-hosted en un VPS es ideal para quienes valoran el control total sobre su infraestructura, datos y presupuesto. Esto es especialmente relevante para fundadores individuales de proyectos SaaS, desarrolladores que necesitan configurar rápidamente un entorno de prueba o usuarios preocupados por la privacidad que desean evitar la dependencia de proveedores de la nube. Un VPS proporciona suficiente rendimiento y flexibilidad a un precio razonable, lo que permite implementar un servidor LDAP completo sin la necesidad de invertir en hardware propio o pagar costosas suscripciones en la nube.
Qué configuración de VPS se necesita para esta tarea
Los requisitos de VPS para OpenLDAP dependen de la escala de uso: la cantidad de usuarios, la frecuencia de las solicitudes y el volumen de datos almacenados. Para la mayoría de los proyectos pequeños y medianos (hasta varios cientos de usuarios), OpenLDAP es bastante económico.
Requisitos mínimos
- CPU: 1 vCPU (procesador moderno, por ejemplo, Intel Xeon E3/E5 o AMD EPYC).
- RAM: 1 GB (para la instalación básica y el funcionamiento del demonio
slapd). - Disco: 20-40 GB SSD (un disco rápido es crítico para el rendimiento de la base de datos LDAP).
- Red: 100 Mbit/s (para la mayoría de los escenarios esto es suficiente, si no hay solicitudes intensivas constantes).
Plan de VPS recomendado para la mayoría de los casos (hasta 1000 usuarios)
Para un funcionamiento estable con perspectivas de crecimiento e integración con varios servicios, se recomienda la siguiente configuración:
- CPU: 2 vCPU
- RAM: 2-4 GB
- Disco: 80-160 GB SSD (cuantos más usuarios y atributos, más espacio se necesitará)
- Red: 1 Gbit/s
Un VPS con las características indicadas se puede adquirir de varios proveedores. Por ejemplo, un VPS con las características indicadas será adecuado para la mayoría de las tareas de gestión centralizada de usuarios.
Cuándo se necesita un dedicado, no un VPS
Un servidor dedicado debe considerarse si:
- Gran cantidad de usuarios: Miles y decenas de miles de usuarios, solicitudes intensivas, alta carga en la base de datos.
- Aplicaciones críticas: OpenLDAP es el nodo central de autenticación para aplicaciones empresariales de importancia crítica, donde se requiere el máximo rendimiento y garantías de recursos.
- Requisitos de seguridad y aislamiento: Aislamiento completo de los "vecinos" y posibilidad de control total sobre el hardware.
- Integraciones complejas: Cuando OpenLDAP se utiliza como parte de una gran infraestructura con FreeIPA, Kerberos, Samba AD y otros servicios que requieren recursos significativos.
Para tales escenarios, puede ser necesario un servidor dedicado adecuado.
Ubicación: en qué influye
La elección de la ubicación del VPS tiene varios aspectos importantes:
- Latencia: Cuanto más cerca esté el servidor de los usuarios principales y los servicios integrados, menor será la latencia. Esto es crítico para la velocidad de autenticación y la experiencia general del usuario.
- Legislación: La ubicación del servidor puede afectar la legislación aplicable sobre almacenamiento de datos y privacidad (por ejemplo, GDPR en Europa).
- Disponibilidad: Algunas regiones pueden ser más estables o tener mejor conectividad con su público objetivo.
Normalmente se elige una ubicación geográficamente cercana a la mayoría de los consumidores del servicio LDAP para minimizar las latencias de red.
Preparación del servidor
Antes de instalar OpenLDAP, es necesario realizar la configuración básica y fortalecer la seguridad de su VPS. Utilizaremos Ubuntu 24.04 LTS como sistema operativo estable y actual para el año 2026.
1. Conexión por SSH y creación de usuario
Se asume que ya se ha conectado al servidor como usuario root. Primero, crearemos un nuevo usuario con privilegios limitados y configuraremos claves SSH para un acceso seguro.
# Creamos un nuevo usuario (reemplace 'youruser' por el nombre deseado)
adduser youruser
# Añadimos el usuario al grupo sudo para ejecutar comandos con privilegios elevados
usermod -aG sudo youruser
# Cambiamos al nuevo usuario
su - youruser
Ahora configuraremos las claves SSH. Si no las tiene, genérelas en su máquina local: ssh-keygen -t rsa -b 4096. Luego, copie la clave pública al servidor:
# En su máquina local
ssh-copy-id youruser@your_vps_ip
# Después de esto, puede desconectarse de root y conectarse como 'youruser'
exit # Salir de su - youruser
exit # Salir de root
ssh youruser@your_vps_ip
Después de una conexión SSH exitosa con clave, se recomienda deshabilitar la autenticación por contraseña para root y otros usuarios en el archivo /etc/ssh/sshd_config para aumentar la seguridad. Busque las líneas PermitRootLogin y PasswordAuthentication y modifíquelas:
# Abrimos el archivo de configuración del demonio SSH
sudo nano /etc/ssh/sshd_config
Cambie o añada las siguientes líneas:
# ...
PermitRootLogin no
# ...
PasswordAuthentication no
# ...
Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Luego, reinicie el demonio SSH:
# Reiniciamos el servicio SSH para aplicar los cambios
sudo systemctl restart sshd
2. Actualización del sistema e instalación de utilidades básicas
Siempre comience con la actualización de la base de paquetes y los paquetes instalados.
# Actualizamos la lista de paquetes
sudo apt update
# Actualizamos todos los paquetes instalados a las últimas versiones
sudo apt upgrade -y
# Instalamos utilidades útiles, si no están presentes
sudo apt install -y curl wget git nano htop unzip
3. Configuración del firewall (UFW)
Configuraremos un firewall básico para permitir solo las conexiones necesarias: SSH, HTTP, HTTPS y, por supuesto, LDAP.
# Habilitamos UFW (Uncomplicated Firewall)
sudo ufw enable
# Permitimos la conexión SSH (por defecto puerto 22)
sudo ufw allow ssh
# Permitimos HTTP y HTTPS (para el servidor web, si es necesario, y para Certbot)
sudo ufw allow http
sudo ufw allow https
# Permitimos los puertos estándar de OpenLDAP (389 para LDAP, 636 para LDAPS)
sudo ufw allow 389/tcp
sudo ufw allow 636/tcp
# Verificamos el estado del firewall
sudo ufw status verbose
Asegúrese de que SSH esté permitido antes de habilitar UFW, de lo contrario, podría perder el acceso al servidor.
4. Instalación de Fail2ban
Fail2ban protege el servidor de ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se realizan demasiados intentos de inicio de sesión fallidos.
# Instalamos Fail2ban
sudo apt install -y fail2ban
# Iniciamos y lo habilitamos para el arranque automático
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Verificamos el estado de Fail2ban
sudo systemctl status fail2ban
Fail2ban está configurado por defecto para proteger SSH. Puede configurarlo para proteger otros servicios, incluido OpenLDAP, creando o modificando archivos de configuración en /etc/fail2ban/jail.d/.
Instalación de software — paso a paso
Ahora que el servidor está preparado, procedamos con la instalación de OpenLDAP. Instalaremos el demonio del servidor slapd y las utilidades cliente ldap-utils.
1. Instalación del servidor y utilidades de OpenLDAP
En Ubuntu 24.04 LTS (actual para 2026), OpenLDAP está disponible en los repositorios. Instalaremos los paquetes slapd (servidor) y ldap-utils (utilidades cliente).
# Instalamos el demonio OpenLDAP (slapd) y las utilidades cliente
sudo apt install -y slapd ldap-utils
Durante la instalación, el sistema puede solicitar una contraseña para el administrador de la base de datos LDAP. Ingrese una contraseña segura y recuérdela. Esta contraseña se utilizará para la cuenta cn=admin,dc=example,dc=org (o su dominio).
# Reconfiguramos slapd, si es necesario cambiar la configuración después de la instalación
# Esto permitirá cambiar el dominio, la contraseña del administrador y otros parámetros
sudo dpkg-reconfigure slapd
Al reconfigurar slapd, se le harán las siguientes preguntas:
- Omitir configuración del servidor OpenLDAP? Seleccione "No".
- Nombre de dominio DNS: Ingrese su dominio, por ejemplo,
example.org. Esto se convertirá en la base de datosdc=example,dc=org. - Nombre de la organización: Ingrese el nombre de su organización, por ejemplo,
My Company. - Contraseña de administrador: Ingrese y confirme una contraseña segura para el administrador de LDAP.
- Backend de la base de datos: Seleccione
MDB(Modern Database) como el backend más eficiente y recomendado. - Eliminar base de datos antigua? Si es una instalación nueva, seleccione "Yes".
- Mover base de datos antigua? Seleccione "No".
- Permitir protocolo LDAPv2? Seleccione "No", ya que LDAPv2 está obsoleto y no es seguro.
2. Verificación del estado del servicio OpenLDAP
Después de la instalación y configuración básica, nos aseguraremos de que el demonio slapd esté en ejecución y funcionando correctamente.
# Verificamos el estado del servicio OpenLDAP
sudo systemctl status slapd
La salida debe mostrar que el servicio slapd.service está activo (active (running)).
3. Verificación de la configuración básica
Podemos usar ldapsearch para verificar la configuración básica y la disponibilidad del servidor LDAP.
# Realizamos una búsqueda anónima en el DSE raíz (Directory Service Agent Specific Entry)
ldapsearch -x -LLL -H ldap:/// -b "" -s base namingContexts
En la salida, debería ver la línea namingContexts: dc=example,dc=org (o su dominio), lo que confirma la configuración básica del directorio.
4. Obtención del hash de la contraseña del administrador
Para crear archivos LDIF con contraseñas, necesitaremos el hash de la contraseña del administrador. OpenLDAP utiliza el algoritmo SSHA (Salted SHA).
# Generamos el hash de la contraseña. Reemplace 'YourAdminPassword' con su contraseña real.
slappasswd -s YourAdminPassword
Copie el hash obtenido (por ejemplo, {SSHA}h64hjsd...). Lo necesitará para la configuración posterior.
5. Creación de un archivo para la cuenta administrativa
Crearemos un archivo LDIF para actualizar la contraseña del administrador. Esto puede ser útil si desea cambiar la contraseña o asegurarse de que esté configurada correctamente.
# Creamos un archivo LDIF para actualizar la contraseña del administrador
nano admin_password.ldif
Pegue el siguiente contenido, reemplazando dc=example,dc=org con su dominio y {SSHA}YOUR_PASSWORD_HASH con el hash obtenido en el paso anterior:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}YOUR_PASSWORD_HASH
Guarde el archivo y aplique los cambios:
# Aplicamos los cambios a la configuración de OpenLDAP
ldapmodify -Y EXTERNAL -H ldapi:/// -f admin_password.ldif
Si el comando se ejecuta sin errores, la contraseña del administrador se ha actualizado correctamente. Tenga en cuenta que usamos -Y EXTERNAL -H ldapi:/// para la autenticación a través de un socket local, lo que requiere privilegios de root o ser miembro del grupo openldap.
6. Adición de esquemas básicos
OpenLDAP utiliza esquemas para definir los tipos de objetos y atributos que se pueden almacenar en el directorio. Para trabajar con usuarios y grupos, necesitaremos los esquemas cosine, inetorgperson y nis.
# Agregamos el esquema cosine
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
# Agregamos el esquema inetorgperson
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
# Agregamos el esquema nis (para grupos y usuarios UNIX)
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Estos comandos cargan los esquemas estándar necesarios para la mayoría de los casos de uso de OpenLDAP. Es posible que ya estén cargados por defecto, pero agregarlos explícitamente no hará daño.
Configuración
Después de la instalación y la carga de los esquemas base, pasaremos a una configuración más detallada, incluyendo la creación de unidades organizativas (OU), usuarios, grupos y la configuración de TLS/SSL.
1. Creación de la estructura base del directorio
Crearemos un archivo LDIF para añadir unidades organizativas (OU) raíz para usuarios y grupos. Reemplace dc=example,dc=org con su dominio.
# Creamos un archivo LDIF para la estructura base
nano base_structure.ldif
Contenido de base_structure.ldif:
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: My Company
dc: example
dn: ou=people,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: groups
Aplicamos el archivo LDIF:
# Añadimos la estructura base del directorio
ldapadd -x -D "cn=admin,dc=example,dc=org" -w YourAdminPassword -f base_structure.ldif
Aquí -x significa autenticación simple, -D especifica el DN del administrador, -w es su contraseña. Reemplace YourAdminPassword con su contraseña real.
2. Adición de un usuario
Crearemos un archivo LDIF para añadir un nuevo usuario. Reemplace el dominio y los datos del usuario con los suyos.
# Creamos un archivo LDIF para el nuevo usuario
nano user_john_doe.ldif
Contenido de user_john_doe.ldif:
dn: uid=johndoe,ou=people,dc=example,dc=org
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
uid: johndoe
cn: John Doe
sn: Doe
givenName: John
mail: [email protected]
userPassword: {SSHA}YOUR_USER_PASSWORD_HASH # Genere con slappasswd -s YourUserPassword
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/johndoe
loginShell: /bin/bash
No olvide generar el hash para la contraseña del usuario con slappasswd -s YourUserPassword.
# Añadimos el usuario al directorio
ldapadd -x -D "cn=admin,dc=example,dc=org" -w YourAdminPassword -f user_john_doe.ldif
3. Adición de un grupo
Crearemos un archivo LDIF para añadir un nuevo grupo.
# Creamos un archivo LDIF para el nuevo grupo
nano group_devs.ldif
Contenido de group_devs.ldif:
dn: cn=developers,ou=groups,dc=example,dc=org
objectClass: top
objectClass: posixGroup
cn: developers
gidNumber: 10001
memberUid: johndoe # Añadimos el usuario johndoe al grupo
# Añadimos el grupo al directorio
ldapadd -x -D "cn=admin,dc=example,dc=org" -w YourAdminPassword -f group_devs.ldif
4. Configuración de TLS/HTTPS mediante Certbot
Es crucial proteger la conexión a OpenLDAP con TLS (LDAPS). Obtendremos certificados gratuitos de Let's Encrypt a través de Certbot.
Instalación de Certbot
# Instalamos Certbot
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Obtención del certificado
Para obtener un certificado, Certbot debe poder verificar la propiedad del dominio. La forma más sencilla es usar el plugin --standalone, que inicia temporalmente un servidor web, o --webroot, si ya tiene un servidor web (por ejemplo, Nginx o Apache) en el mismo VPS. Si no tiene un servidor web, usaremos --standalone. Asegúrese de que los puertos 80 y 443 estén libres en el momento de la solicitud.
# Obtenemos un certificado para su dominio (reemplace your.domain.com)
# Asegúrese de que el registro DNS para your.domain.com apunte a la IP de su VPS
sudo certbot certonly --standalone -d your.domain.com
Siga las instrucciones de Certbot (introduzca su correo electrónico, acepte los términos). Tras una obtención exitosa, los certificados se guardarán en /etc/letsencrypt/live/your.domain.com/.
Configuración de OpenLDAP para usar TLS
Para configurar TLS en OpenLDAP, debe crear un archivo LDIF que especifique la ruta a los certificados de Let's Encrypt.
# Creamos un archivo LDIF para la configuración de TLS
nano tls_config.ldif
Contenido de tls_config.ldif:
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/letsencrypt/live/your.domain.com/chain.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/letsencrypt/live/your.domain.com/fullchain.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/letsencrypt/live/your.domain.com/privkey.pem
Importante: Asegúrese de que las rutas a los archivos de certificado sean correctas y correspondan a su dominio. También debe asegurarse de que el usuario openldap tenga permisos de lectura para estos archivos. Por defecto, Certbot establece permisos estrictos. Crearemos enlaces simbólicos a los certificados en un directorio accesible para el usuario openldap.
# Creamos un directorio para las copias de los certificados
sudo mkdir -p /etc/ssl/ldap
sudo chown openldap:openldap /etc/ssl/ldap
sudo chmod 700 /etc/ssl/ldap
# Copiamos los certificados y la clave para que slapd pueda leerlos
sudo cp /etc/letsencrypt/live/your.domain.com/fullchain.pem /etc/ssl/ldap/ldap-fullchain.pem
sudo cp /etc/letsencrypt/live/your.domain.com/privkey.pem /etc/ssl/ldap/ldap-privkey.pem
sudo cp /etc/letsencrypt/live/your.domain.com/chain.pem /etc/ssl/ldap/ldap-chain.pem
# Establecemos los permisos de acceso correctos
sudo chown openldap:openldap /etc/ssl/ldap/ldap-fullchain.pem
sudo chown openldap:openldap /etc/ssl/ldap/ldap-privkey.pem
sudo chown openldap:openldap /etc/ssl/ldap/ldap-chain.pem
sudo chmod 640 /etc/ssl/ldap/ldap-fullchain.pem
sudo chmod 640 /etc/ssl/ldap/ldap-privkey.pem
sudo chmod 640 /etc/ssl/ldap/ldap-chain.pem
Ahora actualizaremos tls_config.ldif para que apunte a estas nuevas rutas:
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ldap/ldap-chain.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/ldap/ldap-fullchain.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/ldap/ldap-privkey.pem
Aplicamos la configuración TLS:
# Aplicamos la configuración TLS
ldapmodify -Y EXTERNAL -H ldapi:/// -f tls_config.ldif
Reinicie slapd para asegurarse de que las nuevas configuraciones de TLS se apliquen:
# Reiniciamos el servicio slapd
sudo systemctl restart slapd
Actualización automática de certificados: Certbot configurará automáticamente una tarea cron para la renovación de certificados. Sin embargo, deberá añadir un script que copie los certificados actualizados a /etc/ssl/ldap y reinicie slapd. Cree el archivo /etc/letsencrypt/renewal-hooks/deploy/slapd_cert_renew.sh:
#!/bin/bash
# Script para actualizar los certificados de OpenLDAP después de Certbot
DOMAIN=$1
if [ "$DOMAIN" = "your.domain.com" ]; then
echo "Deploying new certificates for $DOMAIN to OpenLDAP..."
sudo cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/ssl/ldap/ldap-fullchain.pem
sudo cp /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/ssl/ldap/ldap-privkey.pem
sudo cp /etc/letsencrypt/live/$DOMAIN/chain.pem /etc/ssl/ldap/ldap-chain.pem
sudo chown openldap:openldap /etc/ssl/ldap/ldap-fullchain.pem
sudo chown openldap:openldap /etc/ssl/ldap/ldap-privkey.pem
sudo chown openldap:openldap /etc/ssl/ldap/ldap-chain.pem
sudo chmod 640 /etc/ssl/ldap/ldap-fullchain.pem
sudo chmod 640 /etc/ssl/ldap/ldap-privkey.pem
sudo chmod 640 /etc/ssl/ldap/ldap-chain.pem
sudo systemctl restart slapd
echo "OpenLDAP certificates updated and slapd restarted."
fi
# Hacemos el script ejecutable
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/slapd_cert_renew.sh
Ahora Certbot invocará automáticamente este script después de una renovación exitosa de los certificados.
5. Verificación del funcionamiento de LDAPS
Verificaremos que LDAPS funciona correctamente, utilizando ldapsearch con la especificación del puerto seguro 636.
# Verificamos la conexión LDAPS
ldapsearch -x -LLL -H ldaps://your.domain.com -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w YourAdminPassword
Si todo está configurado correctamente, debería ver el contenido de su directorio LDAP. También intente autenticarse como un nuevo usuario:
# Verificamos la autenticación del usuario
ldapsearch -x -LLL -H ldaps://your.domain.com -b "dc=example,dc=org" -D "uid=johndoe,ou=people,dc=example,dc=org" -w YourUserPassword
Esto confirma que OpenLDAP funciona, la autenticación es exitosa y la conexión está protegida con TLS.
Copias de seguridad y mantenimiento
Las copias de seguridad son una parte críticamente importante de cualquier infraestructura de servidor. OpenLDAP no es una excepción. Las copias de seguridad regulares ayudarán a restaurar los datos en caso de fallo, corrupción o eliminación accidental.
Qué respaldar
- Base de datos OpenLDAP: Datos principales del directorio (usuarios, grupos, atributos).
- Archivos de configuración de OpenLDAP: Archivos de configuración de
slapd(almacenados en/etc/ldap/slapd.d/) y cualquier archivo LDIF personalizado que haya utilizado para la configuración. - Certificados SSL/TLS: Certificados y claves de Let's Encrypt, si los copió a otra ubicación (
/etc/letsencrypt/live/your.domain.com/y/etc/ssl/ldap/).
Script simple de copia de seguridad automática
Crearemos un script que exportará la base de datos LDAP a formato LDIF y archivará los archivos de configuración importantes. Para almacenar las copias de seguridad, puede usar rsync para copiarlas a un servidor remoto o a un almacenamiento compatible con S3.
# Creamos el directorio para las copias de seguridad
sudo mkdir -p /var/backups/ldap
sudo chown -R openldap:openldap /var/backups/ldap
# Creamos el script de copia de seguridad
sudo nano /usr/local/bin/backup_ldap.sh
Contenido de /usr/local/bin/backup_ldap.sh:
#!/bin/bash
# Directorio para las copias de seguridad
BACKUP_DIR="/var/backups/ldap"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
LDIF_FILE="$BACKUP_DIR/ldap_data_$TIMESTAMP.ldif"
CONFIG_ARCHIVE="$BACKUP_DIR/ldap_config_$TIMESTAMP.tar.gz"
DOMAIN_BASE="dc=example,dc=org" # Reemplace con su DN base
ADMIN_DN="cn=admin,$DOMAIN_BASE"
ADMIN_PASSWORD="YourAdminPassword" # Use variables de entorno o un archivo de contraseña en producción
echo "Iniciando copia de seguridad de OpenLDAP en $TIMESTAMP..."
# 1. Copia de seguridad de la base de datos OpenLDAP en un archivo LDIF
# Usamos slapcat para exportar toda la base
sudo -u openldap slapcat -b "$DOMAIN_BASE" -l "$LDIF_FILE"
if [ $? -eq 0 ]; then
echo "Base de datos LDAP exportada a $LDIF_FILE"
else
echo "¡Error al exportar la base de datos LDAP!"
exit 1
fi
# 2. Copia de seguridad de los archivos de configuración y certificados de OpenLDAP
tar -czf "$CONFIG_ARCHIVE" /etc/ldap/slapd.d /etc/letsencrypt/live/your.domain.com /etc/ssl/ldap
if [ $? -eq 0 ]; then
echo "Configuración y certificados LDAP archivados en $CONFIG_ARCHIVE"
else
echo "¡Error al archivar los archivos de configuración!"
exit 1
fi
# 3. Eliminación de copias de seguridad antiguas (por ejemplo, de más de 7 días)
find "$BACKUP_DIR" -type f -name "ldap_data_*.ldif" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "ldap_config_*.tar.gz" -mtime +7 -delete
echo "Copias de seguridad antiguas limpiadas."
echo "Copia de seguridad de OpenLDAP finalizada."
# Opcional: Envío de copias de seguridad a almacenamiento remoto
# rsync -avzh "$BACKUP_DIR" user@remote_host:/path/to/remote/backups/
# aws s3 sync "$BACKUP_DIR" s3://your-s3-bucket/ldap-backups/
# Hacemos el script ejecutable
sudo chmod +x /usr/local/bin/backup_ldap.sh
IMPORTANTE: Nunca almacene contraseñas en texto plano en scripts de producción. Utilice variables de entorno, HashiCorp Vault u otros métodos seguros de almacenamiento de secretos. Para esta guía, usamos una contraseña directa por simplicidad, pero en un entorno real esto es inaceptable.
Configuración de Cron para ejecución automática
Agregaremos el script a cron para que se ejecute diariamente.
# Abrimos crontab para el usuario root
sudo crontab -e
Agregue la siguiente línea para ejecutar la copia de seguridad todos los días a las 3:00 de la madrugada:
0 3 * * * /usr/local/bin/backup_ldap.sh > /dev/null 2>&1
Dónde almacenar las copias de seguridad
Las copias de seguridad locales son buenas, pero no protegen contra un fallo de todo el VPS. Es críticamente importante almacenar las copias de seguridad fuera del servidor:
- Almacenamiento de objetos externo compatible con S3: AWS S3, DigitalOcean Spaces, Backblaze B2. Es una forma fiable y económica de almacenar grandes volúmenes de datos.
- VPS separado: Puede alquilar un pequeño VPS específicamente para almacenar copias de seguridad y usar
rsyncoscppara transferirlas. - NAS/Almacenamiento en red: Para redes locales.
Integre el método elegido en su script de copia de seguridad.
Restauración desde una copia de seguridad
Para la restauración, necesitará:
- Una instalación limpia de OpenLDAP (o
slapddetenido en un servidor existente). - Eliminar la base de datos actual (
sudo rm -rf /var/lib/ldap/*) y la configuración (sudo rm -rf /etc/ldap/slapd.d/*). - Descomprimir el archivo de configuración (
ldap_config_*.tar.gz) en/etc/ldap/slapd.d/. - Copiar los certificados a su lugar.
- Iniciar
slapden modo de solo lectura o sin base de datos. - Importar el archivo LDIF de la base de datos (
ldap_data_*.ldif) usandoslapadd:sudo -u openldap slapadd -b "dc=example,dc=org" -l "$LDIF_FILE" - Reiniciar
slapd.
Actualizaciones: rolling vs maintenance window
Las actualizaciones de software, incluyendo OpenLDAP y el sistema operativo, son importantes para la seguridad y el rendimiento. Enfoques:
- Rolling updates (actualizaciones continuas): Aplicables en configuraciones de clúster con múltiples servidores, donde se puede actualizar un nodo a la vez sin tiempo de inactividad del servicio. No aplicable para un VPS único.
- Maintenance window (ventana de mantenimiento): El enfoque más adecuado para un VPS OpenLDAP único. Se elige un momento de menor carga (por ejemplo, de madrugada), y se advierte a los usuarios sobre un posible tiempo de inactividad breve.
# Detener el servicio sudo systemctl stop slapd # Actualizar el sistema sudo apt update && sudo apt upgrade -y # Iniciar el servicio sudo systemctl start slapd¡Antes de las actualizaciones importantes, siempre haga una copia de seguridad completa!
Solución de problemas y Preguntas Frecuentes
¿Cómo verificar el estado de OpenLDAP?
Para verificar el estado del demonio slapd, use el comando sudo systemctl status slapd. Mostrará si el servicio está en ejecución y las últimas líneas de los registros. Si el servicio no está activo, verifique los registros con el comando sudo journalctl -u slapd para obtener información más detallada sobre los errores.
No puedo conectarme al servidor LDAP. ¿Qué debo verificar?
Si no puede conectarse al servidor LDAP, verifique lo siguiente:
- Cortafuegos (UFW): Asegúrese de que los puertos 389 (LDAP) y 636 (LDAPS) estén abiertos. Use
sudo ufw status verbose. - Estado de
slapd: Asegúrese de que el servicioslapdesté en ejecución (sudo systemctl status slapd). - Configuración de
slapd: Verifique el archivo/etc/default/slapdo la configuración deslapd(olcArgsFileencn=config) para las vinculaciones correctas a las direcciones IP (opción-h). Por defecto,slapddebería escuchar en todas las interfaces. - Disponibilidad de red: Intente
telnet your_vps_ip 389otelnet your_vps_ip 636desde su máquina local. Si la conexión no se establece, el problema podría estar en la red o en el cortafuegos del VPS/proveedor.
¿Por qué no funciona la autenticación de usuario?
Si los usuarios no pueden iniciar sesión, verifique:
- DN del usuario: Asegúrese de que está utilizando el DN de usuario correcto (por ejemplo,
uid=johndoe,ou=people,dc=example,dc=org). - Contraseña: Verifique que la contraseña se haya ingresado correctamente. Es posible que haya utilizado un hash incorrecto al crear el usuario.
- ACLs (Listas de Control de Acceso): Verifique la configuración de ACLs en OpenLDAP. Es posible que el usuario no tenga permisos para leer sus datos o para autenticarse. Use
ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" olcAccesspara ver las ACLs. - Esquema: Asegúrese de que todos los esquemas necesarios (
inetorgperson,posixAccount, etc.) estén cargados y que los atributos del usuario coincidan con ellos.
¿Cómo restablecer la contraseña del administrador de OpenLDAP?
Si olvidó la contraseña del administrador de OpenLDAP, puede restablecerla:
- Genere un nuevo hash de contraseña:
slappasswd -s NewAdminPassword. - Cree un archivo LDIF, como hicimos en la sección "Instalación de software", con el nuevo hash:
dn: olcDatabase={1}mdb,cn=config changetype: modify replace: olcRootPW olcRootPW: {SSHA}NEW_PASSWORD_HASH - Aplíquelo:
ldapmodify -Y EXTERNAL -H ldapi:/// -f admin_new_password.ldif.
¿Qué configuración mínima de VPS es adecuada?
Para una instalación y uso básico de OpenLDAP con un número reducido de usuarios (hasta 50-100), un VPS con 1 vCPU, 1 GB de RAM y 20-40 GB de SSD será suficiente. Esto es adecuado para ejecutar el servicio y manejar una carga baja. Sin embargo, si se planea la integración con muchos servicios o se espera un crecimiento en el número de usuarios, se recomienda 2 vCPU, 2-4 GB de RAM y 80 GB de SSD para un funcionamiento estable.
¿Qué elegir: VPS o dedicado para esta tarea?
La elección entre un VPS y un servidor dedicado depende de la escala, los requisitos de rendimiento, seguridad y presupuesto:
- VPS: Ideal para la mayoría de proyectos pequeños y medianos (hasta varios miles de usuarios), startups, entornos de prueba, proyectos personales. Es económico, flexible y fácil de escalar en recursos.
- Servidor dedicado: Necesario para organizaciones muy grandes con decenas de miles de usuarios, sistemas críticos que requieren el máximo rendimiento, aislamiento completo y estricto cumplimiento de las normas de seguridad. Los servidores dedicados son más caros, pero proporcionan acceso exclusivo a todos los recursos de hardware.
Para empezar, un VPS es una excelente opción, y a medida que crezcan las necesidades, siempre se puede migrar a un dedicado.
¿Cómo añadir un nuevo usuario o grupo después de la configuración?
Para añadir nuevos usuarios o grupos, siga el mismo procedimiento que en la sección "Configuración". Cree un nuevo archivo LDIF con los datos del usuario o grupo, genere el hash de la contraseña (si es un usuario) y use el comando ldapadd -x -D "cn=admin,dc=example,dc=org" -w YourAdminPassword -f new_user.ldif para añadirlo al directorio.
¿Cómo configurar el registro de OpenLDAP?
Por defecto, OpenLDAP registra mensajes a través de rsyslog en los registros del sistema. Puede configurar el nivel de detalle del registro modificando el parámetro olcLogLevel en la configuración cn=config. Por ejemplo, para un registro más detallado:
# Creamos un archivo LDIF para cambiar el nivel de registro
nano loglevel.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats requests args
# Aplicamos el cambio
ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif
# Reiniciamos slapd para que los cambios surtan efecto
sudo systemctl restart slapd
Esto permitirá rastrear solicitudes, argumentos y estadísticas, lo cual es útil para la depuración.
Conclusiones y próximos pasos
Ha instalado y configurado con éxito un servidor OpenLDAP en su VPS, creando un sistema centralizado para la gestión de usuarios y grupos. Ahora tiene una base segura y escalable para la autenticación y autorización, lo que simplificará significativamente la administración de su infraestructura. Ha aprendido a trabajar con comandos LDAP básicos, configurar esquemas, crear entradas y asegurar la conexión con TLS.
Ahora que OpenLDAP está listo para funcionar, puede avanzar, integrándolo con otros servicios y ampliando su funcionalidad:
- Integración con aplicaciones: Configure la autenticación a través de LDAP en sus aplicaciones web (Nextcloud, GitLab, Jenkins, Grafana), servidores VPN (OpenVPN, WireGuard), servidores de correo u otros servicios que admitan la autenticación LDAP.
- ACLs avanzadas: Estudie y configure reglas de control de acceso (ACLs) más complejas para diferentes unidades organizativas, con el fin de delimitar con precisión los derechos de acceso de usuarios y administradores a diferentes partes del directorio.
- Replicación y alta disponibilidad: Para sistemas críticos, considere configurar la replicación de OpenLDAP en varios VPS. Esto garantizará una alta disponibilidad y tolerancia a fallos, evitando un único punto de fallo.
- Integración con FreeIPA/Samba AD: Si necesita un sistema de gestión de identidades más completo con Kerberos, DNS, CA y soporte para dominios de Windows, considere la integración con FreeIPA o Samba Active Directory, que utilizan OpenLDAP como componente base.