Introducción
Librerías de autentificación pam-ldap y nss-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/. 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 (o /etc/ldap.conf en versiones recientes). 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 y configuración de libpam-ldap
// 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/ldap.conf . Únicamente hay que configurar los siguientes parámetros:
- Quién es el servidor LDAP (nombre o IP)
- Cuál es la base de nuestro directorio LDAP (base DN)
- Cuál es la versión de LDAP a utilizar
- Quién es el administrador del directorio
- En qué unidad organizativa se encuentran los usuarios (sustituto de /etc/passwd)
- En qué unidad organizativa se encuentran las contraseñas (sustituto de /etc/shadow)
- En qué unidad organizativa se encuentran los grupos (sustituto de /etc/group)
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/ldap.confhost 172.16.15.1 //nombre o IP del servidor LDAP
base dc=iesacarballeira,dc=com
ldap_version 3
rootbinddn cn=admin,dc=iesacarballeira,dc=com
nss_base_passwd ou=users,dc=iesacarballeira,dc=com?one
nss_base_shadow ou=users,dc=iesacarballeira,dc=com?one
nss_base_group ou=groups,dc=iesacarballeira,dc=com?one
Instalación y configuración de libnss-ldap
Para instalar la librería libnss-ldap debemos ejecutar el comando:
// 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 (o /etc/ldap.conf en versiones recientes) 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.
Asistente de instalación
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):
dc=iesacarballeira,dc=com

Acto seguido tendremos que indicar la versión de LDAP a utilizar:
la más actual -la 3- por defecto.

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 (o /etc/ldap.conf en versiones recientes) 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:
- En qué unidad organizativa se encuentran los usuarios (sustituto de /etc/passwd - en nuestro caso ou=users)
- En qué unidad organizativa se encuentran los grupos (sustituto de /etc/group - en nuestro caso ou=groups)
// Configurar en /etc/ldap.confnss_base_passwd ou=users,dc=iesacarballeira,dc=com
nss_base_group ou=groups,dc=iesacarballeira,dc=com
Configuración de NSS
// 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
Configurar servicios PAM
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:
- /etc/pam.d/common-auth (para autentificarse)
- /etc/pam.d/common-account (para disponer de una cuenta)
- /etc/pam.d/common-session (para poder iniciar sesion)
- /etc/pam.d/common-password (para poder cambiar password)
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.
Configuración archivo common-auth
// Añadir en /etc/pam.d/common-auth encima de la línea pam_unix.soauth sufficient pam_ldap.so
Además de ello, hemos de modificar la línea -añadiendo al final use_first_pass:
auth required pam_unix.so use_first_pass
Configuración archivo common-account
// Añadir en /etc/pam.d/common-account encima de la línea pam_unix.soaccount sufficient pam_ldap.so nullok_secure
Configuración archivo common-session
// Añadir en /etc/pam.d/common-session encima de la línea pam_unix.sosession sufficient pam_ldap.so
Configuración archivo common-password
// Añadir en /etc/pam.d/common-password encima de la línea pam_unix.sopassword sufficient pam_ldap.so
Configuración particular para cada servicio
Probar la autentificación
// 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/
Para información sobre cómo instalar el servidor LDAP pulsa en el enlace
Fuente:
- Curso Redes de Área Local. Aplicaciones y servicios en Linux. del isftic: http://www.isftic.mepsyd.es/formacion/materiales/85/cd/REDES_LINUX/indice.htm















