11.9. Configurar un equipo cliente con Ubuntu para autenticarse en el servidor OpenLDAP
En los apartados anteriores hemos configurado el servidor OpenLDAP para que sea capaz de autenticar clientes en la red. Ahora llega la segunda parte de la tarea: Configurar los clientes.
En este apartado 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.
En Ubuntu, necesitaremos ajustar el comportamiento de los servicios NSS y PAM en cada cliente que debamos configurar. Comenzamos por instalar los siguientes paquetes:
- libpam-ldap: Que facilitará la autenticación con LDAP a los usuarios que utilicen PAM.
- 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.
- nss-updatedb: Mantiene una caché local del de la información del usuario y grupo en el directorio LDAP.
- libnss-db: Incluye extensiones para usar bases de datos de red.
- nscd: Es un demonio que ofrece una caché para muchas de las peticiones mś frecuentes del servicio de nombres.
- ldap-utils: Facilita la interacción don LDAP desde cualquier máquina de la red.
Para instalarlos todos en una sola orden, tenemos que escribir lo siguiente:
sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db nscd ldap-utils -y
Durante el proceso, se activa un asistente que nos permite configurar el comportamiento de ldap-atut-config.
2
En el primar paso, nos solicita la dirección URi del servidor LDAP. Es importante dejar el principio tal y como lo encontramos (ldapi:///).
En el siguiente paso, debe mos indicar el nombre global único (Distinguished Name – DN). Inicialmente aparece en valor dc=example,dc=net pero nosotros lo sustituiremos por dc=somebooks,dc=es.
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.
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.
A continuación, el sistema nos pregunta si queremos que sea necesario identificarse para realizar consultas en la base de datos de LDAP.
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 Name – DN), 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=es)
En el último paso, el asistente nos solicita la contraseña que usará la cuenta anterior (como siempre, habrá que escribirla por duplicado para evitar errores tipográficos). Deberá coincidir con la que escribimos en el apartado Instalar OpenLDAP en el servidor.
De vuelta en la pantalla de la terminal, podremos comprobar que no se han producido errores durante el proceso.
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/ldap.conf, /etc/ldap/ldap.conf y /etc/nsswitch.conf. Después, actualizaremos NSS y configuraremos PAM para que utilicen LDAP:
Editar el archivo /etc/ldap.conf
Como hacemos siempre, modificaremos el archivo utilizando el editor nano.
Las modificaciones a realizar en el archivo son estas:
- Buscamos una línea como esta:
#bind_policy hard
y la sustituimos por esta:
bind_policy soft
(recuerda eliminar el carácter #, que haría que la línea fuese ignorada)
- Buscamos una línea como esta:
pam_password md5
y la sustituimos por esta:
pam_password crypt
- Buscamos unalínea que comience por uri ldapi://y la sustituimos por esta:
uri ldap://192.168.1.10
Recuerda que:
- Puedes hacer búsquedas dentro de nano usando la combinación de teclas Ctrl + w.
- Debes sustituir la dirección IP 192.168.1.10 por la de tu servidor OpenLDAP.
2
Cuando hayamos concluido, pulsamos Ctrl + x para salir y nos aseguramos de guardar los cambios en el archivo.
Editar el archivo /etc/ldap/ldap.conf
Siguiendo la misma pauta del punto anterior, usamos el editor nano para editar el archivo:
Cuando se abra el archivo, podremos observar que, algunas de sus líneas, tienen el siguiente aspecto:
#BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never
Lo primero será borrar el carácter que hace que la línea permanezca comentada (#). Después, cambiaremos su contenido por este otro:
BASE dc=somebooks,dc=local URI ldap://ldap.somebooks.local SIZELIMIT 0 TIMELIMIT 0 DEREF never
2
Cuando hayamos terminado, pulsamos Ctrl + x para salir y nos aseguramos de guardar los cambios en el archivo.
Editar el archivo /etc/nsswitch.conf
Por último, editamos el archivo /etc/nsswitch.conf.
Al abrir el archivo, observaremos que, algunas de sus líneas, tienen el siguiente aspecto:
passwd: compat group: compat shadow: compat hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 networks: files protocols: db files services: db files ethers: db files rpc: db files
Debemos cambiar las líneas necesarias para que su contenido final sea como este:
passwd: files ldap group: files ldap shadow: files ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files
Actualizar NSS y configurar PAM para que utilicen LDAP
Este último apartado se va a encargar de resolver los dos pasos finales para que el cliente pueda utilizar las cuentas de usuario creadas en el servidor LDAP.
Por una parte, deberemos actualizar la caché local con la información de usuarios y grupos correspondientes a LDAP. Para conseguirlo, recurriremos al comando nss-updatedb que instalamos al principio de este apartado:
sudo nss_updatedb ldap
Si al aplicar el comando anterior obtenemos un error como este…
Failed to enumerate nameservice: No such file or directory
… Lo más probable es que hayamos cometido un error al escribir la dirección IP del servidor en el archivo /etc/ldap.conf. Debes asegurarte de que dicha dirección es correcta y de que el servidor se encuentra accesible desde el cliente (es decir, que funciona la orden ping). Si no es así, se trata de un problema de configuración en las características de la red.
Si todo ha ido bien, podemos utilizar el comando getent, que nos permite obtener entradas de varios archivos de texto del sistema, por ejemplo, de passwd y group. La ventaja es que consolida la información local con la obtenida a través de la red.
Así pues, desde la consola ejecutamos el siguiente comando:
getent passwd
Como vemos en la imagen siguiente, la salida del comando ofrece al mismo tiempo información sobre los usuarios locales y los usuarios LDAP.
Lo siguiente será actualizar la configuración de las políticas de autenticación predeterminadas de PAM, lo que conseguimos con el siguiente comando:
sudo pam-auth-update
Al ejecutarlo, aparecerá un asistente, que comienza mostrándonos una pantalla informativa sobre la función de los módulos PAM.
Después, elegiremos cuáles de los módulos disponibles queremos habilitar. De forma predeterminada aparecen todos marcados…
Un par de ajustes más
En realidad, el cliente ya está listo para que nos autentiquemos con una cuenta del servidor LDAP. Sin embargo, si ahora nos identificamos en el cliente con la cuenta jlopez (recuerda que es una de las cuentas que creamos en el servidor), encontraremos que no existe su carpeta /home/jlopez en el equipo cliente. Lógicamente, podríamos crear dicha carpeta a mano, pero habría que repetir el proceso en cada uno de los clientes en los que el usuario vaya a iniciar sesión.
Si queremos que la carpeta se cree automáticamente cuando el usuario inicie sesión por primera vez en un equipo, deberemos hacer uso de un módulo PAM llamado pam_mkhomedir. Esto lo conseguimos haciendo una pequeña modificación en el archivo /etc/pam.d/common-session del cliente.
Cuando se abra el editor, añadiremos una nueva línea al principio del archivo con este contenido:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Si quieres obtener más detalles sobre el funcionamiento del módulo pam_mkhomedir, puedes recurrir a esta dirección:
Otro inconveniente que tiene la configuración actual es que los usuarios LDAP no podrán cambiar sus propias contraseñas. Para solucionarlo, deberemos cambiar el archivo /etc/pam.d/common-password.
Cuando veamos el contenido del archivo, buscaremos una línea como esta (recuerda que puedes usar la combinación de teclas crtl +w):
password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass
y eliminamos su parte final, de modo que quede así:
password [success=1 user_unknown=ignore default=die] pam_ldap.so
4
Cuando terminemos, pulsaremos Ctrl + x para salir y nos aseguraremos de guardar los cambios en el archivo.
Comprobar que funciona el inicio de sesión
La forma más sencilla de comprobar que podemos iniciar sesión en el servidor usando LDAP consiste en arrancar el sistema en modo texto (o arrancarlo en modo gráfico y usar la combinación de teclas alt + ctrl + f7 para ir a una consola de texto) y escribir las credenciales de un usuario LDAP.
En esta imagen podemos comprobar varias cosas:
- Que nos encontramos en el equipo cliente.
- Que estamos iniciando sesión con un usuario LDAP.
- Que durante el inicio de sesión se crea el directorio /home para la cuenta.
- Que el inicio de sesión se produce satisfactoriamente.