LDAP: Introducción

¡Hola Amigos!. Comenzamos una nueva serie de artículos que esperamos sean de utilidad. Hemos decidido escribirlos para aquellos que gustan conocer con qué trabajan, y hacer sus propias implementaciones sin depender de software propietario total, o de los que son mitad libres y mitad comerciales.

Lectura obligada es el OpenLDAP Software 2.4 Administrator’s Guide. Sí, en inglés, porque estamos utilizando un software pensado y escrito en la lengua de Shakespeare. 🙂 También recomendamos fuertemente la lectura del Ubuntu ServerGuide 12.04., la cual damos para su descarga.

La documentación existente está en inglés. No he encontrado traducciones al español de ninguna de las dos antes recomendadas.

Todo lo escrito en ésta introducción está tomado de Wikipedia o traducido libremente al español de los documentos mencionados anteriormente.

Veremos:

Definición resumida

De Wikipedia:

LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también se considera una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

Un directorio es un conjunto de objetos con atributos organizados en una manera lógica y jerárquica. El ejemplo más común es el directorio telefónico, que consiste en una serie de nombres (personas u organizaciones) que están ordenados alfabéticamente, con cada nombre teniendo una dirección y un número de teléfono adjuntos. Para entender mejor, es un libro o carpeta, en la cual se escriben nombres de personas, teléfonos y direcciones, y se ordena alfabéticamente.

Un árbol de directorio LDAP a veces refleja varios límites políticos, geográficos u organizacionales, dependiendo del modelo elegido. Los despliegues actuales de LDAP tienden a usar nombres de Sistema de Nombres de Dominio (DNS por sus siglas en inglés) para estructurar los niveles más altos de la jerarquía. Conforme se desciende en el directorio pueden aparecer entradas que representan personas, unidades organizacionales, impresoras, documentos, grupos de personas o cualquier cosa que representa una entrada dada en el árbol (o múltiples entradas).

Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc). A manera de síntesis, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red.

La versión actual es LDAPv3, y se encuentra definido en los RFCs RFC 2251 y RFC 2256 (documento base de LDAP), RFC 2829 (método de autentificación para LDAP), RFC 2830 (extensión para TLS), y RFC 3377 (especificación técnica).

Algunas implementaciones LDAP:

Active Directory: es el nombre utilizado por Microsoft (desde Windows 2000) como almacén centralizado de información de uno de sus dominios de administración. Un Servicio de Directorio es un depósito estructurado de la información de los diversos objetos que contiene el Active Directory, en este caso podrían ser impresoras, usuarios, equipos… Utiliza distintos protocolos (principalmente, LDAP, DNS, DHCP, Kerberos…).

Bajo este nombre se encuentra realmente un esquema (definición de los campos que pueden ser consultados) LDAP versión 3, lo cual permite integrar otros sistemas que soporten el protocolo. En este LDAP se almacena información de usuarios, recursos de la red, políticas de seguridad, configuración, asignación de permisos, etc.

Novell Directory Services: También conocido como eDirectory es la implementación de Novell utilizada para manejar el acceso a recursos en diferentes servidores y computadoras de una red. Básicamente está compuesto por una base de datos jerárquica y orientada a objetos, que representa cada servidor, computadora, impresora, servicio, personas, etc. entre los cuales se crean permisos para el control de acceso, por medio de herencia. La ventaja de esta implementación es que corre en diversas plataformas, por lo que puede adaptarse fácilmente a entornos que utilicen más de un sistema operativo.

Es el precursor en materia de estructuras de Directorio, ya que fue introducido en 1990 con la versión de Novell Netware 4.0. Aunque AD de Microsoft alcanzó mayor popularidad, todavía no puede igualar la fiabilidad y calidad de eDirectory y su capacidad Multiplataforma.

OpenLDAP: Se trata de una implementación libre del protocolo que soporta múltiples esquemas por lo que puede utilizarse para conectarse a cualquier otro LDAP. Tiene su propia licencia, la OpenLDAP Public License. Al ser un protocolo independiente de la plataforma, varias distribuciones GNU/Linux y BSD lo incluyen, al igual que AIX, HP-UX, Mac OS X, Solaris, Windows (2000/XP) y z/OS.

OpenLDAP tiene cuatro componentes principales:

  • slapd – demonio LDAP autónomo.
  • slurpd – demonio de replicación de actualizaciones LDAP autónomo.
  • Rutinas de biblioteca de soporte del protocolo LDAP
  • Utilidades, herramientas y clientes.

