Tutoriales

LDAP: Qué es y para qué se utiliza este protocolo

El protocolo LDAP es muy utilizado actualmente por empresa que apuestan por el software libre al utilizar distribuciones de Linux para ejercer las funciones propias de un directorio activo en el que se gestionarán las credenciales y permisos de los trabajadores y estaciones de trabajo en redes LAN corporativas en conexiones cliente/servidor.

LDAP

En este artículo veremos de la forma más completa posible en qué consiste este protocolo y correspondiente herramienta junto con la estructura y términos más utilizados en él.

¿Qué es LDAP?

LDAP son las siglas de Protocolo Ligero de Acceso a Directorio, o en inglés Lightweight Directory Access Protocol). Se trata de un conjunto de protocolos de licencia abierta que son utilizados para acceder a la información que está almacenada de forma centralizada en una red. Este protocolo se utiliza a nivel de aplicación para acceder a los servicios de directorio remoto.

Un directorio remoto es un conjunto de objetos que están organizados de forma jerárquica, tales como nombre claves direcciones, etc. Estos objetos estarán disponibles por una serie de cliente conectados mediante una red, normalmente interna o LAN, y proporcionarán las identidades y permisos para esos usuarios que los utilicen.

LDAP está basado en el protocolo X.500 para compartir directorios, y contiene esta información de forma jerarquizada y mediante categorías para proporcionarnos una estructura intuitiva desde el punto de vista de la gestión por parte de los administradores. Es, por así decirlo, una guía telefónica, pero con más atributos y credenciales. En este caso utilizamos el término directorio para referirnos a la organización de estos objetos.

De forma general, estos directorios se utilizan básicamente para contener información virtual de usuarios, para que otros usuarios accedan y dispongan de información acerca de los contactos que están aquí almacenados. Pero es mucho más que esto, ya que es capaz de comunicarse de forma remota con otros directorios LDAP situados en servidores que pueden estar en el otro lado del mundo para acceder a la información disponible. De esta forma se crea una base de datos de información descentralizada y completamente accesible.

La versión actual se denomina LDAPv3 y se encuentra definida en una hoja de documentación RFC 4511 accesible de forma pública.

Funcionamiento de LDAP

LDAP

LDAP es un protocolo basado en la conexión entre cliente y servidor. En el servidor LDAP se almacenarán los datos relativos al directorio, el cual podrá usar una amplia variedad de bases de datos para este almacenamiento, llegando a ser de grandes dimensiones.

El funcionamiento de acceso y administración es muy similar a Active Directory de Windows. Cuando el cliente LDAP se conecta con el servidor, podrá realizar dos acciones básicas, bien consultar y obtener información del directorio, o modificarla.

  • Si un cliente consulta la información el servidor LDAP puede conectarla directamente si tienen un directorio alojado en él, o bien redirigir la solicitud hasta otro servidor que efectivamente tenga esta información. Este podrá ser local, o remoto.
  • Si un cliente quiere modificar la información del directorio, el servidor comprobará si el usuario que está accediendo a este directorio tiene permisos de administrador o no. Entonces, la información y gestión de un directorio LDAP se podrá hacer de forma remota.

El puerto de conexión para el protocolo LDAP es el TCP 389, aunque por supuesto, se podrá modificar por el usuario y establecerlo en el que desee si así se lo indica al servidor.

Cómo se almacena la información en LDAP

En un directorio LDAP podremos almacenar básicamente la misma información que en un Directorio Activo de Windows. El sistema está basado en la siguiente estructura:

  • Entradas, llamadas objetos en Active Directory. Estas entradas son colecciones de atributos con un Nombre Distinguido (DN) Este nombre se utiliza para dar un identificador único e irrepetible a una entrada del directorio. Una entrada puede ser el nombre de una organización y de ella colgarán unos atributos. También una persona puede ser una entrada.
  • Atributos: los cuales poseen un tipo identificador y los correspondientes valores. Los tipos se utilizan para identificar los nombres de atributos, por ejemplo “mail”, “name”, “jpegPhoto”, etc. Algunos de los atributos que pertenecen a una entrada debe ser obligatorios y otros opcionales.
  • LDIF: el Formato de Intercambio de Datos de LDAP es la representación en texto ASCII de las entradas LDAP. Este debe ser el formato de los archivos que se utilicen para importar información a un directorio LDAP. Cuando se escriba una línea en blanco, significará el final de una entrada.
[<id>]
dn: <distinguished name>
<attrtype>: <attrvalue>
<attrtype>: <attrvalue>
<attrtype>: <attrvalue>

Árboles: Es la organización jerarquizada de entradas. Por ejemplo, en una estructura de árbol podremos encontrar un país en la parte superior y como principal, y dentro de éste tendremos los distintos estados que conforma el país. Dentro de cada estado podremos enumerar los distritos, ciudadanos y direcciones de donde viven, y así sucesivamente.

