LDAP (parte 6): Configurar un cliente Ubuntu para autenticarse en el servidor OpenLDAP

Publicado por P. Ruiz en

OpenLDAP logoCon el artículo anterior de esta serie (Importar los usuarios y grupos locales) completamos la configuración de OpenLDAP en un equipo con Ubuntu Server 20.04 LTS, para que fuese capaz de autenticar usuarios conectados a equipos cliente de la red.

Ahora llega la segunda parte de la tarea: Configurar los clientes.

En este artículo nos centraremos en la configuración de un cliente que está ejecutando un sistema Ubuntu Desktop. Más adelante veremos cómo resolver la tarea con clientes Windows.

Para tener más información sobre la estructura de los archivos LDIF, te recomiendo consultar el Capítulo 12: Instalar y configurar OpenLDAP en Ubuntu de nuestro libro Sistemas Operativos en Red (2ª edición).

Además, puedes consultar todos los artículos prácticos publicados en SomeBooks.es sobre LDAP. haciendo clic aquí.

Instalar el software necesario

En Ubuntu, necesitaremos ajustar el comportamiento de los servicios NSS y PAM en cada cliente que debamos configurar. Para lograrlo, necesitaremos instalar los siguientes paquetes:

  • libnss-ldap: Permitirá que NSS obtenga de LDAP información administrativa de los usuarios (Información de las cuentas, de los grupos, información de la máquina, los alias, etc.)

  • libpam-ldap: Que facilitará la autenticación con LDAP a los usuarios que utilicen PAM.

  • ldap-utils: Facilita la interacción don LDAP desde cualquier máquina de la red.

El proceso de instalación es realmente sencillo. Sin embargo, lo primero será asegurarnos de que el sistema se encuentra completamente actualizado. Para lograrlo, bastará con abrir una ventana de terminal (por ejemplo, con la combinación de teclas Alt + Control + T) y ejecutar una orden como la siguiente:

sudo apt update -y && sudo apt upgrade -y && sudo apt dist-upgrade -y

En realidad, se trata de tres comando, que se ejecutarán de forma sucesiva: el primero actualiza los repositorios del sistema, el segundo actualiza los paquetes que sean necesarios y el tercero se asegura de llevarlos a su última versión.

Por su parte, con el argumento -y indicamos que aplique, de forma predeterminada, una respuesta afirmativa para cualquier pregunta que el sistema necesite hacernos. De este modo, el comando se ejecuta sin preguntar nada.

Escribimos la orden y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-001

Una vez completada la actualización, pasamos a la instalación propiamente dicha.

Como los dos paquetes que necesitamos se encuentran en los repositorios oficiales de Ubuntu 20.04 LTS, sólo tenemos que escribir en la terminal la siguiente orden:

sudo apt-get install libnss-ldap libpam-ldap ldap-utils -y

De nuevo, escribimos la orden y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-002

Durante el proceso, se activa un asistente que nos permite configurar el comportamiento de ldap-auth-config. En el primar paso, nos solicita la dirección URi del servidor LDAP. En nuestro caso, escribiremos la dirección IP del servidor y sustituiremos el protocolo ldapi:/// por ldap://.

A continuación, nos desplazamos hasta Aceptar con la tecla Tab y, una vez allí, pulsamos Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-003

En el siguiente paso, debemos indicar el nombre global único (Distinguished NameDN). Inicialmente aparece en valor dc=example,dc=net pero nosotros lo sustituiremos por dc=somebooks,dc=local.

… y volvemos a pulsar Tab hasta que se active Aceptar. Después pulsamos Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-004

A continuación, el asistente nos pide el número de versión del protocolo LDAP que estamos utilizando. De forma predeterminada aparece seleccionada la versión 3.

Nos limitamos a pulsar de nuevo la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-005

A continuación, indicaremos si las utilidades que utilicen PAM deberán comportarse del mismo modo que cuando cambiamos contraseñas locales. Esto hará que las contraseñas se guarden en un archivo independiente que sólo podrá ser leído por el superusuario.

Elegimos la opción y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-006

Después, el sistema nos pregunta si queremos que sea necesario identificarse para realizar consultas en la base de datos de LDAP.

Elegimos la opción No y volvemos a pulsar la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-007

Ya sólo nos queda indicar el nombre de la cuenta LDAP que tendrá privilegios para realizar cambios en las contraseñas. Como antes, deberemos escribir un nombre global único (Distinguished NameDN), sustituyendo el valor predeterminado que nos ofrece (cn=manager,dc=example,dc=net) por que usamos en la configuración del servidor (cn=admin,dc=somebooks,dc=local).

Después de escribir el nombre correcto, pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-008

En el último paso, el asistente nos solicita la contraseña que usará la cuenta anterior. Deberá coincidir con la que escribimos en el apartado Instalar OpenLDAP en el servidor.

Cuando terminemos de escribir la contraseña, pulsaremos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-009

De vuelta en la pantalla de la terminal, podremos comprobar que no se han producido errores durante el proceso.

Con esto habremos terminado la configuración básica del cliente LDAP.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-010

Como ocurría con el servidor, si más adelante observamos algún error o necesitamos efectuar alguna modificación, sólo tenemos que ejecutar el siguiente comando:

sudo dpkg-reconfigure ldap-auth-config