Características principales de LDAP desde la perspectiva del usuario

¿Que tipo de información podemos almacenar en un Directorio?. El modelo de la información en un directorio LDAP se basa en entradas. Una entrada es una colección de atributos que posee un único Nombre Distinguido o “Distinguished Name (DN)”. El DN se utiliza para referirse a la entrada de manera unívoca.

Cada atributo de una entrada tiene un tipo y uno o más valores. Los tipos son típicamente cadenas nemotécnicas como cn o “Common Name” para los nombres comunes, o mail para las direcciones de correo electrónico. La sintaxis de los valores depende del tipo de atributo.

Por ejemplo, un atributo cn puede contener el valor de Frodo Bagins. Un atributo mail puede tener el valor frodobagins@amigos.cu. Un atributo jpgePhoto puede contener una foto en el formato binario JPEG.

¿Cómo está organizada la información?. En LDAP, las entradas del directorio se organizan en una estructura jerárquica en forma de árbol invertido. Tradicionalmente, ésta estructura refleja las fronteras o límites geográficos y/o organizativos.

Las entradas que representan a los países aparecen en la parte superior del árbol. Debajo de ellas estarán las entradas que representan a estados y organizaciones nacionales.

Después podrán existir entradas que representen unidades organizativas, personas, impresoras, documentos, o cualquier otra cosa que seamos capaces de pensar.

La figura a continuación es un ejemplo del árbol de un directorio LDAP en el que se utilizan los nombres tradicionales.

LDAP permite el control de cuáles atributos necesitamos para una entrada mediante el uso de un atributo especial denominado objectClass. El valor del atributo objectClass determina las Reglas del Esquema o Schema Rules que la entrada debe obedecer.

¿Cómo hacemos referencia la información?. Hacemos referencia a una entrada mediante su Nombre Distinguido o Distinguished Name, el cual se construye a partir del nombre de la entrada en si misma (denominada Nombre Relativo Distinguido o Relative Distinguished Name o RDN), concatenada con el nombre de las entradas de sus ancestros o antecesores.

Por ejemplo, en la figura anterior la entrada Frodo Bagins tiene un RDN cn=Frodo Bagins y su DN completo es cn=Frodo Bagins,ou=Anillos,o=Amigos,st=Habana,c=cu.

¿Como accedemos a la información?. LDAP tiene definidas las operaciones necesarias para interrogar y actualizar el directorio. Entre ellas se consideran las operaciones de adicionar y borrar una entrada, modificar una entrada existente, y cambiar el nombre de una entrada.

No obstante, la mayor parte del tiempo LDAP se utiliza para buscar información almacenada en el directorio. Las operaciones de búsqueda permiten que en una porción del directorio se busquen entradas que cumplan con algún criterio especificado en el filtro de búsqueda. De esa forma podemos buscar en cada entrada que cumplió con el criterio de búsqueda.

¿Cómo protegemos la información de accesos no autorizados?. Algunos servicios de directorios no tienen protección y permiten que cualquier persona consulte su información.

LDAP provee un mecanismo para que los clientes se autentiquen, o confirmen su identidad ante un servicio de directorio, con el objetivo de garantizar un control de acceso para proteger la información que el servidor contiene.

LDAP soporta además los servicios de seguridad de datos, tanto con respecto a la integridad como a la confidencialidad.

¿Cuando debemos utilizar LDAP?

Ésta es una muy buena pregunta. En general, debemos usar el Servicio de Directorio cuando necesitemos que la información sea almacenada y administrada de forma centralizada, y que se pueda acceder a ella mediante métodos basados en estándares.

Algunos ejemplos de tipo de información que encontramos en el ambiente empresarial e industrial:

  • Autenticación de Máquinas
  • Autenticación de Usuarios
  • Usuarios y Grupos del Sistema
  • Libreta de Direcciones
  • Representaciones Organizativas
  • Seguimiento de Recursos
  • Almacén de Información Telefónica
  • Administración de Recursos de Usuarios
  • Búsqueda de Direcciones de Correo
  • Almacén de Configuraciones de Aplicaciones
  • Almacén de Configuraciones de plantas telefónicas PBX
  • etcétera…

Existen varios Archivos de Esquemas Distribuidos –Distributed Schemas Files– basados en estándares. No obstante, siempre podemos crear nuestra propia Especificación de Esquema… cuando seamos Expertos en LDAP. 🙂

