Autenticación basada en LDAP

Introducción

Como ya hemos comentado anteriormente, una de las utilidades más importantes de un servidor LDAP es como servidor de autentificación. Autentificarse es necesario para entrar en un sistema linux. También para acceder a algunos servicios como un servidor FTP o a páginas privadas en un servidor web. En otros apartados veremos como utilizar un servidor LDAP para permitir el acceso a páginas web privadas y para autentificar a usuarios del servidor de ftp Proftpd. Aquí veremos las modificaciones que hay que realizar en un sistema Linux para que autentifique a los usuarios en un servidor LDAP en lugar de utilizar los clásicos archivos /etc/passwd, /etc/group y /etc/shadow. Para ello es necesario instalar y configurar los paquetes libpam-ldap y libnss-ldap.

Librerías de autentificación pam-ldap y nss-ldap

La librería pam-ldap permite que las aplicaciones que utilizan PAM para autentificarse, puedan hacerlo mediante un servidor LDAP. Para que el sistema linux se autentifique mediante un servidor LDAP es necesario instalar esta librería ya que utiliza PAM. El archivo de configuración de ésta librería es /etc/ldap.conf. Hay otras aplicaciones o servicios que utilizan PAM para la autentificación y por tanto podrían, gracias a la librería pam-ldap, autentificarse ante un servidor LDAP.

Para especificar el modo de autentificación de cada servicio es necesario configurar los archivos que se encuentran en la carpeta /etc/pam.d/.

La librería nss-ldap permite que un servidor LDAP suplante a los archivos /etc/passwd, /etc/group y /etc/shadow como bases de datos del sistema. Toma la configuración del archivo anterior /etc/ldap.conf. También habría que configurar el arhivo /etc/nsswitch.conf para que se utilice LDAP como base de datos del sistema en lugar de los archivos passwd, group y shadow. El asistente que veremos a continuación, configurará automáticamente todos los archivos necesarios para permitir la autentificación del sistema por ldap.

La instalación de ambas librerías se puede realizar mediante apt-get.

Instalación de libpam-ldap y libnss-ldap

La instalación de las librerías libpam-ldap y libnss-ldap se puede realizar ejecutando el comando:

// Instalación de las librerías libpam-ldap y libnss-ldap
# apt-get install libpam-ldap libnss-ldap

La configuración de las librerías libpam-ldap y libnss-ldap se hará con el comando:

// Configuración de las librerías libpam-ldap y libnss-ldap
# dpkg-reconfigure ldap-auth-config

La primera pregunta que nos hace el asistente es si queremos que el asistente DebianConf maneje los archivos de configuración, lo recomendable es responder que sí.

Después nos preguntará quién es el servidor LDAP. Podemos poner la IP o el nombre:

Luego nos preguntará por la base del directorio LDAP (base DN):

Acto seguido tendremos que indicar la versión de LDAP a utilizar:

Luego nos preguntará si deseamos que las contraseñas se almacenen en un archivo a parte. Responderemos que no.

En el siguiente paso nos pregunta si necesitamos autentificarnos en el servidor LDAP o no. Como la librería únicamente va a realizar consultas, no es necesario autentificarse por lo tanto debemos responder 'No':

Finalmente nos preguntará qué sistema de cifrado queremos utilizar para las contraseñas almacenadas en caché. Elegiremos md5:

Ahora solamente nos quedaría indicar al sistema para que se autentifique por ldap. Podríamos hacerlo editando manualmente el archivo /etc/nsswitch.conf pero lo haremos mediante el comando auth-client-config

// Configuración del sistema para que se autentifique por ldap
# auth-client-config -t nss -p lac_ldap

Probar la autentificación

Nuestro servidor LDAP ya debería autentificar correctamente. Podemos probar la autentificación de los servicios mediante el comando pamtest que se encuentra en el paquete libpam-dotfile, por lo tanto debemos instalarlo:

// Instalación del comando pamtest
# apt-get install libpam-dotfile

Si deseamos probar que funciona el servicio passwd (cambiar contraseña) sobre un usuario del directorio LDAP (ejemplo jessica) , podemos ejecutar:

// Probando el cambio de contraseña
root@curso:/etc/pam.d# pamtest passwd jessica Trying to authenticate for service . Password: // Introducimos el password de jessica Authentication successful. // La autentificación ha sido satisfactoria

También podemos utilizar el comando finger sobre usuarios que estén solamente en el directorio LDAP, por ejemplo joel:

// Probando finger
root@curso:/etc/pam.d# finger joel Login: joel Name: Joel Javier Directory: /home/www/alumnos Shell: /bin/sh Last login Tue Sep 27 18:02 (CEST) on pts/3 from 192.168.0.213 No mail. No Plan.

Podemos por ejemplo, desde una consola de root, cambiar mediante el comando 'su' (su=Switch User - cambiar de usuario) a un usuario que esté en el directorio LDAP, para lo cuál no nos pedirá contraseña ya que root tiene permiso para cambiar a cualquier usuario. Si posteriormente cambiamos a otro usuario del directorio, ahora sí que nos pedirá contraseña. Deberemos introducir la contraseña que esté almacenada en el directorio LDAP para dicho usuario:

// Cambiando de usuario
root@curso:/etc/pam.d# su joel     // Somos root y cambiamos a joel
joel@curso:                         // No nos pide password
joel@curso:/etc/pam.d$ su jessica  // Somos joel, y cambiamos a jessica
Password:                               // Nos pide password, le introducimos
jessica@curso:/etc/pam.d$           // Ha cambiado correctamente

Las opciones de configuración de PAM son muy variadas. Para obtener más información se puede instalar el paquete libpam-doc que instala bastante documentación al respecto bajo la carpeta /usr/share/doc/libpam-doc/