Capítulo 16. Autenticación con PAM

Tabla de contenidos

16.1. Estructura de archivos de configuración PAM
16.2. Configuración PAM para sshd
16.3. Configuración de módulos PAM
16.4. Información adicional

Resumen

Linux utiliza PAM (Pluggable Authentication Modules, Módulos de autenticación conectables) en el proceso de autenticación como una capa que media entre el usuario y la aplicación. Los módulos PAM están disponibles para todo el sistema, por lo que los puede solicitar cualquier aplicación. Este capítulo describe cómo funciona el mecanismo de autenticación modular y cómo se configura.

Los administradores de sistemas y los programadores suelen restringir el acceso a ciertas partes del sistema o limitar el uso de ciertas funciones de una aplicación. Sin PAM, sería necesario adaptar las aplicaciones cada vez que se introdujera un nuevo mecanismo de autenticación, como LDAP o SAMBA. Sin embargo, este proceso lleva bastante tiempo y tiende a producir errores. Una manera de evitar estos inconvenientes es separar las aplicaciones del mecanismo de autenticación y delegarlas en módulos gestionados centralmente. Cuando sea necesario utilizar un nuevo esquema de autenticación, bastará con adaptar o escribir un módulo PAM adecuado para que el programa en cuestión pueda utilizarlo.

Todos los programas que se sirven del mecanismo PAM tienen su propio archivo de configuración en el directorio /etc/pam.d/nombreprograma. Estos archivos definen los módulos PAM empleados en el proceso de autenticación. Además, existen archivos de configuración globales para la mayoría de los módulos PAM en /etc/security, los cuales definen el comportamiento exacto de estos módulos (por ejemplo pam_env.conf, pam_pwcheck.conf, pam_unix2.conf y time.conf). Todas las aplicaciones que utilicen un módulo PAM llamarán a un conjunto de funciones PAM, las cuales procesarán después la información en los distintos archivos de configuración y devolverán el resultado a la aplicación que ha realizado la llamada.


16.1. Estructura de archivos de configuración PAM

Cada línea dentro de un archivo de configuración PAM contiene un máximo de cuatro columnas:

<Tipo de módulo> <Indicador de control> <Vía al módulo> <Opciones> 
  

Los módulos PAM se procesan en stacks. Los distintos tipos de módulos sirven a propósitos distintos, por ejemplo, un módulo comprueba la contraseña, otro verifica la ubicación desde la que se accede al sistema y otro lee los ajustes específicos del usuario. PAM reconoce cuatro tipos de módulos diferentes:

auth

El objetivo de este tipo de módulo es comprobar la autenticidad del usuario. Esto se hace tradicionalmente solicitando una contraseña, si bien también se puede conseguir con la ayuda de una tarjeta de chip o mediante biométrica (huellas digitales o exploración de retina).

cuenta

Los módulos de este tipo comprueban que el usuario tenga permiso general para utilizar el servicio solicitado. Por ejemplo, deberá realizarse esta comprobación para garantizar que nadie inicie sesión con el nombre de usuario de una cuenta caducada.

password

El propósito de este tipo de módulo es permitir modificar un testigo de autenticación. En la mayoría de los casos, se trata de una contraseña.

sesión

Los módulos de este tipo son responsables de gestionar y configurar sesiones de usuario. Estos módulos se inician antes y después de la autenticación para registrar intentos de inicio de sesión en los registros del sistema y para configurar el entorno específico del usuario (cuentas de correo, directorio personal, límites del sistema, etc.).

La segunda columna contiene indicadores de control para influir en el comportamiento de los módulos iniciados:

required

Los módulos con este indicador se deben procesar correctamente antes de proceder con la autenticación. Si falla un módulo con el indicador required, se procesará el resto de módulos de este tipo antes de que el usuario reciba un aviso de que se ha producido un fallo durante el intento de autenticación.

requisite

Los módulos con este indicador tienen que ser procesados correctamente, igual que los módulos con el indicador required. No obstante, si se produce un fallo en un módulo con este indicador, el usuario recibirá una notificación inmediata y no se procesarán más módulos. En caso de que no haya errores, se seguirá procesando el resto de los módulos, al igual que en el caso de los módulos con el indicador required. El indicador requisite se puede utilizar como un filtro simple con el objeto de comprobar el cumplimiento de determinadas condiciones necesarias para una correcta autenticación.

sufficient

Si se procesa correctamente un modulo con este indicador, la aplicación que lo ha iniciado recibe inmediatamente una notificación de proceso correcto y no se procesa ningún otro módulo, siempre y cuando anteriormente no haya fallado la ejecución de ningún módulo con el indicador required. El fallo de un módulo con indicador sufficient no tiene consecuencias directas y los módulos siguientes se seguirán procesando según el orden correspondiente.

optional

Que el proceso de un módulo con este indicador se lleve a cabo correctamente o haya errores no tiene consecuencias directas. Esta opción puede ser útil, por ejemplo, para módulos cuyo único cometido es mostrar un mensaje (por ejemplo informando al usuario acerca de la recepción de un mensaje de correo electrónico), sin realizar ninguna otra acción.

include

Si se da este indicador, el archivo especificado como argumento se inserta en este lugar.

La vía al módulo no tiene por qué especificarse de forma explícita siempre que el módulo se encuentre en el directorio por defecto /lib/security (en todas las plataformas de 64 bits compatibles con SUSE Linux, el directorio es /lib64/security). La cuarta columna puede contener una opción para el módulo, como debug (activa la depuración) o nullok (permite utilizar contraseñas vacías).