¿Cuando no debemos utilizar LDAP?

Cuando nos demos cuenta de que estamos retorciendo o forzando nuestro LDAP para que haga lo que necesitamos. En ese caso, tal vez sea necesario diseñarlo nuevamente. O si necesitamos que una sola aplicación utilice y manipule nuestros datos.

¿Cuales servicios y software tenemos planeado instalar y configurar?

 

  • Servicio de Directorio o Directory Service basado en OpenLDAP
  • Servicios NTP, DNS y DHCP independientes
  • Integrar Samba al LDAP
  • Posiblemente desarrollaremos la integración de LDAP y Kerberos
  • Administrar el Directorio con la aplicación web Ldap Account Manager.

¡Y esto es todo por hoy, amigos!.

Fuentes consultadas:

  • https://wiki.debian.org/LDAP
  • OpenLDAP Software 2.4 Administrator’s Guide
  • Ubuntu 12.04 serverguide


Categorías

Redes/Servidores

Ingeniero Termo Energético de profesión. Administrador de Redes desde hace ya varios años. Programador en Visual FoxPro. Debianero de Corazón, y "OldFashion Man". Contacto: federicotoujague@gmail.com / +53 5 5005735

15 comentarios

  1.   Oscar dijo

    FreeIPA creo que es un proyecto integral (LDAP, Kerberos, DNS, etc) interesante a estudiar, basado en el servidor LDAP 389.

  2.   Guido Rolon dijo

    Para comenzar los liks de los Pfs no funcionan. Me interesa mucho educarme en ldap. Gracias por compartir.

    1.    elav dijo

      Corregidos los enlaces.

  3.   eliotime3000 dijo

    Interesante.

  4.   usemoslinux dijo

    Te pasaste fico, una vez más!
    Gran aporte.
    Abrazo! Pablo.

  5.   federico dijo

    Gracias a todos por comentar !!!. No pude conectarme antes con mi modem a 28000 baudios / segundo. Que clase de velocidad. 🙂
    Saludos a todos

  6.   federico dijo

    Muchas Gracias a Todos por comentar !!!. Ozkar, FreeIPA es mucho más que un LDAP. Integra al Active Directory 389 de Red Hat con toda una serie de servicios relacionados. Es un animal de proyecto de Fedora. Demasiado inmenso para mis modestos conocimientos.

  7.   TheSandman86 dijo

    Excelente articulo, me viene como anillo al dedo ya que estaba planeando interiorizarme en estos temas, espero con ansias nuevos artículos.

  8.   Euphoria dijo

    Muchas gracias por compartir, con eso y lo de ClearOS tengo para rato 🙂

  9.   vidagnu dijo

    Excelente tutorial, tambien ya descargue el libro de Ubunto, gracias!

    1.    vidagnu dijo

      Ubuntu jejjeej todavia estoy dormido…

  10.   alunado dijo

    aunque faltandole el respeto a tu trabajo fico, lo he leido por encima y si entendí todo muy mal o masomenos bien se puede entender en este chiste:
    “pero si me hago capo capo de open-ldap me desarrollo mi buscador web y tiembla google!”

    1.    alunado dijo

      gracias por el esfuerzito y lastima que no alla material en español. mmm…

    2.    alunado dijo

      Fico, fijate si esta guia en español sirve para agregarla al material…

      http://www.google.com.ar/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEwQFjAD&url=http%3A%2F%2Felpuig.xeill.net%2Fdepartaments%2Finformatica%2Ffitxers%2Fsistemes-operatius%2Fcurso-de-ldap-en-gnu-linux%2Fat_download%2Ffile&ei=NwXgUrIOxLaRB4LHgYgG&usg=AFQjCNGj7BjNtzfdlu1gsl3YSWK1U1ELpw&sig2=aKABXgHookIGYhYXevUQew&bvm=bv.59568121,d.eW0

  11.   edgar dijo

    Ahora avanzando un poco sigo leyendo los post de la pagina http://blog.desdelinux.net/ldap-introduccion/ quisiera que me aclarara un poco a que se refiere con Autenticación de Máquinas este punto no lo tengo claro y estoy muy entusiasmado con esto de OpenLdap ya le he dedicado varias horas de lectura a este blog pero quiero poder dominar los tópicos y conceptos por ello mi intervención en sus actividades de antemano muchas gracias señor Fico continuamos en contacto saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.