5.3. Configuración de los archivos necesarios

[Warning]Aviso

Tenga en cuenta que va a modificar archivos de configuración utilizados para el ingreso al sistema. Sería recomendable que tuviese en todo momento una consola de root abierta, por si deja de funcionar la autentificación.

5.3.1. /etc/nsswitch.conf

nsswitch.conf es el fichero de configuración de las Bases de Datos del Sistema y del sistema de Conmutación de los Servicios de Nombres (Name Service Switch).

En otras palabras, es un archivo que indica el orden y el procedimiento a seguir para la búsqueda de la información requerida, por ejemplo, para hacer búsquedas de hosts o usuarios.

La forma de configurar este archivo es muy simple: primero se especifica la base de datos sujeta a la búsqueda (primera columna) seguida del procedimiento que se va a emplear para realizar una búsqueda sobre la misma (columnas siguientes).

De esta forma, basta con configurar el procedimiento de búsqueda para que haga uso de LDAP en algún momento. El Ejemplo 5.7, “Modificaciones en el de configuración /etc/nsswitch.conf” muestra como hacerlo:

Ejemplo 5.7. Modificaciones en el de configuración /etc/nsswitch.conf

passwd: 1         files ldap 2
group: 3          files ldap 4
shadow: 5         files ldap 6
hosts: 7          files ldap dns 8
1 3 5 7

Bases de datos de búsqueda

2 4 6

Procedimiento de búsqueda: primero se mira en los archivos locales y luego en el directorio LDAP.

8

Procedimiento de búsqueda: primero se mira en los archivos locales, luego en el directorio LDAP y finalmente se realiza una consulta al servidor DNS.

[Note]Nota

En el Apéndice S, Archivo de configuración /etc/nsswitch.conf se encuentra disponible un ejemplo completo de configuración de nsswitch.conf.

[Tip]Sugerencia

Fíjese que no se ha eliminado el uso de los ficheros locales, “files”, ya que algunos usuarios y grupos de usuarios (como por ejemplo root) permanecerán de forma local. Si su sistema no utiliza la entrada “files”, y el servidor LDAP se cae, nadie, ni siquiera root, podrá entrar al sistema.

nss-ldap espera que las cuentas sean objetos con los siguientes atributos: uid, uidNumber, gidNumber, homeDirectory y loginShell. Estos atributos están permitidos por la clase objeto (objectClass) posixAccount.

Una vez realizada la configuración, se puede comprobar que todo funciona bien con el comando getent seguido de la base de datos de búsqueda deseada (por ejemplo: /usr/bin/getent hosts). Como resultado se mostrará la base de datos consultada por pantalla.

5.3.2. Configuración de PAM

PAM permite configurar el método de autentificación que van a utilizar las aplicaciones que hagan uso de él. Gracias a esto, se pueden añadir fácilmente distintas opciones de autentificación, como el uso de una base de datos LDAP.

En las siguientes secciones se mostrarán los archivos que se han de modificar para lograr la autentificación a través de LDAP.

[Important]Importante

Hace relativamente poco tiempo que la versión en desarrollo de Debian (Sid) ha cambiado la forma de configuración de PAM. Actualmente posee secciones comunes a todos los archivos, estas secciones comunes son aquellos archivos localizados en el directorio /etc/pam.d/ que comiencen por “common-”.

Se ha de tener en cuenta la forma en la que se ha ido actualizando Debian Sid en la última temporada, para determinar si su sistema está utilizando o no dichos archivos comunes para la configuración de PAM.

Un buen punto de partida, sería ojear los archivos almacenados bajo /etc/pam.d/ y comprobar las diferencias entre los archivos con extensión .dpkg-dist y los que no la tienen.

pam-ldap asume que las cuentas del sistema son objetos con los siguientes atributos: uid y userPassword. Los atributos están permitidos por la clase objeto (objectClass) posixAccount.

5.3.2.1. /etc/pam.d/common-account

Este archivo ha de tener únicamente estas entradas:

Ejemplo 5.8. Opciones de configuración para /etc/pam.d/common-account

