Para qué sirve el protocolo LDAP y cómo funciona

Cuando tenemos decenas de ordenadores en una red, es necesario organizar los datos correctamente y también las credenciales de los diferentes usuarios. Para poder crear una estructura jerárquica es muy importante contar con un sistema como LDAP, el cual nos permitirá almacenar, administrar y proteger la información de todos los equipos adecuadamente, y también se encargará de gestionar todos los usuarios y activos. Hoy en RedesZone os vamos a explicar todo sobre LDAP y cómo instalarlo y configurarlo en un sistema Linux.

 

¿Qué es LDAP y para qué sirve?

LDAP (Lightweight Directory Access Protocol) o también conocido como «Protocolo Ligero de Acceso a Directorios» es un protocolo de la capa de aplicación TCP/IP que permite el acceso a un servicio de directorio ordenado y distribuido, para buscar cualquier información en un entorno de red. Antes de continuar explicando para qué sirve LDAP, debemos saber qué es un «directorio». Un directorio es un conjunto de objetos con atributos que están organizados de manera lógica y jerárquica, es decir, está en forma de árbol y perfectamente ordenado en función de lo que nosotros queramos, ya sea alfabéticamente, por usuarios, direcciones etc.

Generalmente un servidor LDAP se encarga de almacenar información de autenticación, es decir, el usuario y la contraseña, para posteriormente dar acceso a otro protocolo o servicio del sistema. Además de almacenar el nombre de usuario y la contraseña, también puede almacenar otra información como datos de contacto del usuario, ubicación de los recursos de la red local, certificados digitales de los propios usuarios y mucho más. LDAP es un protocolo de acceso que nos permite acceder a los recursos de la red local, sin necesidad de crear los diferentes usuarios en el sistema operativo, además, es mucho más versátil. Por ejemplo, LDAP permite realizar tareas de autenticación y autorización a usuarios de diferentes softwares como Docker, OpenVPN, servidores de archivos como los usados por QNAP, Synology o ASUSTOR entre otros, y muchos más usos.

LDAP puede ser utilizado tanto por un usuario al que se pide unos credenciales de acceso, como también por las aplicaciones para saber si tienen acceso a determinada información del sistema o no. Generalmente un servidor LDAP se encuentra en una red privada, es decir, redes de área local, para autenticar las diferentes aplicaciones y usuarios, pero también podría funcionar sobre redes públicas sin ningún problema.

Los dos servicios de directorio activo más conocidos que son compatibles con LDAP son «Directorio Activo de Windows», o también conocido como «Active Directory de Windows», así como OpenLDAP. Por lo tanto, el protocolo LDAP es compatible con ambas tecnologías para que los usuarios puedan acceder a todos los archivos y aplicaciones desde cualquier lugar, tan solo es necesario autenticarse y tendrán acceso a su equipo.

Actualmente la versión de LDAP es la LDAPv3, por lo tanto, cuando instalamos y utilizamos este protocolo, en la gran mayoría de ocasiones estaremos usando el protocolo LDAPv3 para autenticar a los diferentes clientes.

 

Funcionamiento de un servidor LDAP

LDAP es un protocolo que tiene arquitectura cliente-servidor, por lo tanto, vamos a tener varios clientes que se conectarán a uno o varios servidores LDAP. Generalmente se suele utilizar un solo servidor LDAP donde decenas o cientos de clientes se conectarán a él para acceder a los diferentes recursos de la red local. En el servidor es donde se almacenarán todos los datos relativos al directorio, también se encargará de la autenticación de los usuarios, de comprobar que solamente hay un usuario conectado simultáneamente o varios desde diferentes dispositivos, y de otras tareas que os explicaremos a continuación.

El funcionamiento de LDAP es bastante sencillo, ya que la comunicación es como cualquier otra comunicación entre un cliente y un servidor, tal y como ocurre en Windows con el Directorio Activo. A continuación, puedes ver los tres pasos más importantes de la comunicación:

  • El cliente se conecta al servidor LDAP (el proceso se llama Directory System Agent) a través del puerto TCP/IP 389 para empezar la sesión LDAP.
  • Se establece una conexión entre el cliente y el servidor.
  • Se intercambian datos entre el servidor y el cliente.