Realizar ajustes en los archivos de configuración.

Para completar la tarea, deberemos cambiar algunos parámetros en los archivos de configuración del cliente. En concreto, deberemos editar /etc/nsswitch.conf, /etc/pam.d/common-password y /etc/pam.d/common-session. Así es que, para no demorarnos más, comencemos…

Editar el archivo /etc/nsswitch.conf

En el archivo /etc/nsswitch.conf se incluyen las fuentes desde las que se obtiene la información del servicio de nombres en diferentes categorías y en qué orden.

Cada categoría de información se identifica bajo un nombre.

Como es habitual, el archivo está formado por texto plano. En él encontraremos columnas separadas por espacios o caracteres de tabulación. La primera columna indica el almacenamiento y, las restantes, el orden de los orígenes a consultar y un conjunto limitado de acciones a realizar como resultado de la consulta.

Para editar el archivo, basta con hacer uso de un editor de textos con privilegios de administración:

sudo gedit /etc/nsswitch.conf

Escribimos, o copiamos, la orden y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-011

Cuando se abra la ventana del editor, localizamos las líneas que comienzan por passwd, group y shadow.

Aspecto inicial del archivo.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-012

A continuación, en las dos primeras líneas sustituimos el texto systemd por ldap, y en la tercera, que no aparece systemd nos limitamos a añadir ldap al final de la línea. En definitiva, el archivo debe quedar como en la siguiente imagen.

Cuando terminemos, cerramos la ventana asegurándonos de guardar los cambios.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-013

Para saber si la configuración anterior funciona adecuadamente, usaremos el comando getent, que consultará el contenido del archivo /etc/nsswitch.conf para mostrarnos la lista de usuarios, grupos, equipos, etc., que se encuentran registrados en el sistema. Si la configuración que hemos hecho es correcta, aparecerán también las cuentas de usuario definidas en el servidor LDAP.

Su sintaxis es como sigue:

sudo getent passwd

Escribimos, o copiamos, la orden y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-014

El comando nos responderá con la lista de todos los usuarios, grupos, etc., que sean conocidos. Entre ellos, deben aparecer las cuentas LDAP.

Efectivamente, comprobamos que el usuario de prueba que creamos en el servidor, aparece en la lista.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-015

Editar el archivo /etc/pam.d/common-session

El archivo /etc/pam.d/common-session ofrece un conjunto de reglas PAM para el inicio de sesión, tanto si éste es interactivo como si es no interactivo.

Aquí será donde indiquemos que se debe crear un directorio home durante el primer inicio de sesión, también para los usuarios autenticados mediante LDAP. Este comportamiento lo conseguiremos añadiendo al final del archivo la siguiente línea:

session optional       pam_mkhomedir.so skel=/etc/skel umask=077

Como en las ocasiones anteriores, usaremos gEdit con privilegios de administrador para realizar el cambio:

sudo gedit /etc/pam.d/common-session

Editamos el archivo

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-016

Cuando aparezca en la pantalla el contenido del archivo, nos desplazamos hasta el final y añadimos la línea anterior. El archivo debe quedar con el aspecto que muestra la siguiente imagen.

Cuando terminemos, cerramos la ventana asegurándonos de guardar los cambios.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-017

Comprobar el funcionamiento.

Para asegurarnos de que todo funciona correctamente, comenzaremos haciendo una consulta en el directorio LDAP, al estilo que lo que hacíamos cuanto trabajábamos en el servidor:

ldapsearch -x -H ldap://192.168.1.10 -b "dc=somebooks,dc=local"

En ella, usamos el argumento -x para indicar que, en lugar de usar una autenticación con SASL, lo haga en el modo sencillo, -H nos permite indicar la ubicación del servidor LDAP y -b para indicar el punto del árbol donde comenzaremos la consulta (en este aso, la raíz).

Escribimos la orden y pulsamos la tecla Intro.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-018

Si la configuración es correcta, recibiremos una lista con los objetos del directorio.

Salida del comando ldapsearch.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-019

Si hasta aquí todo es correcto, afrontaremos la prueba definitiva: identificarnos el el ordenador cliente con una cuenta de usuario definida en el servidor LDAP. Para lograrlo, podemos utilizar una orden como esta:

sudo su - jlopez

Verás que aparece un mensaje, avisando de que se está creando, dentro de /home, el directorio local para la cuenta. Esto es porque se trata de la primera vez que iniciamos sesión con esta cuenta en el equipo cliente. Como es lógico, esto no ocurrirá el resto de las veces que nos autentiquemos con esta cuenta.

..Y cuando se vuelve a mostrar el prompt del sistema, comprobamos que ya estamos actuando con la cuenta adecuada.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-020

Si prefieres hacer la comprobación iniciando sesión en modo texto, basta con pulsar la combinación de teclas Alt + Control + F3 y escribir el nombre de usuario y la contraseña.

Ahora no se crea la carpeta /home del usuario, porque ya se hizo en la comprobación anterior.

LDAP-parte-6-Configurar-un-cliente-Ubuntu-para-autenticarse-en-el-servidor-OpenLDAP-021

Y para volver a la interfaz gráfica, puedes usar la combinación de teclas Alt + Control + F2.

Y esto es todo por el momento. Espero que esta serie de artículos te esté resultando útil.