Tabla de contenidos
Resumen
PAM (del inglés Pluggable Authentication Modules) se utiliza en Linux para gestionar la comunicación entre el usuario y la aplicación durante el proceso de autenticación. Los módulos PAM están disponibles de manera centralizada y pueden ser activados desde cualquier aplicación. El contenido de este capítulo trata acerca de cómo se configura esta autenticación modular y de cómo funciona.
Frecuentemente, los administradores de sistema y desarrolladores desean limitar el acceso a determinadas zonas del sistema o la utilización de determinadas funcionalidades de una aplicación. Sin PAM, esto significaría que todas las aplicaciones tendrían que ser adaptadas cada vez que surgiera un nuevo procedimiento de autenticación como LDAP o Samba. Este método sería muy lento y sensible a posibles fallos. Si liberamos a la aplicación del trabajo de la autenticación y asignamos esta a un módulo central, estos inconvenientes desaparecen. En caso de que tenga que emplearse un nuevo esquema de autenticación, bastará con desarrollar o adaptar un módulo PAM, el cual podrá ser empleado por todas las aplicaciones.
Para cada programa que utiliza PAM, existe un archivo de configuración propio
ubicado en /etc/pam.d/<servicio>. En este archivo
se especifica qué módulos PAM deben utilizarse para la autenticación del
usuario. Los archivos de configuración globales de la mayoría de los módulos
PAM (localizados en /etc/security) determinan el
comportamiento de estos módulos (por ejemplo pam_env.conf,
pam_pwcheck.conf, pam_unix2.conf y
time.conf). Una aplicación que utiliza un módulo PAM
ejecuta un determinado conjunto de funciones PAM. Estas tratan la información
de los distintos archivos de configuración y transmiten el resultado a la
aplicación que las ha iniciado.
Una línea de un archivo de configuración PAM está compuesta, como máximo, por cuatro columnas:
<Tipo de módulo; <Marcador de control> <Ruta del módulo> <Opciones>
Los módulos PAM se procesan por lotes. Cada módulo ofrece funciones distintas. Un módulo se encarga de la comprobación de la contraseña, otro identifica desde dónde tiene lugar el acceso y otro consulta las configuraciones del sistema específicas de un usuario en concreto.
PAM reconoce cuatro tipos distintos de módulos:
auth
Los módulos de este tipo sirven para autenticar al usuario. Esta comprobación se realiza de forma tradicional mediante la solicitud de una contraseña, aunque también puede llevarse a cabo a través de una tarjeta inteligente equipada con un chip o mediante la comprobación de características biométricas (huella digital, escaneo de retina).
account
Los módulos de este tipo comprueban si el usuario está autorizado para poder utilizar el servicio solicitado. De esta manera, se evita que un usuario pueda abrir una sesión en el sistema con una cuenta que haya expirado.
password
Esta clase de módulos sirven para modificar los datos de autenticación. En la la mayoría de los casos se trata de una contraseña.
session
Estos módulos están diseñados para llevar a cabo la administración y configuración de sesiones de usuario. Los módulos de este tipo se ejecutan antes y después de la autenticación a fin de registrar los intentos de inicio de sesión y proporcionar al usuario su propio entorno personalizado de trabajo (acceso al correo, directorio raíz, limitaciones del sistema etc.)
La segunda columna contiene los marcadores de control, con los que se activan los módulos deseados:
required
El módulo debe ser procesado con éxito para que la autenticación pueda
seguir siendo procesada. En el caso de que la ejecución de un módulo
required genere un error, se procesará el resto de
módulos de este tipo antes de que el usuario reciba un aviso de que se ha
producido un problema durante su intento de autenticación.
requisite
Estos módulos tienen que ser procesados con éxito del mismo modo que los
módulos required. Si se produce un error, el usuario
recibe una notificación inmediata y no se procesan más módulos. En caso
de éxito, se sigue procesando el resto de módulos al igual que en el
caso de los required. Este marcador puede configurarse
como un filtro simple con el objeto de especificar el cumplimiento de
determinadas condiciones, necesarias para una correcta autenticación.
sufficient
Si se ejecuta con éxito un modulo de este tipo, el programa que lo ha
iniciado recibe inmediatamente una notificación de éxito y no se procesa
ningún otro módulo, siempre y cuando anteriormente no haya fallado la
ejecución de ningún módulo required. El hecho de que
la ejecución de un módulo sufficient no se complete con
éxito no supone ninguna consecuencia y los módulos siguientes siguen
siendo procesados por orden.
optional
Su correcta ejecución o error de procesamiento no tienen ninguna consecuencia. Esta opción se utiliza, por ejemplo, en el caso de módulos que informan al usuario acerca de la recepción de un correo electrónico, pero no suponen mayores consecuencias.
includeSi esta opción está presente va acompañada del archivo especificado como argumento.
La ruta del módulo no se indica explícitamente en caso de que este se
encuentre en el directorio estándar
/lib/security (o en
/lib64/security para todas las
plataformas de 64 bits soportadas por SUSE LINUX). Como cuarta columna, se
puede transferir a un módulo otra opción como, por ejemplo,
debug (modo depuración) o nullok (se
permiten contraseñas vacías).