16.4. Muestras de archivos de configuración PAM

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

#%PAM-1.0
auth      required  pam_securetty.so
auth      required  pam_unix.so shadow nullok
auth      required  pam_nologin.so
account   required  pam_unix.so
password  required  pam_cracklib.so retry=3
password  required  pam_unix.so shadow nullok use_authtok
session   required  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 autentificaciones de inicio de sesión.

auth      required  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  pam_unix.so shadow nullok

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

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

auth      required  pam_nologin.so

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

NotaNota
 

En este ejemplo, los tres módulos auth, 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  pam_unix.so

Este módulo realiza cualquier verificación de cuenta necesaria. Por ejemplo, si 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  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 por una nueva contraseña. Luego evalúa la nueva contraseña para ver si puede ser fácilmente determinado 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  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 auth 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 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 a /var/log/messages al inicio y al final de cada sesión. Puede ser complementado 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    pam_nologin.so
auth      required    pam_securetty.so
auth      required    pam_env.so
auth      sufficient  pam_rhosts_auth.so
auth      required    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    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.

SugerenciaSugerencia
 

Para conectarse remotamente como usuario root, use OpenSSH. Para más información, consulte el Capítulo 20.

auth      required    pam_env.so

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

auth      sufficient  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    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.

SugerenciaSugerencia
 

Si no desea que se pida la contraseña cuando el control securetty fracasa, cambie el módulo pam_securetty.so de required a requisite.