Para especificar el modo de autentificación de cada servicio es necesario configurar los archivos que se encuentran en la carpeta /etc/pam.d/. Al final de este documento se indican los cambios necesarios en éstos archivos.
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. Su archivo de configuración se encuentra en /etc/libnss-ldap.conf. Posteriormente deberemos 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.
La instalación de ambas librerías se puede realizar mediante apt-get.
// Instalación de la librería libpam-ldap# apt-get install libpam-ldap
El archivo de configuración de la librería es el archivo /etc/pam_ldap.conf. Únicamente hay que configurar los siguientes parámetros:
Para ello las líneas que hay que modificar en el archivo de configuración son las siguientes (el valor de los parámetros es un ejemplo):
// Configurar en /etc/pam_ldap.confhost 192.168.1.239 //nombre o IP del servidor LDAP base dc=ieslapaloma,dc=com ldap_version 3 rootbinddn cn=admin,dc=ieslapaloma,dc=com nss_base_passwd ou=users,dc=ieslapaloma,dc=com?one nss_base_shadow ou=users,dc=ieslapaloma,dc=com?one nss_base_group ou=groups,dc=ieslapaloma,dc=com?one
// Instalación de la librería libnss-ldap# apt-get install libnss-ldap
Acto seguido se iniciará el asistente de configuración de dicha librería. Se puede lanzar dicho asistente más adelante mediante el comando:
// Lanzar asistente de configuración de libnss-ldap# dpkg-reconfigure libnss-ldap
Dicho asistente modificará el archivo /etc/libnss-ldap.conf que es donde se almacena la configuración de la librería. Posteriormente tendremos que editar dicho archivo manualmente para introducir algún cambio que no realiza el asistente.
La primera pregunta que nos hace el asistente es 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:
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':
Posteriormente nos preguntará si el archivo /etc/libnss-ldap debe solamente tener permisos de lectura y escritura para el usuario (root que es quién instala) o no. Como en el paso anterior hemos indicado que no necesitamos autentificación, no se almacenarán contraseñas en el archivo de configuración, por tanto podemos responder 'No':
Finalmente nos advierte que debemos modificar el archivo /etc/nsswitch.conf para que el sistema utilice el directorio LDAP como base de datos del sistema, al igual que hace con los archivos passwd, group y shadow:
Con el asistente se habrá configurado casi todo lo necesario aunque para que nuestro sistema se autentifique por LDAP, aún hay que configurar dos parámetros más:
// Configurar en /etc/libnss-ldap.confnss_base_passwd ou=users,dc=ieslapaloma,dc=com nss_base_group ou=groups,dc=ieslapaloma,dc=com
// Archivo /etc/nsswitch.conf# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Para no tener que configurar de cada uno de los servicios, existen unos archivos comunes cuyo nombre empieza por common que afectan a la mayoría de ellos y sus archivos de configuración los referencian mediante una línea @include a los archivos comunes causando el mismo el efecto que si el contenido de los archivos comunes estuviera copiado en el lugar de la línea @include. Los archivos comunes son:
Estos archivos contienen una línea que hace referencia a la librería pam_unix.so que corresponde a la autentificación contra los archivos UNIX. Para que los servicios de nuestro sistema utilicen primero las librerías pam_ldap.so para autentificar al usuario, debemos añadir la línea correspondiente a pam_ldap.so por encima de la línea correspondiente a la librería pam_unix.so en los archivos common. Así, auntentificará primero contra el servidor LDAP, y si la autentificación falla, probará despues con los archivos UNIX.
// Añadir en /etc/pam.d/common-auth encima de la línea pam_unix.soauth sufficient pam_ldap.so
// Añadir en /etc/pam.d/common-account encima de la línea pam_unix.soaccount sufficient pam_ldap.so
// Añadir en /etc/pam.d/common-session encima de la línea pam_unix.sosession sufficient pam_ldap.so
// Añadir en /etc/pam.d/common-password encima de la línea pam_unix.sopassword sufficient pam_ldap.so
// 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ñaroot@cnice-desktop:/etc/pam.d# pamtest passwd jessica Trying to authenticatefor 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 fingerroot@cnice-desktop:/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@cnice-desktop:/etc/pam.d# su joel // Somos root y cambiamos a joel joel@cnice-desktop: // No nos pide password joel@cnice-desktop:/etc/pam.d$ su jessica // Somos joel, y cambiamos a jessica Password: // Nos pide password, le introducimos jessica@cnice-desktop:/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/