Skip to main content

OpenLDAP en GNU/Linux

Introducción

OpenLDAP es una implementación de código abierto del protocolo LDAP. Es ampliamente utilizado en entornos Linux/UNIX para proporcionar servicios de directorio centralizados.
OpenLDAP es especialmente útil para redes heterogéneas y entornos que requieren flexibilidad y personalización.

Requisitos Previos

Sistema

  • Xubuntu o Ubuntu Server
  • Mínimo 1GB RAM
  • 10GB espacio en disco
  • Conexión a Internet

Configuración de Red

IP estática recomendada (ejemplo):
# En /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    enp0s3:
      addresses: [10.0.2.43/24]
      gateway4: 10.0.2.1
      nameservers:
        addresses: [127.0.0.1, 1.1.1.1]

Instalación de slapd

Instalación Inicial

1

Actualizar repositorios

sudo apt update
2

Instalar slapd

sudo apt install slapd
Durante la instalación:
  • Se solicitará contraseña del administrador LDAP
  • Usar: admin1s0
3

Verificar instalación

sudo systemctl status slapd
slapd = Stand-Alone LDAP Daemon (servidor OpenLDAP)

Reconfiguración de slapd

La configuración inicial es básica. Necesitamos reconfigurarla para nuestras necesidades.
1

Ejecutar reconfiguración

sudo dpkg-reconfigure slapd
2

Omitir configuración

¿Omitir la configuración del servidor OpenLDAP? No
3

Nombre de dominio DNS

Introducir: valencia.iso.comEsto creará el DN base: dc=valencia,dc=iso,dc=com
4

Nombre de la organización

Introducir: iso
5

Contraseña de administrador

Confirmar o cambiar: admin1s0
6

Motor de base de datos

Seleccionar: HDB (o MDB en versiones recientes)
7

Eliminar base de datos

¿Eliminar la base de datos al purgar slapd? No(Permite recuperación ante desastres)
8

Mover base de datos antigua

¿Mover base de datos antigua?

Verificar Configuración

# Ver configuración
sudo slapcat

# O buscar en configuración
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn

Instalación de phpLDAPadmin

Herramienta web para administrar LDAP gráficamente.

Instalación

1

Buscar paquete

apt search ldapadmin
2

Instalar phpldapadmin

sudo apt install phpldapadmin
Instalará automáticamente:
  • Apache2 (servidor web)
  • PHP y módulos necesarios
  • Dependencias
3

Verificar instalación

Abrir navegador: http://localhost/phpldapadmin/

Configurar phpLDAPadmin

Editar archivo de configuración:
sudo mousepad /etc/phpldapadmin/config.php
Buscar y modificar:
// Línea ~300
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=valencia,dc=iso,dc=com'));
Reiniciar Apache:
sudo systemctl restart apache2

Acceder a phpLDAPadmin

1

Abrir navegador

http://localhost/phpldapadmin/
2

Iniciar sesión

  • DN: cn=admin,dc=valencia,dc=iso,dc=com
  • Contraseña: admin1s0

Crear Estructura LDAP

Estructura Objetivo

dc=valencia,dc=iso,dc=com
    ou=esbirros
        cn=esbirrosldap (grupo POSIX)
            uid=esbirroldap01 (usuario)
            uid=esbirroldap02 (usuario)

Crear Unidad Organizativa (OU)

1

En phpLDAPadmin

  • Click en dc=valencia,dc=iso,dc=com
  • Click en “Crear una entrada hija aquí”
2

Seleccionar plantilla

Plantilla: Unidad Organizativa Genérica
3

Configurar OU

  • ou: esbirros
  • Confirmar creación

Crear Grupo POSIX

1

Crear entrada hija

  • Click en ou=esbirros
  • “Crear una entrada hija aquí”
2

Seleccionar plantilla

Plantilla: Grupo POSIX Genérico
3

Configurar grupo

  • cn: esbirrosldap
  • gidNumber: 10000
  • Confirmar

Crear Usuario

1

Crear entrada hija

  • Click en cn=esbirrosldap
  • “Crear una entrada hija aquí”
2

Seleccionar plantilla

Plantilla: Cuenta de Usuario Genérica
3

Configurar usuario

  • cn: esbirroldap01
  • givenName: Esbirro
  • sn: LDAP Uno
  • uid: esbirroldap01
  • uidNumber: 10001
  • gidNumber: 10000
  • homeDirectory: /home/esbirroldap01
  • loginShell: /bin/bash
  • userPassword: Establecer contraseña (ejemplo: esbirro123)
4

Confirmar

Confirmar creación
uidNumber y gidNumber son los equivalentes a los IDs numéricos de usuario y grupo en sistemas UNIX/Linux.

Herramientas de Línea de Comandos

Instalación de ldap-utils