Las dos acciones básicas que puede hacer un cliente al conectarse son dos, pero antes debemos diferenciar entre autenticación y autorización. La autenticación es el mecanismo por el que nos identificamos frente a un sistema, por ejemplo, mediante un usuario y contraseña. La autorización es el mecanismo por el cual tenemos o no permiso de hacer algo en el sistema. En un servidor LDAP podemos hacer esto:

  • Leer información: para leer la información el cliente debe autenticarse, entonces intentará leer y obtener información del directorio, antes de realizar este paso el servidor se encargará de comprobar si ese usuario en concreto tiene la autorización de leer información.
  • Modificar información: para modificar información el proceso es el mismo, pero el servidor comprobará si tenemos permisos de modificación en el servidor.

LDAP también nos permite intercambiar información entre varios servidores, si en un servidor nos autenticamos y éste no tiene la información necesaria, podemos realizar esta consulta a otro servidor que tengamos en la misma red local, para comprobar si efectivamente tenemos esta información o no. Es algo parecido a lo que ocurre con los servidores DNS, que van preguntando uno a otro subiendo por el árbol hasta llegar a los root servers.

 

Tipos de operación

En un servidor existen diferentes operaciones que podemos realizar como clientes, a continuación, podéis ver todas las que podemos hacer:

  • Add: añadir una nueva entrada. Si la entrada ya existe, el servidor nos lo notificará.
  • Modify: modificar una entrada. El protocolo permite tres modificaciones diferentes, añadir nuevo valor, reemplazar valor o eliminar valor.
  • Delete: borrar una entrada.
  • Search: buscar u obtener entradas del directorio.
  • Compare: ver si una entrada nombrada tiene un atributo en concreto.
  • Abandon: abortar una petición previa
  • Bind: autenticarse en el servidor
  • Start TLS: establecer una comunicación segura usando TLS en el protocolo LDAPv3.
  • Unbind: cerrar la conexión.
 

Componentes y estructura

Para que este protocolo pueda realizar su tarea, existe tanto una estructura de directorio como también unos componentes. Los componentes más importantes son:

  • Directorios: es un árbol de entradas de directorio.
  • Entradas: consta de un conjunto de atributos. Las entradas describen al usuario enumerando todos sus atributos. Cada entrada tiene identificador único con su DN (Distinguished Name)
  • Atributos: los atributos tienen nombre y uno o más valores, son definidos en los esquemas.

Una estructura básica de LDAP podría ser la siguiente:

dn: cn=Redes Zone,dc=example,dc=com
cn: Redes Zone
givenName: Redes
sn: Zone
telephoneNumber: +34 666 111 111
telephoneNumber: +34 666 222 222
mail: redeszone@example.com
manager: cn=RedesZone2,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
  • dn (Distinguished Name): es el nombre de la entrada, pero no es un atributo ni tampoco parte de la propia entrada.
  • cn (Common Name): es el nombre distinguido relativo.
  • dc (Domain Component): es el Distinguished Name de la entrada padre.

El resto de líneas son los atributos de la entrada, como el givenName, sn, telephoneNumber, mail y los diferentes objectClass que tenemos. Un servidor aloja siempre un subárbol comenzando por una entrada específica.

Para realizar búsquedas tenemos que poner una URL para obtener información, la sintaxis que debemos usar es la siguiente:

ldap://host:puerto/DN?attributes?scope?filter?extensions

Muchos de estos componentes son opcionales, por ejemplo, podríamos llamar simplemente al DN para que nos devuelva toda la información relativa a esta entrada.

 

Diferencias entre Microsoft Active Directory y LDAP

Microsoft Active Directory utiliza internamente el protocolo LDAP para realizar todas las comunicaciones desde los clientes hasta el servidor o servidores, por lo tanto, se encarga de que los clientes puedan autenticarse y acceder a cualquier dato almacenado, además, debemos tener en cuenta que este protocolo es multiplataforma, no solamente lo tenemos en sistemas operativos Windows sino que también es compatible con Linux, Unix y macOS, todo ello a través del protocolo. Para que os hagáis una idea, los siguientes servicios de directorio usan este protocolo para su comunicación:

  • Active Directory de Microsoft
  • Apache
  • Servicio de directorio de Red Hat
  • OpenLDAP

Y muchos otros servicios también lo usan, sobre todo el último, OpenLDAP, el cual es una implementación de código abierto del protocolo y que se puede instalar en cualquier sistema, ya que está disponible el código fuente para compilarlo. No obstante, en la mayoría de distribuciones de Linux lo tenemos disponible en sus repositorios.

 

Instalación y configuración básica

La instalación y puesta en marcha en sistemas operativos basados en Linux es muy sencilla, además, también tenemos la posibilidad de activar el servidor en un NAS de QNAP. A continuación, os vamos a explicar cómo realizar la instalación y configuración básica en Debian, y también en QNAP.

 

Debian

