Capítulo 12: Instalar y configurar OpenLDAP en Ubuntu

Publicado por P. Ruiz en

12.1. Introducción

Existen diferentes formas de autenticar clientes en una red GNU/Linux, pero una de las más usadas es la combinación de tres herramientas diferentes: PAM, NSS y LDAP.

La idea consiste en disponer de un servidor que facilite la autenticación de los clientes, de modo que éstos recurran al servidor cada vez que un usuario necesite identificarse.De esta forma, la cuenta de usuario no es específica de un equipo cliente, sino que será válida en cualquier equipo de la red que haya sido debidamente configurado.

De hecho, éste es el método que suele utilizarse en GNU/Linux para obtener una gestión de usuarios globales similar a la que ofrecen los Servidores Windows a través de una estructura de dominios.

En este capítulo aprenderemos antes de nada cuál es la función de cada uno de los componentes, tanto de forma individual como combinado con los demás. Después, aprenderemos a realizar la instalación y configuración de la estructura que hemos ilustrado en la figura anterior.

¿Qué es NSS?

NSS (Name Service Switch) es un servicio que permite la resolución de nombres de usuario y contraseñas (o grupos) mediante el acceso a diferentes orígenes de información. En condiciones normales, esta información se encuentra en los archivos locales del sistema operativo, en concreto en /etc/passwd, /etc/shadow y /etc/group, pero puede proceder de otras fuentes, como DNS (Domain Name System), NIS (Network Information Service), LDAP (Lightweight Directory Access Protocol) o WINS (Windows Internet Name Service).

Los primeros sistemas operativos de tipo Unix accedían directamente a los archivos de configuración o código que dependía de la forma en que se producía la autenticación. Esto hacía que cualquier cambio en el modo de autenticación obligara a cambiar el sistema operativo.

Ultrix fue el primero en ofrecer una funcionalidad muy parecida a NSS, pero fue Sun Microsystems el primero en desarrollar NSS de una forma muy parecida a como lo conocemos en la actualidad. Por lo tanto, el primer sistema operativo que incorporó NSS fue Solaris.

Como curiosidad, podemos decir que la versión de NSS para GNU/Linux está reescrita desde cero, sin tomar ni una línea de código de la versión de Sun Microsystems.

Poco después, se portó a diferentes sistemas operativos, como AIX, NetBSD, FreeBSD o GNU/Linux.

El objetivo de NSS es que los programas o los comandos del sistema operativo puedan manejar información administrativa relacionada con los usuarios, las contraseñas y los grupos (incluidos aspectos como la caducidad de una contraseña o su nivel de complejidad) sin tener que conocer el lugar donde se encuentran almacenados.

¿Qué es PAM?

PAM (Pluggable Authentication Modules) establece una interfaz entre los programas de usuario y distintos métodos de autenticación. De esta forma, el método de autenticación se hace transparente para los programas.

Como ocurrió con NSS, PAM surgió en Sun Microsystems, aunque, en este caso, como una propuesta a la Open Software Foundation. Fue Red Hat quien lo desarrolló como una herramienta de Software libre y lo incorporó por primera vez a la versión 3.0.4 de su sistema operativo en 1996.

La idea se basa en la creación de módulos de autenticación reemplazables, de forma que sea transparente para el sistema el uso de distintos métodos de autenticación. Esto hace que, sin realizar modificaciones en el sistema, podamos utilizar métodos que vayan desde el uso típico de un nombre de usuario y una contraseña, hasta dispositivos que faciliten la identificación biométrica de los usuarios (lectores de huellas, de voz, de imagen, etc.). Incluso incorpora opciones para aceptar contraseñas de un solo uso, restringir el acceso a determinados horarios o establecer políticas de autenticación específicas para cada usuario o grupos de usuarios.

Básicamente, PAM complementa en algunos aspectos el funcionamiento de NSS ya que mientras éste se centra en la búsqueda y mapeo de los usuarios, PAM controla la autenticación, el inicio de sesión y su configuración.

En la actualidad, PAM es el método que utilizan la mayoría de las aplicaciones y herramientas de GNU/Linux que necesitan relacionarse, de algún modo, con la autenticación de los usuarios.

¿Qué es LDAP?

LDAP es un protocolo que ofrece el acceso a un servicio de directorio implementado sobre un entorno de red, con el objeto de acceder a una determinada información. Puede ejecutarse sobre TCP/IP o sobre cualquier otro servicio de trasferencia orientado a la conexión.

LDAP son las siglas en inglés de Lightweight Directory Access Protocol (Protocolo Ligero de Acceso a Directorios) y podemos considerarlo como un sistema de almacenamiento de red (normalmente construido como una base de datos) al que se pueden realizar consultas.

El protocolo LDAP se creó originalmente en la Universidad de Míchigan, que publicó un primer desarrollo en 1993. Más tarde, Tim Howes y Steve Killela, dos de los diseñadores originales del proyecto comienzan a trabajar en una nueva versión bajo los auspicios de IETF (Internet Engineering Task Force) completando el desarrollo original.

La nueva versión (LDAPv3) se publicó en 1997 e integraba mecanismos de autenticación sencilla y una capa de seguridad. Después de esto, la IETF ha añadido numerosas extensiones y especificaciones propias que le han ido incorporando nuevas capacidades.

12.5. ¿Qué es OpenLDAP?

La respuesta es muy sencilla: OpenLDAP es un desarrollo del protocolo LDAP, implementado con la filosofía del software libre y código abierto.

El proyecto OpenLDAP se inició en agosto de 1998 y está sustentado por una entidad sin ánimo de lucro llamada OpenLDAP Foundation, creada por el desarrollador estadounidense Kurt D. Zeilenga para coordinar las actividades del proyecto.

OpenLDAP se publica bajo su propia licencia OpenLDAP Public License (http://www.openldap.org/software/release/license.html)

Como ocurría en el caso de LDAP, OpenLDAP está muy optimizado para ofrecer los mejores resultados en situaciones que requieran operaciones de lectura intensivas. De esta forma, un directorio OpenLDAP arrojará unos resultados muy superiores a los que ofrece una base de datos relacional optimizada, cuando realicemos operaciones de consulta intensivas sobre ambas.

Por el contrario, si utilizáramos un directorio OpenLDAP para guardar datos que sean actualizados de manera frecuente, los resultados obtenidos serían muy inferiores a los ofrecidos por una base de datos relacional.

No sólo podemos encontrar OpenLDAP en la mayoría de de las distribuciones GNU/Linux, sino que también lo encontramos para Microsoft Windows, Apple OSX, Solaris, HP-UX, BSD, etc.