Diferencia entre revisiones de «LDAP»

De jagfloriano.com
Ir a la navegaciónIr a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 3: Línea 3:
== ¿Qué es LDAP? ==
== ¿Qué es LDAP? ==


LDAP (Lightweight Directory Access Protocol) es un **protocolo ligero de acceso a directorios**.
'''LDAP (Lightweight Directory Access Protocol)''' es un protocolo ligero de acceso a directorios.
 


Características principales:
Características principales:
* LDAP fue creado por la Universidad de Michigan en 1992 como una alternativa ligera a DAP.
* LDAP fue creado por la Universidad de Michigan en 1992 como una alternativa ligera a DAP.
* Está basado en el estándar **X.500**.
* Está basado en el estándar '''X.500'''.
* El RFC 2251 fue publicado en 1997 (actualmente actualizado por otros RFC).
* El '''RFC 2251''' fue publicado en 1997 (actualmente actualizado por otros RFC).
* LDAP, por sí mismo, **no define un servicio de directorio**.
* LDAP, por sí mismo, '''no define un servicio de directorio'''.
* Define el **transporte y el formato de los mensajes** utilizados para que un cliente acceda a los datos almacenados en un directorio.
* Define el '''transporte y el formato de los mensajes''' utilizados para que un cliente acceda a los datos almacenados en un directorio.
 


== Fundamentos de LDAP ==
== Fundamentos de LDAP ==


* LDAP es un **servicio global de directorios** capaz de almacenar distintos tipos de información.
* LDAP es un '''servicio global de directorios''' capaz de almacenar distintos tipos de información.
* Puede considerarse como una **base de datos de objetos**, organizados por clases.
* Puede considerarse como una '''base de datos de objetos''', organizados por clases.
* A diferencia de una base de datos relacional tradicional, LDAP está optimizado para:
* A diferencia de una base de datos relacional tradicional, LDAP está optimizado para:
  ** Operaciones de '''lectura'''
** Operaciones de lectura.
  ** '''Búsquedas'''
** Búsquedas.
  ** '''Navegación'''
** Navegación.
* No está pensado para un alto volumen de escrituras.
* No está pensado para un alto volumen de escrituras.
* OpenLDAP es una **implementación libre y abierta** del protocolo LDAP.
* OpenLDAP es una '''implementación libre y abierta'''del protocolo LDAP.




Línea 43: Línea 45:
* **DN (Distinguished Name)**: nombre completo y único que identifica una entrada en el directorio.
* **DN (Distinguished Name)**: nombre completo y único que identifica una entrada en el directorio.
* **RDN (Relative Distinguished Name)**: parte del DN que identifica la entrada de forma relativa dentro de su rama.
* **RDN (Relative Distinguished Name)**: parte del DN que identifica la entrada de forma relativa dentro de su rama.


== Utilidades OpenLDAP ==
== Utilidades OpenLDAP ==
Línea 48: Línea 51:
=== Utilidades de línea de comandos ===
=== Utilidades de línea de comandos ===


* **ldapadd**: añade objetos al directorio LDAP.
* '''ldapadd''': añade objetos al directorio LDAP.
* **ldapmodify**: modifica objetos existentes.
* '''ldapmodify''': modifica objetos existentes.
* **ldapdelete**: elimina objetos del directorio.
* '''ldapdelete''': elimina objetos del directorio.
* **ldapsearch**: consulta y busca objetos en LDAP.
* '''ldapsearch''': consulta y busca objetos en LDAP.
* **ldappasswd**: establece o modifica la contraseña de un usuario LDAP.
* '''ldappasswd''': establece o modifica la contraseña de un usuario LDAP.
* **slapadd**: importa entradas desde un archivo LDIF directamente en la base de datos.
* '''slapadd''': importa entradas desde un archivo LDIF directamente en la base de datos.
* **slapcat**: exporta el contenido del directorio LDAP a formato LDIF.
* '''slapcat''': exporta el contenido del directorio LDAP a formato LDIF.
* **slapindex**: reconstruye los índices del directorio LDAP.
* '''slapindex''': reconstruye los índices del directorio LDAP.
* **slappasswd**: genera contraseñas cifradas para LDAP.
* '''slappasswd''': genera contraseñas cifradas para LDAP.


=== Utilidades de entorno gráfico ===
=== Utilidades de entorno gráfico ===


* **Apache Directory Studio**
* '''Apache Directory Studio'''


Herramienta gráfica para:
Herramienta gráfica para:
Línea 66: Línea 69:
* Edición de entradas
* Edición de entradas
* Gestión de esquemas
* Gestión de esquemas
* Administración general de OpenLDAP
* Administración general de '''OpenLDAP'''.