Si tenemos un sistema operativo basado en Linux como Debian, vamos a poder instalar ldap a través de los repositorios oficiales de la distribución. Para ello, podemos poner la siguiente orden en el terminal, lógicamente necesitamos permisos de superusuario.

sudo apt install slapd ldap-utils

Una vez que lo ejecutemos, nos preguntará qué contraseña de administrador poner en el servidor, una vez que lo hayamos puesto, terminará de instalar el software y podemos empezar a trabajar con él.

Para verificar que se ha instalado correctamente, ponemos la siguiente orden y nos mostrará todos los datos del servidor en la actualidad.

sudo slapcat

En la siguiente captura debería aparecer lo que nos sale justo después de la instalación:

Ahora tenemos que reconfigurar slapd con el objetivo de poner nuestro propio dominio, ejecutamos la siguiente orden para empezar con el asistente de configuración.

sudo dpkg-reconfigure slapd

El asistente nos preguntará muchos aspectos del servidor, podemos dejar todo tal y como os mostramos en las siguientes capturas de pantalla. Lo más importante es poner el DN adecuadamente.

Una vez que lo hayamos hecho todo, ya tendremos el servidor listo para agregar los diferentes usuarios.

Lo primero que debemos hacer es crear un listado de todos los usuarios, para ello creamos un fichero en /etc/ldap con el nombre «users.ldif».

sudo touch /etc/ldap/users.ldif

Con cualquier editor de texto procedemos a editar este fichero con el siguiente contenido:

dn: ou=People,dc=redeszone,dc=net
objectClass: organizationalUnit
ou: People

Una vez que lo hayamos hecho, tenemos que introducirlo en el servidor de la siguiente forma:

sudo ldapadd -D "cn=admin,dc=redeszone,dc=net" -W -H ldapi:/// -f users.ldif

Nos preguntará la contraseña y procederemos a introducirla. No debería darnos ningún tipo de error.

Por último, si queremos realizar una búsqueda lo vamos a poder hacer de la siguiente forma:

sudo ldapsearch -x -b "dc=redeszone,dc=net" ou

La configuración básica del servidor ya está realizada, ahora tenemos que ir añadiendo las diferentes entradas con la información que nosotros queramos.

 

Servidor NAS de QNAP

Si utilizas un servidor NAS de QNAP, tenemos instalado de forma predeterminada un servidor LDAP. Para ello, nos vamos a la sección de «Panel de control / Aplicaciones / Servidor LDAP». En este menú procedemos a poner el nombre de dominio y la contraseña de administrador, una vez que lo hayamos indicado, procedemos a pinchar en «Aplicar».

Una vez que hayamos aplicado los cambios, ya tendremos el servidor en funcionamiento. Ahora nos aparecerán nuevas pestañas llamadas «Usuarios», «Grupo» y también «Copia de seguridad y restauración».

En la sección de usuarios es donde vamos a poder dar de alta los diferentes usuarios con un pequeño asistente de configuración. Simplemente tenemos que seguir este asistente tan sencillo para añadir todos los usuarios que queramos.

También tenemos la posibilidad de añadir un nuevo grupo de usuarios, también tendremos un asistente para ayudarnos con el proceso.

Finalmente, en la sección de copia de seguridad y restauración, vamos a poder hacer un backup de toda la base de datos del servidor, e incluso restaurarla de una copia anterior, ideal para no perder toda la información contenida en nuestro servidor.

Tal y como podéis ver, la puesta en marcha de este servidor LDAP en un QNAP es muy sencillo, no tenemos que ejecutar ningún comando a través de consola, todo se realiza a través de la interfaz gráfica de usuario.

 

Conclusiones

El protocolo LDAP es ampliamente utilizado en entornos profesionales para autenticar a los diferentes usuarios, y donde vamos a poder almacenar la información ordenada y jerarquizada. Este protocolo no solamente se usa por software como OpenLDAP, sino también por otros sistemas de directorios como el de Windows o RedHat entre otros muchos que os hemos explicado. Aunque en un primer momento su funcionamiento pudiera parecer complicado, una vez que instalamos el servidor y empezamos a dar de alta usuarios y grupos, vais a entender perfectamente todo lo relacionado con este protocolo tan importante.

Este protocolo es uno de los más importantes para autenticar a los usuarios dentro de una empresa, además, se suele utilizar también junto con los servidores RADIUS, y es que dependiendo de nuestras necesidades, podemos optar por este protocolo en lugar de RADIUS e incluso que ambos convivan en la misma red local para diferentes usos que le podemos dar.

¡Sé el primero en comentar!