Si aplicáramos esto a Internet y la informática, podríamos organizar un directorio LDAP mediante un nombre de dominio que haría las funciones de árbol y de él colgarían los distintos departamentos o unidades organizativas de una empresa, empleados etc. Y es precisamente de esta forma como actualmente se forma los directorios, gracias al uso de un servicio DNS, podremos asociar una dirección IP con un directorio LDAP para poder acceder a él mediante el nombre de dominio

Cómo se accede a la información en LDAP

LDAP

Un ejemplo de entrada de un directorio de LDAP puede ser:

dn: cn=Jose Castillo,dc=profesionalreview,dc=com
cn: Jose Castillo
givenName: Jose
sn: Castillo
telephoneNumber: +34 666 666 666
mail: [email protected]
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
  • dn (domain name): nombre de entrada, pero no forma parte de la propia entrada.
  • dc: componente de dominio para identificar las partes del dominio donde se almacena el directorio LDAP.
  • cn (common name): nombre de atributo para identificar el nombre de usuario, por ejemplo
  • sn (surname): apellido del usuario
  • telephoneNumbre, mail…: identificar de nombre para el atributo teléfono y correo electrónico.
  • objectClass: distintas entradas para definir las propiedades de los atributos

Un servidor LDAP, además de almacenar un árbol, puede contener subárboles que incluyen entradas específicas del dominio principal. Además, puede almacenar referencias a otros servidores de directorio para dividir el contenido si es necesario.

Estructura de una URL de acceso en LDAP

Al efectuar conexiones remotas a un servidor LDAP, necesitaremos del uso de direcciones URL para obtener información de éste. La estructura básica

ldap://servidor:puerto/DN?atributos?ambito?filtros?extensiones
  • servidor o host: es la dirección IP o nombre de dominio del servidor LDAP
  • puerto: el puerto de conexión del servidor, por defecto será el 389
  • DN: nombre distinguido para usar en la búsqueda
  • Atributos: es una lista de campos a devolver separados por comas
  • Ámbito o scope: es el ámbito de la búsqueda
  • Filtros: para filtra la búsqueda según el identificador del objeto, por ejemplo.
  • Extensiones: serán las cadenas de caracteres extensiones de la URL en LDAP.

Por ejemplo:

ldap://ldap.profesionalreview.com/cn=Jose%20Castillo,dc=profesionalreview,cd=com

Estamos buscando todos los usuarios que haya en la entrada de Jose Castillo en profesionalreview.com.

Además de esta notación, también tendremos una versión de LADP con certificado de seguridad SSL, cuyo identificador para la URL será “ldaps:”.

Herramientas más importantes que utilizan el protocolo LDAP

En la actualidad existen diversas herramientas que utilizan este protocolo para la comunicación cliente servidor de un servicio de directorio. Lo más relevante es que incluso Active Directory de Windows utiliza este protocolo de comunicación.

  • OpenLDAP: es la implementación libre del protocolo LDAP. Tiene su propia licencia y es compatible con otros servidores que utilicen el mismo protocolo. Es utilizado por distintas distribuciones Linux y BSD.
  • Active Directory: es un almacén de datos de directorio con licencia Microsoft e implementado en sus sistemas operativos server desde Windows 2000. Realmente bajo la estructura de Active Directory se encuentra un esquema LDAPv3, por lo que también es compatible con otros sistemas que implemente este protocolo en sus directorios.
  • Red Hat Directory Server: es un servidor que también se basa en LDAP similar a Active Directory, pero mediante una herramienta de código abierto. Dentro de este directorio podremos almacenar objetos como usuarios claves, grupos, políticas de permisos, etc.
  • Apache Directory Server: otra de las grandes implementaciones que utilizan LDAP es el directorio con licencia de Apache Software. Además, implementa otros protocolos como Kerberos y NTP y cuenta con una interfaz de vistas propias de las bases de datos relacionales.
  • Novell Directory Services: este es el servidor de directorio propio de Novell para gestionar el acceso a un almacén de recursos en uno o varios servidores conectados en red. Se compone de una estructura de base de datos jerárquica orientada a objetos en la que se almacenan todos los objetivos típicos de los directorios.
  • Open DS: terminamos esta lista con el directorio basado en java de SUN Microsystems, que posteriormente se liberaría para todos los usuarios. Por supuesto, está desarrollado en JAVA el necesitaremos el paquete Java Runtime Environmet para que éste funcione.

Estas son las características más interesantes e información más relevante sobre el protocolo LDAP. Por supuesto trataremos de ir ampliando información con tutoriales que vayamos sacando sobre este tema.

Mientras tanto, te puede interesar éste información:

Esperamos que esta información haya sido de utilidad. Para añadir algo o decirnos que piensas sobre LDAP escríbenos en los comentarios.

José Antonio Castillo

Graduado en Ingeniería en Tecnologías Industriales. Amante de la informática, el gaming y casi cualquier deporte de motor.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba