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 17: | Línea 17: | ||
* 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 | ** Operaciones de '''lectura''' | ||
* * | ** '''Búsquedas''' | ||
* * | ** '''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 37: | Línea 37: | ||
* **Atributos**: piezas de información asociadas a un objeto (por ejemplo, correo electrónico). | * **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. | * **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 | ** Definiciones de objectClass | ||
* **LDIF**: LDAP Data Interchange Format, formato de intercambio de datos LDAP. | * **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. | * **DN (Distinguished Name)**: nombre completo y único que identifica una entrada en el directorio. | ||
| Línea 178: | Línea 178: | ||
== Instalación de paquetes == | == 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 | * Instalación del servicio LDAP | ||
* Verificación de la instalación | * Verificación de la instalación | ||
Revisión del 08:02 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 abierta** del 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
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/
Instalación de OpenLDAP
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
[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
- Verificación del hostname
[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
- Comprobación de resolución de nombres
[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
- Puertos utilizados (389 / 636)
[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:
Los puertos que se utilizarán posteriormente son:
- 389/TCP (LDAP)
- 636/TCP (LDAPS, opcional)
Instalación de paquetes
Instalar los paquetes necesarios:
dnf install -y openldap openldap-servers openldap-clients
- 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
- Logs del servicio LDAP
- Errores comunes
- Problemas de autenticación
Buenas prácticas
- Uso de TLS
- Uso de contraseñas cifradas
- Principio de mínimos privilegios
- Copias de seguridad del directorio