https://directory.apache.org/studio/


=== Documentación OpenLDAP ===
=== Documentación OpenLDAP ===
Línea 79: Línea 83:
   http://www.zytrax.com/books/ldap/ape/
   http://www.zytrax.com/books/ldap/ape/


== Nota sobre OpenLDAP en RHEL 9 ==


= Instalación de OpenLDAP =
En RHEL 9, Red Hat no distribuye el servidor OpenLDAP (slapd) como paquete soportado.
 
Únicamente se proporcionan las librerías y utilidades cliente.
En RHEL 9, OpenLDAP se instala desde los repositorios oficiales y utiliza configuración dinámica basada en *cn=config*.
 
== Requisitos previos ==
* IP estática
* Nombre de host correctamente configurado
* Resolución DNS o entrada en /etc/hosts
* Sincronización horaria (recomendado)
 
Ejemplo de validación:
 
192.168.1.81 node1.jagfloriano.com node1
 
== Preparación del sistema ==
* Configuración de red
 
<syntaxhighlight lang="bash">
[root@nodo1 ~]# ip route
default via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.81 metric 100
 
[root@nodo1 ~]#  ip a show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:f3:3c:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.81/24 brd 192.168.1.255 scope global noprefixroute enp0s3
      valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fef3:3c51/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
</syntaxhighlight>
 
* Verificación del hostname
 
<syntaxhighlight lang="bash">
[root@nodo1 ~]# hostname
nodo1
 
[root@nodo1 ~]# hostname -f
nodo1.jagfloriano.com
 
[root@nodo1 ~]# hostnamectl
Static hostname: nodo1
      Icon name: computer-vm
        Chassis: vm 🖴
      Machine ID: 20ff935e15e14490a6e182f1a7979010
        Boot ID: daaaf7f2b9104421820d256e95a711c3
  Virtualization: oracle
Operating System: Red Hat Enterprise Linux 9.6 (Plow)
    CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos
          Kernel: Linux 5.14.0-570.12.1.el9_6.x86_64
    Architecture: x86-64
Hardware Vendor: innotek GmbH
  Hardware Model: VirtualBox
Firmware Version: VirtualBox
</syntaxhighlight>
 
* Comprobación de resolución de nombres
 
<syntaxhighlight lang="bash">
[root@nodo1 ~]# grep 192.168.1.81 /etc/hosts
192.168.1.81 node1.jagfloriano.com node1
 
[root@nodo1 ~]# getent hosts nodo1
fe80::a00:27ff:fef3:3c51 nodo1
 
[root@nodo1 ~]# ping -c 1 nodo1.jagfloriano.com
PING nodo1.jagfloriano.com (192.168.1.81) 56(84) bytes of data.
64 bytes from nodo1.jagfloriano.com (192.168.1.81): icmp_seq=1 ttl=64 time=0.011 ms
 
--- nodo1.jagfloriano.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.011/0.011/0.011/0.000 ms
</syntaxhighlight>
 