sudo apt install ldap-utils
Proporciona herramientas como:
  • ldapsearch - Buscar entradas
  • ldapadd - Añadir entradas
  • ldapmodify - Modificar entradas
  • ldapdelete - Eliminar entradas

ldapsearch - Buscar Entradas

# Buscar todo en el directorio
ldapsearch -x -h localhost -p 389 -b "dc=valencia,dc=iso,dc=com"

Parámetros de ldapsearch

ParámetroDescripción
-xAutenticación simple (sin SASL)
-hHost del servidor LDAP
-pPuerto (389 por defecto)
-bBase de búsqueda (DN base)
-DDN para autenticarse
-WSolicitar contraseña interactivamente
-wContraseña en línea de comandos (inseguro)

ldapadd - Añadir Entradas

Crear archivo LDIF:
# nuevo_usuario.ldif
dn: uid=esbirroldap02,cn=esbirrosldap,ou=esbirros,dc=valencia,dc=iso,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: esbirroldap02
givenName: Esbirro
sn: LDAP Dos
uid: esbirroldap02
uidNumber: 10002
gidNumber: 10000
homeDirectory: /home/esbirroldap02
loginShell: /bin/bash
userPassword: esbirro456
Añadir al directorio:
ldapadd -x -D "cn=admin,dc=valencia,dc=iso,dc=com" \
  -W -f nuevo_usuario.ldif

ldapmodify - Modificar Entradas

Crear archivo LDIF con cambios:
# modificar_usuario.ldif
dn: uid=esbirroldap01,cn=esbirrosldap,ou=esbirros,dc=valencia,dc=iso,dc=com
changetype: modify
replace: loginShell
loginShell: /bin/zsh
-
add: mail
mail: [email protected]
Aplicar cambios:
ldapmodify -x -D "cn=admin,dc=valencia,dc=iso,dc=com" \
  -W -f modificar_usuario.ldif

ldapdelete - Eliminar Entradas

# Eliminar usuario
ldapdelete -x -D "cn=admin,dc=valencia,dc=iso,dc=com" -W \
  "uid=esbirroldap02,cn=esbirrosldap,ou=esbirros,dc=valencia,dc=iso,dc=com"
Precaución: ldapdelete no pide confirmación. La eliminación es inmediata.

Integración con Sistema Linux

Configurar NSS y PAM

Para que el sistema Linux use LDAP para autenticación:
1

Instalar paquetes

sudo apt install libnss-ldap libpam-ldap ldap-utils
2

Configurar durante instalación

  • URI: ldap://localhost/
  • DN base: dc=valencia,dc=iso,dc=com
  • Versión LDAP: 3
  • Admin: cn=admin,dc=valencia,dc=iso,dc=com
  • Contraseña: admin1s0
3

Configurar NSS

Editar /etc/nsswitch.conf:
passwd: files ldap
group:  files ldap
shadow: files ldap
4

Configurar PAM

sudo pam-auth-update
Activar:
  • ☑ LDAP Authentication
  • ☑ Create home directory on login
5

Reiniciar servicios

sudo systemctl restart nscd

Verificar Integración

# Ver usuarios LDAP
getent passwd | grep ldap

# Ver grupos LDAP  
getent group | grep ldap

# Probar autenticación
su - esbirroldap01

Copias de Seguridad de LDAP

Exportar Base de Datos

# Exportar toda la base de datos
sudo slapcat -v -l backup_ldap.ldif

Importar/Restaurar

1

Detener slapd

sudo systemctl stop slapd
2

Importar datos

sudo slapadd -v -l backup_ldap.ldif
3

Corregir permisos

sudo chown -R openldap:openldap /var/lib/ldap
4

Iniciar slapd

sudo systemctl start slapd

Seguridad

Configurar TLS/SSL

Para cifrar comunicaciones LDAP:
1

Generar certificados

sudo apt install gnutls-bin ssl-cert
sudo sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
2

Configurar slapd para TLS

Editar configuración (requiere conocimientos avanzados)
La configuración completa de TLS/SSL se verá en el módulo de ASO.

ACLs (Listas de Control de Acceso)

Controlar quién puede leer/escribir qué:
# Ejemplo de ACL
olcAccess: to attrs=userPassword
  by self write
  by anonymous auth
  by * none

Monitorización

Ver Logs

# Ver logs de slapd
sudo journalctl -u slapd -f

# O en syslog
sudo tail -f /var/log/syslog | grep slapd

Estadísticas

# Ver estadísticas del servidor
ldapsearch -x -b "cn=Monitor" -s base

Recursos Adicionales

Teoría LDAP

Conceptos teóricos sobre LDAP

Tareas Prácticas

Ejercicios de configuración de OpenLDAP

Importante: OpenLDAP requiere conocimientos sólidos de Linux. La configuración avanzada (replicación, alta disponibilidad) se verá en ASO.

Build docs developers (and LLMs) love