Servicios de directorio: conceptos, X.500, LDAP, eDirectory, Directorio Activo, RADIUS y herramientas de gestión
Un servicio de directorio es la pieza de infraestructura que permite buscar y gestionar de forma centralizada información sobre los recursos de una red —personas, equipos, impresoras, grupos, aplicaciones— mediante un modelo jerárquico de entradas. Este tema recorre el estándar internacional que lo define (X.500), el protocolo ligero que lo hizo universal en Internet (LDAP), dos implementaciones de referencia (eDirectory y Directorio Activo), el protocolo de autenticación de acceso a red asociado (RADIUS) y las herramientas con las que se administran.
1. Concepto de servicio de directorio
El estándar ITU-T X.500 define el Directorio como una colección de sistemas abiertos que cooperan para mantener una base de datos lógica de información sobre un conjunto de objetos del mundo real. Esa base de datos lógica es la DIB (Directory Information Base, Base de Información de Directorio): el conjunto de información que mantiene el Directorio.
A diferencia de una base de datos relacional de propósito general, el DIB no se organiza en tablas sino en un árbol, la DIT (Directory Information Tree, Árbol de Información de Directorio): sus entradas se disponen en forma de árbol, donde los vértices representan las entradas. Las entradas más cercanas a la raíz suelen representar países u organizaciones, y las más bajas, personas o procesos de aplicación.
Entrada, atributo y objectClass. Cada entrada reúne la información sobre un objeto y está compuesta de atributos, cada uno con un tipo y uno o más valores asociados. Qué atributos puede o debe tener una entrada lo determina su clase de objeto (object class): una familia identificada de objetos que comparten ciertas características. El RFC 4512 distingue tres tipos de clase de objeto:
| Tipo de objectClass | Función |
|---|---|
Abstracta (ej. top) | Base de la jerarquía de herencia; no se instancia directamente. |
| Estructural | Fija la posición de la entrada en el DIT; cada entrada tiene exactamente una. |
| Auxiliar | Amplía los atributos permitidos de una entrada ya existente, sin cambiar su clase estructural. |
El conjunto de reglas que garantiza que el DIB permanece «bien formado» ante las modificaciones —qué atributos admite cada clase, qué clases puede contener cada entrada— es el esquema (schema): esas reglas impiden, por ejemplo, que una entrada tenga atributos que no correspondan a su clase de objeto.
Nombrado: RDN y DN. Cada entrada se nombra en relación con su entrada superior mediante su RDN (Relative Distinguished Name, Nombre Distintivo Relativo), compuesto por una o varias parejas atributo-valor (ej. UID=12345, o el RDN múltiple CN=Kurt Zeilenga+L=Redwood Shores). El nombre completo de la entrada, su DN (Distinguished Name, Nombre Distintivo), es la concatenación de su RDN con el DN de su entrada superior (ej. CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US) y la identifica sin ambigüedad en todo el árbol.
2. El estándar X.500
X.500 es la recomendación de la ITU-T (coeditada como norma ISO/IEC 9594) que define el modelo del Directorio: «Tecnología de la información — Interconexión de Sistemas Abiertos — El Directorio: Visión general de conceptos, modelos y servicios». Nació en 1988 y se ha revisado varias veces; la 9.ª edición es de octubre de 2019.
Componentes del modelo funcional. El usuario accede al Directorio a través de un DUA (Directory User Agent, Agente de Usuario del Directorio) —o de un cliente LDAP—, que es un proceso de aplicación. Quien atiende esas peticiones es un DSA (Directory System Agent, Agente del Sistema de Directorio): un proceso de aplicación que forma parte del Directorio y cuyo papel es dar acceso al DIB a los DUA, a los clientes LDAP o a otros DSA. Un conjunto de DSA y/o servidores LDAP gestionados por una misma organización forma un DMD (Directory Management Domain, Dominio de Gestión de Directorio).
Los cuatro protocolos del Directorio (X.500, cláusula 13):
| Sigla | Nombre | Función |
|---|---|---|
| DAP | Directory Access Protocol | Intercambio de peticiones y resultados entre un DUA y un DSA. |
| DSP | Directory System Protocol | Intercambio de peticiones y resultados entre dos DSA. |
| DISP | Directory Information Shadowing Protocol | Intercambio de información de réplica entre dos DSA con acuerdo de sombreado (shadowing). |
| DOP | Directory Operational Binding Management Protocol | Intercambio de información administrativa entre DSA para gestionar vínculos operacionales. |
Servicios de interrogación y modificación. El servicio abstracto del Directorio (detallado en X.511) ofrece, para interrogar: Read (lectura de atributos de una entrada), Compare (comprueba si un valor coincide con el de un atributo, útil para verificar contraseñas sin exponerlas: la contraseña puede quedar inaccesible para lectura pero accesible para comparación), List (subordinados inmediatos de una entrada) y Search (búsqueda por filtro en un subárbol); y para modificar: Add entry, Remove entry, Modify entry y Modify DN. El propio X.500 señala que los clientes LDAP no soportan las operaciones Read ni List como tales: las emulan con Search.
3. El protocolo LDAP
LDAP (Lightweight Directory Access Protocol, Protocolo Ligero de Acceso a Directorios) es el protocolo de Internet, normalizado por el IETF, para acceder a servicios de directorio distribuidos que siguen los modelos de datos y de servicio de X.500. La versión 3 (LDAPv3) se especifica en una familia de RFC que el propio RFC 4510 —el «mapa de ruta técnico»— enumera: RFC 4511 (el protocolo), 4512 (modelos de información), 4513 (autenticación y seguridad), 4514 (representación de nombres distintivos), 4515 (filtros de búsqueda), 4516 (URL), 4517 (sintaxis y reglas de comparación), 4518 (preparación de cadenas internacionalizadas) y 4519 (esquema para aplicaciones de usuario).
Operaciones (RFC 4511). El cliente primero se autentica con Bind, que permite intercambiar información de autenticación entre cliente y servidor (versión de protocolo 3, sin negociación). A partir de ahí puede ejecutar:
| Operación | Función |
|---|---|
| Search | Devuelve las entradas que cumplen un filtro, con alcance baseObject (la propia entrada), singleLevel (subordinados inmediatos) o wholeSubtree (todo el subárbol). |
| Add | Añade una entrada hoja nueva al DIT. |
| Delete | Elimina una entrada hoja; solo se pueden eliminar entradas sin subordinadas. |
| Modify | Modifica los atributos de una entrada mediante cambios add, delete o replace. |
| Modify DN | Cambia el RDN de una entrada o la traslada a otro superior. |
| Compare | Compara un valor dado con el de un atributo de una entrada (compareTrue/compareFalse). |
| Abandon / Unbind | Cancela una operación en curso o cierra la sesión. |
| Extended | Mecanismo de extensión del protocolo (lo usa, por ejemplo, StartTLS). |
Puerto y cifrado. El registro de puertos de la IANA asigna el puerto 389/tcp y 389/udp a ldap y el 636/tcp y 636/udp a ldaps («ldap protocol over TLS/SSL (was sldap)»). El RFC 4511 recomienda que el servidor escuche en el puerto IANA 389. La vía normalizada para cifrar una sesión LDAP es la operación StartTLS (RFC 4513), que establece una capa TLS sobre una conexión LDAP ya iniciada; el puerto 636 (LDAPS, LDAP ya envuelto en TLS/SSL desde el inicio de la conexión) es, según el propio registro de la IANA, una convención extendida en la práctica, no la operación que define el RFC 4513.
LDIF (RFC 2849, LDAP Data Interchange Format): un formato de fichero para describir información de directorio o modificaciones sobre ella, usado para importar y exportar entradas. Un fichero LDIF típico:
Filtros de búsqueda (RFC 4515) tienen una representación de cadena legible, por ejemplo (cn=Babs Jensen) o la combinación (&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*))).
URL LDAP (RFC 4516) describe una búsqueda LDAP completa en una sola cadena, con la gramática ldap://[host[:port]][/dn[?attributes[?scope[?filter]]]]; por ejemplo ldap://ldap1.example.net:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen) (servidor, puerto, base de búsqueda, alcance sub y filtro).
Esquema para aplicaciones de usuario (RFC 4519) define clases y atributos de uso habitual: la clase estructural organizationalUnit, base de una entrada que representa una parte de una organización (con ou obligatorio), y la clase person, base de una entrada que representa a un ser humano (con sn y cn obligatorios).
4. eDirectory de Novell
eDirectory es el servicio de directorio creado por Novell; tras el paso de Novell por NetIQ (Micro Focus), hoy se distribuye y documenta como OpenText™ eDirectory, en su versión «CE 24.4 (v9.3)», descrito por su fabricante actual como la base de los mayores despliegues de gestión de identidades, con cumplimiento del estándar LDAP versión 3 (LDAP v3). Es decir: el producto que el epígrafe llama «eDirectory de Novell» como marca independiente está descatalogado desde hace años bajo ese nombre, pero su línea de producto sigue viva y accesible por LDAPv3 bajo la marca de su fabricante actual.
Estructura en árbol. eDirectory organiza los objetos en una estructura de árbol que comienza con el objeto Tree de nivel superior, que lleva el nombre del árbol. Bajo el objeto Tree se sitúa normalmente un objeto Organization (con el nombre de la empresa) y, bajo este, objetos Organizational Unit para departamentos o regiones, además de las clases Country, Locality y Domain.
Particiones y réplicas. Una partición es una división lógica de la base de datos de eDirectory, una unidad de datos distinta en el árbol que permite repartir el directorio entre varios servidores. Una réplica es una copia o instancia de una partición definida por el usuario, distribuida a un servidor de eDirectory. Los tipos de réplica son:
| Tipo de réplica | Papel |
|---|---|
| Maestra (Master) | Réplica editable que inicia los cambios sobre la partición. |
| Lectura/escritura (Read/Write) | Editable, pero no inicia operaciones administrativas de partición. |
| Solo lectura (Read-Only) | No admite escrituras directas. |
| Filtrada de lectura/escritura y de solo lectura | Como las anteriores, pero con un subconjunto filtrado de atributos/clases. |
| Referencia subordinada | Puntero automático a una partición hija cuya réplica no se mantiene localmente. |
Herramientas de gestión propias. eDirectory se administra sobre todo con NetIQ iManager, una consola web que permite gestionar el directorio, los usuarios, los derechos de acceso y los recursos de red desde un navegador, y con el eDirectory Management Toolbox (eMBox), que da acceso remoto a utilidades de mantenimiento como DSRepair, DSMerge, copia de seguridad/restauración y el Service Manager (arranque y parada de servicios de eDirectory).
5. Directorio Activo
Active Directory Domain Services (AD DS), el Directorio Activo de Microsoft, es una estructura jerárquica que almacena información sobre los objetos de una red y proporciona los métodos para guardar esos datos y ponerlos a disposición de usuarios y administradores.
Dominio, árbol y bosque. Un dominio es la unidad administrativa básica. Un árbol de dominios (domain tree) está formado por varios dominios que comparten un esquema y una configuración comunes, formando un espacio de nombres contiguo; los dominios de un árbol están además vinculados por relaciones de confianza. Esas confianzas se basan en Kerberos y son transitivas y jerárquicas: si el dominio A confía en el dominio B, y el dominio B confía en el dominio C, entonces el dominio A confía en el dominio C. Un bosque (forest) es un conjunto de uno o más árboles de dominio que no forman un espacio de nombres contiguo; todos los árboles de un bosque comparten un esquema, una configuración y un catálogo global comunes.
Unidades organizativas (OU) y controladores de dominio. Las reglas del esquema determinan qué clases de objeto puede contener cada clase; por defecto, un objeto User admite como posibles contenedores superiores las clases Organizational-Unit y Container: así, una Unidad Organizativa puede contener usuarios, equipos y otras OU, formando la jerarquía interna de un dominio. Cada controlador de dominio (DC) almacena una o varias particiones de directorio (también llamadas naming contexts): la partición de esquema (clases y atributos del bosque), la de configuración (topología de replicación) y la de dominio (objetos del dominio local). Todos los controladores de dominio de un mismo dominio participan en la replicación y contienen una copia completa de toda la información de directorio de ese dominio.
Catálogo global. El catálogo global (global catalog) es un controlador de dominio que mantiene un subconjunto replicado de atributos de todos los objetos del bosque, para permitir búsquedas entre dominios sin tener que consultar cada uno. Se construye automáticamente mediante el sistema de replicación de AD DS; las propiedades replicadas incluyen un conjunto base definido por Microsoft, y los administradores pueden añadir propiedades adicionales.
Roles FSMO. Como AD DS admite replicación multimaster —cualquier controlador de dominio puede aceptar cambios de directorio y replicarlos a los demás—, ciertas operaciones que no admiten bien ese modelo se reservan a un único controlador por dominio o bosque: son los roles FSMO (Flexible Single Master Operations):
| Rol FSMO | Ámbito | Función |
|---|---|---|
| Maestro de esquema (Schema Master) | Bosque (único) | Gobierna todos los cambios al contexto de nombres de esquema. |
| Maestro de nomenclatura de dominios (Domain Naming Master) | Bosque | Añade y elimina particiones de dominio y de aplicación del bosque; garantiza la unicidad de los nombres de dominio. |
| Emulador de PDC (PDC Emulator) | Por dominio | Replicación preferente de cambios de contraseña; procesa bloqueos de cuenta; fuente horaria autorizada del bosque. |
| Maestro de RID (RID Master) | Por dominio | Asigna a cada controlador de dominio un lote de identificadores relativos (RID) para construir SID únicos. |
| Maestro de infraestructura (Infrastructure Master) | Por dominio | Actualiza las referencias entre objetos de distintos dominios (por GUID, SID o DN) cuando cambian. |
Kerberos, LDAP y DNS como base. AD DS usa Kerberos para la autenticación mutua entre cliente y servicio mediante nombres principales de servicio (SPN): un proceso cliente debe probar su identidad a un servicio, y el servicio debe probar la suya al cliente, antes de intercambiar tráfico de aplicación. El acceso y las consultas al directorio se hacen por LDAP, y la localización de los controladores de dominio se resuelve por DNS: los servidores de Active Directory publican sus direcciones mediante registros de recursos de servicio (SRV RR) en el DNS; como ofrecen el servicio LDAP sobre TCP, el nombre publicado sigue el patrón «ldap.tcp.<dominio>», y se mantiene al día mediante DNS dinámico.
Directivas de grupo (GPO). Las Group Policy Objects son el mecanismo de configuración centralizada de AD DS: el servicio de Directiva de grupo determina qué GPO son aplicables consultando AD según el sitio, el dominio y la pertenencia a una OU; las GPO se almacenan tanto en AD como en la carpeta SYSVOL de cada controlador de dominio, y cada GPO tiene un identificador único (GUID).
6. RADIUS
RADIUS (Remote Authentication Dial In User Service) es el protocolo, definido en RFC 2865 (autenticación y autorización) y RFC 2866 (contabilidad), para transportar información de autenticación, autorización y configuración entre un cliente de red y un servidor compartido —de ahí que se le englobe en el modelo AAA (Authentication, Authorization, Accounting)—.
NAS y secreto compartido. El dispositivo que media entre el usuario y la red —un punto de acceso Wi-Fi, un switch 802.1X, un servidor VPN— actúa como NAS (Network Access Server) y es, a todos los efectos, el cliente RADIUS. Cliente y servidor se autentican entre sí mediante un secreto compartido que nunca viaja por la red.
Puertos. El puerto oficialmente asignado para RADIUS es 1812/UDP (autenticación) y 1813/UDP para RADIUS Accounting; ambos RFC recuerdan que los despliegues antiguos usaban 1645 y 1646, en conflicto con otros servicios ya registrados.
Tipos de paquete. El RFC 2865 fija los códigos de paquete:
| Código | Paquete |
|---|---|
| 1 | Access-Request |
| 2 | Access-Accept |
| 3 | Access-Reject |
| 4 | Accounting-Request |
| 5 | Accounting-Response |
| 11 | Access-Challenge |
El flujo típico: el NAS envía un Access-Request con el nombre de usuario, la contraseña (cifrada con un método basado en el algoritmo MD5) y la identificación del NAS y del puerto; el servidor responde Access-Accept, Access-Reject o, si necesita más datos del usuario (por ejemplo un segundo factor), Access-Challenge, que puede incluir un mensaje de texto para mostrar al usuario.
7. Herramientas de gestión
Directorio Activo (Microsoft). La consola clásica de administración diaria es Active Directory Users and Computers, citada por la propia documentación de Microsoft junto a Active Directory Sites and Services, Active Directory Domains and Trusts y Active Directory Schema como los snap-in de MMC estándar de AD DS. Para atributos que esos snap-in no exponen existe ADSI Edit (adsiedit.msc): un editor LDAP que gestiona objetos y atributos de AD DS y da una vista de cada objeto y atributo de un bosque de Active Directory. Para operaciones LDAP de bajo nivel (conectar, enlazar, buscar, modificar, añadir, eliminar) contra cualquier directorio compatible con LDAP está Ldp.exe. La consola moderna de gestión avanzada es el Active Directory Administrative Center (ejecutable dsac.exe), con papelera de reciclaje de AD y directivas de contraseña granular. Y para automatizar tareas existe el módulo de PowerShell Active Directory, que agrupa un conjunto de cmdlets para gestionar dominios de AD DS, con cmdlets como Get-ADUser, New-ADUser, Set-ADUser, Get-ADGroup, Get-ADOrganizationalUnit o Get-ADDomainController, distribuido con las RSAT (Remote Server Administration Tools).
eDirectory (NetIQ/OpenText). Su consola de gestión es NetIQ iManager, ya descrita en el apartado 4, complementada por el eDirectory Management Toolbox (eMBox) para tareas de mantenimiento remoto (DSRepair, DSMerge, copias de seguridad, Service Manager).
LDAP genérico (OpenLDAP). El proyecto OpenLDAP distribuye las herramientas de línea de comandos de referencia para hablar LDAP desde cualquier sistema: ldapsearch, interfaz de shell para abrir una conexión a un servidor LDAP, autenticarse (bind) y realizar una búsqueda con los parámetros indicados; ldapmodify y ldapadd (ldapadd se implementa como un enlace físico a la herramienta ldapmodify), para modificar o añadir entradas, normalmente a partir de un fichero LDIF; y el propio demonio de servidor slapd, el demonio LDAP independiente que escucha conexiones en cualquier número de puertos (por defecto el 389). Para quien prefiere una interfaz gráfica multiplataforma existe Apache Directory Studio, una plataforma completa de herramientas de directorio pensada para usarse con cualquier servidor LDAP —aunque especialmente diseñada para ApacheDS—, construida como una aplicación Eclipse RCP.
RADIUS. Para probar un servidor RADIUS sin desplegar un NAS real, el proyecto FreeRADIUS ofrece radclient: un programa cliente que envía paquetes RADIUS arbitrarios a un servidor y muestra la respuesta, útil tanto para probar cambios de configuración como para monitorizar si un servidor RADIUS está activo.
Fuentes: ITU-T, Recomendación X.500 (10/2019) — Information technology – Open Systems Interconnection – The Directory: Overview of concepts, models and services, ISO/IEC 9594-1 (https://www.itu.int/rec/T-REC-X.500); IETF, RFC 4510 — LDAP: Technical Specification Road Map (https://www.rfc-editor.org/rfc/rfc4510); IETF, RFC 4511 — LDAP: The Protocol (https://www.rfc-editor.org/rfc/rfc4511); IETF, RFC 4512 — LDAP: Directory Information Models (https://www.rfc-editor.org/rfc/rfc4512); IETF, RFC 4513 — LDAP: Authentication Methods and Security Mechanisms (https://www.rfc-editor.org/rfc/rfc4513); IETF, RFC 4514 — LDAP: String Representation of Distinguished Names (https://www.rfc-editor.org/rfc/rfc4514); IETF, RFC 4515 — LDAP: String Representation of Search Filters (https://www.rfc-editor.org/rfc/rfc4515); IETF, RFC 4516 — LDAP: Uniform Resource Locator (https://www.rfc-editor.org/rfc/rfc4516); IETF, RFC 4519 — LDAP: Schema for User Applications (https://www.rfc-editor.org/rfc/rfc4519); IETF, RFC 2849 — The LDAP Data Interchange Format (LDIF) (https://www.rfc-editor.org/rfc/rfc2849); IETF, RFC 2865 — Remote Authentication Dial In User Service (RADIUS) (https://www.rfc-editor.org/rfc/rfc2865); IETF, RFC 2866 — RADIUS Accounting (https://www.rfc-editor.org/rfc/rfc2866); IANA, Service Name and Transport Protocol Port Number Registry, entradas ldap/ldaps (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml); Microsoft Learn, «Active Directory Domain Services Overview», «Domain Trees», «Forests», «Naming Contexts and Directory Partitions», «Global Catalog», «Containers and Leaves», «Object Names and Identities», «Mutual Authentication Using Kerberos», «Active Directory Servers and Dynamic DNS», «Flexible Single Master Operations roles», «Planning Operations Master Role Placement», «Group Policy overview», «Active Directory module» de PowerShell, «Advanced AD DS Management Using Active Directory Administrative Center», «ADSI Edit» y «Ldp» (learn.microsoft.com); OpenText/NetIQ, «OpenText eDirectory CE 24.4 (v9.3)» y NetIQ eDirectory Administration Guide, apartados «Partitions», «Replicas», «Ease of Management through NetIQ iManager», «eDirectory Service Manager» y «The eDirectory Management Toolbox» (netiq.com/documentation); OpenLDAP Project, páginas de manual ldapsearch(1), ldapmodify(1)/ldapadd(1) y slapd(8) (openldap.org/software/man.cgi); The Apache Software Foundation, «Apache Directory Studio» (directory.apache.org/studio); FreeRADIUS Wiki, «Radclient» (wiki.freeradius.org). Consultadas el 11/10/2026.