Ejemplos de configuración

A continuación una muestra de archivo de configuración de la aplicación PAM:

#%PAM-1.0
auth      required  /lib/security/pam_securetty.so
auth      required  /lib/security/pam_unix.so shadow nullok
auth      required  /lib/security/pam_nologin.so
account   required  /lib/security/pam_unix.so
password  required  /lib/security/pam_cracklib.so retry=3
password  required  /lib/security/pam_unix.so shadow nullok use_authtok
session   required  /lib/security/pam_unix.so

La primera línea es un comentario como lo es toda línea que inicie con el carácter (#).

Las líneas dos, tres y cuatro apilan tres módulos a usar para autenticaciones de inicio de sesión.

auth      required  /lib/security/pam_securetty.so

Este módulo se asegura de que si el usuario está tratando de conectarse como root, el tty en el cual el usuario se está conectando está listado en el archivo /etc/securetty, si ese archivo existe.

auth      required  /lib/security/pam_unix.so shadow nullok

Este módulo le solicita al usuario una contraseña y luego verifica la contraseña usando la información almacenada en /etc/passwd y, si existe /etc/shadow. El módulo pam_unix.so detecta automáticamente y utiliza contraseñas shadow para autenticar usuarios.

El argumento nullok instruye al módulo pam_unix.so a que permita una contraseña en blanco.

auth      required  /lib/security/pam_nologin.so

Este es el paso final de autenticación. Comprueba si el archivo /etc/nologin existe. Si nologin existe y el usuario no es root, la autenticación falla.

Nota

En este ejemplo, los tres módulos auth se ejecutarán, aún si el primer módulo auth falla. Esto previene al usuario de saber a qué nivel falla la autenticación. Tal conocimiento en las manos de una persona mal intencionada le permitiría violar el sistema fácilmente.

account   required  /lib/security/pam_unix.so

Este módulo realiza cualquier verificación de cuenta necesaria. Por ejemplo, las contraseñas shadow han sido activadas, el componente de la cuenta del módulo pam_unix.so verificará para ver si la cuenta ha expirado o si el usuario no ha cambiado la contraseña dentro del período de gracia otorgado.

password  required  /lib/security/pam_cracklib.so retry=3

Si la contraseña ha expirado, el componente de la contraseña del módulo pam_cracklib.so le pide una nueva contraseña. Luego evalúa la nueva contraseña para ver si puede ser fácilmente descubierta, ayudado por un programa que descubre las contraseñas basadas en diccionario. Si esto falla la primera vez, le dá al usuario dos oportunidades más de crear una contraseña más robusta debido al argumento retry=3.

password  required  /lib/security/pam_unix.so shadow nullok use_authtok

Esta línea especifica que si el programa cambia la contraseña del usuario, éste debería usar el componente password del módulo pam_unix.so para realizarlo. Esto sucederá tan sólo si la porción account del módulo pam_unix.so ha determinado que la contraseña necesita ser cambiada.

El argumento shadow le dice al módulo que cree contraseñas shadow cuando se actualiza la contraseña del usuario.

El argumento nullok indica al módulo que permita al usuario cambiar su contraseña desde una contraseña en blanco, de lo contrario una contraseña vacía o en blanco es tratada como un bloqueo de cuenta.

El argumento final de esta línea, use_authtok, proporciona un buen ejemplo de la importancia del orden al apilar módulos PAM. Este argumento advierte al módulo a no solicitar al usuario una nueva contraseña. En su lugar se acepta cualquier contraseña que fué registrada por un módulo de contraseña anterior. De este modo todas las nuevas contraseñas deben pasar el test de pam_cracklib.so para contraseñas seguras antes de ser aceptado.

session required /lib/security/pam_unix.so

La última línea especifica que el componente de la sesión del módulo pam_unix.so gestionará la sesión. Este módulo registra el nombre de usuario y el tipo de servicio en el fichero /var/log/messages al inicio y al final de cada sesión. Puede ser ampliado apilándolo con otros módulos de sesión si necesita más funcionalidad.

El próximo ejemplo de archivo de configuración ilustra el apilamiento del módulo auth para el programa rlogin.

#%PAM-1.0
auth      required    /lib/security/pam_nologin.so
auth      required    /lib/security/pam_securetty.so
auth      required    /lib/security/pam_env.so
auth      sufficient  /lib/security/pam_rhosts_auth.so
auth      required    /lib/security/pam_stack.so service=system-auth

Primero, pam_nologin.so verifica para ver si /etc/nologin existe. Si lo hace, nadie puede conectarse excepto root.

auth      required    /lib/security/pam_securetty.so

El módulo pam_securetty.so previene al usuario root de conectarse en terminales inseguros. Esto desactiva efectivamente a todos los intentos de root rlogin debido a las limitaciones de seguridad de la aplicación.

auth      required    /lib/security/pam_env.so

El módulo carga las variable de entorno especificadas en /etc/security/pam_env.conf.

auth      sufficient  /lib/security/pam_rhosts_auth.so

El módulo pam_rhosts_auth.so autentifica al usuario usando .rhosts en el directorio principal del usuario. Si tiene éxito, PAM considera inmediatamente la autenticación como exitosa. Si falla pam_rhosts_auth.so en autenticar al usuario, el intento de autenticación es ignorado.

auth      required    /lib/security/pam_stack.so service=system-auth

Si el módulo pam_rhosts_auth.so falla en autenticar al usuario, el módulo pam_stack.so realiza la autenticación de contraseñas normal.

El argumento service=system-auth indica que el usuario debe pasar a través de la configuración PAM para la autenticación del sistema como se encuentra en /etc/pam.d/system-auth.