* Puertos utilizados (389 / 636)
<syntaxhighlight lang="bash">
[root@nodo1 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources:
  services: cockpit dhcpv6-client high-availability ssh
  ports:
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
</syntaxhighlight>
 
Los puertos que se utilizarán posteriormente son:
* 389/TCP (LDAP)
* 636/TCP (LDAPS, opcional)
 
== Instalación de paquetes ==
 
Instalar los paquetes necesarios:
 
<syntaxhighlight lang="bash">
dnf install -y openldap openldap-servers openldap-clients
</syntaxhighlight>
 
* '''openldap''': librerías base
* '''openldap-servers''': servicio slapd
* '''openldap-clients''': utilidades ldapadd, ldapsearch, etc
 
* Instalación del servicio LDAP
* Verificación de la instalación
 
== Configuración inicial del servidor LDAP ==
* Ejecución del asistente de configuración
* Dominio del directorio
* Organización
* Backend de base de datos
* Usuario administrador
* Versiones de LDAP permitidas
 
== Estructura inicial del directorio (DIT) ==
* Base DN
* Unidades organizativas iniciales
** usuarios
** grupos
** sistemas (opcional)
 
== Arranque y verificación del servicio ==
* Comprobación del proceso slapd
* Puertos en escucha
* Prueba de conexión local con ldapsearch
 
== Configuración de OpenLDAP ==
* Esquemas LDAP
* Gestión mediante archivos LDIF
* Creación de objetos
** Unidades organizativas
** Grupos
** Usuarios
* Gestión de contraseñas
 
== Configuración de clientes LDAP ==
* Métodos de integración
** libnss-ldap (legacy)
** SSSD (recomendado)
* Configuración de NSS
* Configuración de PAM
* Creación automática de directorios home
 
== Verificación y pruebas ==
* Consultas LDAP básicas
* Resolución de usuarios y grupos
* Login con usuarios LDAP


== Logs y troubleshooting ==
Para entornos productivos, Red Hat recomienda el uso de IdM / FreeIPA como servicio de directorio.
* Logs del servicio LDAP
* Errores comunes
* Problemas de autenticación


== Buenas prácticas ==
OpenLDAP puede utilizarse en RHEL 9 únicamente como cliente LDAP para autenticación y consultas.
* Uso de TLS
* Uso de contraseñas cifradas
* Principio de mínimos privilegios
* Copias de seguridad del directorio

Revisión del 08:10 3 feb 2026

LDAP

¿Qué es LDAP?

LDAP (Lightweight Directory Access Protocol) es un protocolo ligero de acceso a directorios.


Características principales:

  • LDAP fue creado por la Universidad de Michigan en 1992 como una alternativa ligera a DAP.
  • Está basado en el estándar X.500.
  • El RFC 2251 fue publicado en 1997 (actualmente actualizado por otros RFC).
  • LDAP, por sí mismo, no define un servicio de directorio.
  • Define el transporte y el formato de los mensajes utilizados para que un cliente acceda a los datos almacenados en un directorio.


Fundamentos de LDAP

  • LDAP es un servicio global de directorios capaz de almacenar distintos tipos de información.
  • Puede considerarse como una base de datos de objetos, organizados por clases.
  • A diferencia de una base de datos relacional tradicional, LDAP está optimizado para:
    • Operaciones de lectura.
    • Búsquedas.
    • Navegación.
  • No está pensado para un alto volumen de escrituras.
  • OpenLDAP es una implementación libre y abiertadel protocolo LDAP.


El directorio LDAP

  • Al igual que DNS, las entradas de un directorio LDAP están organizadas en una **estructura jerárquica en forma de árbol**.
  • Cuanto mayor es la profundidad del árbol, mayor suele ser la precisión y especificidad de la información almacenada.
  • Esta estructura se denomina formalmente **Directory Information Tree (DIT)** (Árbol de Información del Directorio).
  • La parte superior de esta estructura se conoce como el **elemento raíz** del directorio.


Terminología LDAP

  • **Entrada u objeto**: unidad mínima de información almacenada en el directorio LDAP.
  • **Atributos**: piezas de información asociadas a un objeto (por ejemplo, correo electrónico).
  • **objectClass**: define el tipo de objeto y determina qué atributos puede o debe contener.
  • Esquema: conjunto de definiciones que describen:
 ** Sintaxisde atributos
 ** Definiciones de objectClass
  • **LDIF**: LDAP Data Interchange Format, formato de intercambio de datos LDAP.
  • **DN (Distinguished Name)**: nombre completo y único que identifica una entrada en el directorio.
  • **RDN (Relative Distinguished Name)**: parte del DN que identifica la entrada de forma relativa dentro de su rama.


Utilidades OpenLDAP

Utilidades de línea de comandos

  • ldapadd: añade objetos al directorio LDAP.
  • ldapmodify: modifica objetos existentes.
  • ldapdelete: elimina objetos del directorio.
  • ldapsearch: consulta y busca objetos en LDAP.
  • ldappasswd: establece o modifica la contraseña de un usuario LDAP.
  • slapadd: importa entradas desde un archivo LDIF directamente en la base de datos.
  • slapcat: exporta el contenido del directorio LDAP a formato LDIF.
  • slapindex: reconstruye los índices del directorio LDAP.
  • slappasswd: genera contraseñas cifradas para LDAP.

Utilidades de entorno gráfico

  • Apache Directory Studio

Herramienta gráfica para:

  • Navegación por el directorio
  • Edición de entradas
  • Gestión de esquemas
  • Administración general de OpenLDAP.

https://directory.apache.org/studio/

Documentación OpenLDAP

  • Documentación oficial:
 http://www.openldap.org/doc
  • Páginas del manual:
 * `apropos slapd`
 * `apropos ldap`
  • Guía avanzada LDAP (Zytrax):
 http://www.zytrax.com/books/ldap/ape/

Nota sobre OpenLDAP en RHEL 9

En RHEL 9, Red Hat no distribuye el servidor OpenLDAP (slapd) como paquete soportado. Únicamente se proporcionan las librerías y utilidades cliente.

Para entornos productivos, Red Hat recomienda el uso de IdM / FreeIPA como servicio de directorio.

OpenLDAP puede utilizarse en RHEL 9 únicamente como cliente LDAP para autenticación y consultas.