Implementación de un dominio Linux con OpenLDAP

Una vez configurado el servidor de LDAP para almacenar la información del directorio, y los clientes de LDAP para poder preguntar por ella, el siguiente y último paso para organizar un dominio Linux con LDAP es conseguir que el directorio sea utilizado por todos los ordenadores (servidores y clientes) como fuente de información administrativa, añadida a los propios ficheros de configuración locales presentes en cada ordenador.

En principio, la información administrativa que tiene sentido centralizar en un dominio Linux se reduce prácticamente a cuentas de usuario (incluyendo contraseñas) y cuentas de grupo (las cuentas de ordenadores del directorio, es decir, la centralización del fichero /etc/hosts del servidor LDAP, pueden obviarse si ya disponemos de resolución de nombres basada en DNS, por ejemplo). En conjunto, la información almacenada en ambos tipos de cuentas permite autentificar a un usuario cuando éste desea iniciar una sesión interactiva en un sistema Linux y, en el caso de que la autentificación sea positiva, crear el contexto de trabajo inicial (es decir, el proceso shell inicial) para ese usuario. Manteniendo ambos tipos de cuentas en el directorio permitiría una gestión completamente centralizada de los usuarios del dominio.

Internamente, este proceso de autentificación y creación del contexto inicial que Linux lleva a cabo cuando un usuario desea iniciar una sesión interactiva utiliza dos bibliotecas distintas:

  1. PAM (Pluggable Authentication Module) es una biblioteca de autentificación genérica que cualquier aplicación puede utilizar para validar usuarios, utilizando por debajo múltiples esquemas de autentificación alternativos (ficheros locales, Kerberos, LDAP, etc.). Esta biblioteca es utilizada por el proceso de "login" para averiguar si las credenciales tecleadas por el usuario (nombre y contraseña) son correctas.

  2. NSS (Name Service Switch) presenta una interfaz genérica para averiguar los parámetros de una cuenta (como su UID, GID, shell inicial, directorio de conexión, etc.), y es utilizada por el proceso de "login" para crear el proceso de atención inicial del usuario.

La ventaja fundamental de ambas bibliotecas consiste en que pueden reconfigurarse dinámicamente mediante ficheros, sin necesidad de recompilar las aplicaciones que las utilizan. Por tanto, lo único que necesitamos es reconfigurar ambas para que utilicen el servidor LDAP además de los ficheros locales (/etc/passwd, etc.) de cada ordenador.

En RedHat/Fedora Linux, esta configuración es muy sencilla. Primero instalamos (si no lo está ya) un paquete denominado nss_ldap, que contiene los módulos de LDAP para PAM y NSS. A partir de ahí, ejecutamos la herramienta de configuración authconfig, que configura automáticamente los ficheros de PAM y NSS con los mecanismos de autentificación disponibles. En nuestro caso, basta con indicar, en dos ventanas sucesivas, que nuestro método de obtención de informacion y de autentificación está basado en LDAP, indicando la dirección IP del servidor y el sufijo del directorio (en formato LDAP, claro). En principio, no debemos activar la casilla de "Utilizar TLS" (que activaría conexiones seguras) ya que no hemos activado este tipo de conexiones en el servidor.

Es importante recordar que debemos realizar esta configuración en todos los clientes primero, y sólo iniciarla en el servidor cuando hayamos asegurado que todo funciona correctamente. En cualquier caso, no resulta imprescindible configurar el servidor como cliente, si siempre incluimos los usuarios y grupos nuevos tanto en el directorio como en los ficheros locales del mismo (o bien si dichos usuarios nunca van a trabajar en el servidor).

La comprobación desde cualquier cliente que el dominio funciona es muy sencilla. Simplemente ejecutamos:

bash# getent passwd
bash# getent group

Y comprobamos que nos devuelven, respectivamente, la lista completa de usuarios y grupos del servidor. En realidad, esta forma comprobaría únicamente el funcionamiento correcto de NSS sobre LDAP. Para una comprobación completa (PAM+NSS), la manera más efectiva es intentar iniciar una sesión en un cliente con un usuario que sólo esté definido en el servidor. Hay que recordar que el directorio de conexión del usuario (home)debe existir en el ordenador cliente (localmente, o bien montado por NFS).