account required          pam_unix.so
account sufficient        pam_ldap.so
[Note]Nota

En el Apéndice V, Archivo de configuración /etc/pamd.d/common-account tiene un ejemplo completo de este archivo de configuración.

5.3.2.2. /etc/pam.d/common-auth

Este archivo ha de tener únicamente estas entradas:

Ejemplo 5.9. Opciones de configuración para /etc/pam.d/common-auth

auth     sufficient     pam_unix.so
auth     sufficient     pam_ldap.so try_first_pass
auth     required       pam_env.so
auth     required       pam_securetty.so
auth     required       pam_unix_auth.so
auth     required       pam_warn.so
auth     required       pam_deny.so
[Note]Nota

En el Apéndice W, Archivo de configuración /etc/pamd.d/common-auth tiene un ejemplo completo de este archivo de configuración.

5.3.2.3. /etc/pam.d/common-session

Este archivo ha de tener únicamente estas entradas:

Ejemplo 5.10. Opciones de configuración para /etc/pam.d/common-session

session required        pam_limits.so
session required        pam_unix.so
session optional        pam_ldap.so

Si desea que el sistema sea capaz de crear directorios home “al vuelo” (piense en el siguiente caso: acaba de añadir un usuario en la base de datos LDAP, pero no ha creado un directorio home para este usuario en el sistema), puede utilizar el módulo pam_mkhomedir para este propósito. Para ello añada la siguiente línea al principio del archivo common-session:

Ejemplo 5.11. Opción para crear directorios home al vuelo

session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
[Important]Importante

El módulo pam_mkhomedir sólo crea directorios de un nivel. Es importante tener esto en cuenta para planificar la estructura del home de los usuarios.

[Note]Nota

En el Apéndice Y, Archivo de configuración /etc/pamd.d/common-session tiene un ejemplo completo de este archivo de configuración.

5.3.2.4. /etc/pam.d/common-passwd

Este archivo ha de tener únicamente estas entradas:

Ejemplo 5.12. Opciones de configuración para /etc/pam.d/common-password

password required       pam_cracklib.so 1 retry=3 minlen=8 difok=4
password sufficient     pam_unix.so use_authtok md5 shadow
password sufficient     pam_ldap.so use_authtok
password required       pam_warn.so
password required       pam_deny.so
1

Se supone que tiene instalado en su sistema la librería libpam-cracklib, si no es así, instálela o comente esta línea.

[Note]Nota

En el Apéndice X, Archivo de configuración /etc/pamd.d/common-password tiene un ejemplo completo de este archivo de configuración.

5.3.2.5. Comprobando que todo funciona

Ahora que ya está el sistema preparado para hacer uso de LDAP en la autentificación de los usuarios, sería recomendable hacer algunas pruebas con la nueva configuración para ver si todo funciona correctamente.

El comando pamtest puede ayudar a realizar estas pruebas. pamtest acepta dos parámetros: el primero es el nombre del servicio al cual se va a conectar para realizar la autentificación, el segundo es el nombre del usuario que se va a autentificar sobre dicho servicio. Veamos unos ejemplos:

[Note]Nota

El comando pamtest se encuentra en el paquete libpam-dotfile, por lo que si no está disponible en su sistema, ha de ejecutar:

# /usr/bin/apt-get install libpam-dotfile

Ejemplo 5.13. Comprobando la configuración del sistema con pamtest

$ /usr/bin/pamtest passwd sergio
Trying to authenticate <sergio> for service <passwd>.
Password:[Clave del usuario]
Authentication successful.
$ /usr/bin/pamtest ssh sergio
Trying to authenticate <sergio> for service <ssh>.
Password:[Clave fallida del usuario]
Failed to authenticate: Authentication service cannot retrieve authentication info.
$ /usr/bin/pamtest ssh sergio
Trying to authenticate <sergio> for service <ssh>.
Password:[Clave del usuario]
Authentication successful.

Una vez se ha llegado a este punto, el sistema ya está preparado para autentificar a los usuarios a través de LDAP. En el apartado dedicado a Samba (Parte II) veremos, entre otras cosas, como añadir usuarios a la base de datos LDAP.