PAM

PAM (Pluggable Authentication Modules)

Autor: Francisco Isgleas Guzman
Sitio de Red: http://www.linuxparatodos.net/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Los programas que conceden accesos a usuarios en un sistema utilizan autenticación para verificar sus identidades (para establecer que un usuario es quien dice ser).

Históricamente, cada programa tiene su forma particular de realizar la autenticación. Bajo Red Hat Enterprise Linux, muchos programas son configurados para usar un proceso de autenticación centralizado llamado PAM (Pluggable Authentication Modules).

PAM utiliza una arquitectura conectable y modular, que otorga al administrador del sistema de una gran flexibilidad en establecer las políticas de autenticación para el sistema.

En la mayoría de los casos, el archivo de configuración PAM predeterminado para una aplicación que soporta PAM es suficiente. Sin embargo, algunas veces es necesario modificar el archivo de configuración. Debido a que un error en la configuración de PAM puede comprometer la seguridad del sistema, es importante que comprenda la estructura del estos archivos antes de hacer cualquier modificación

Ventajas PAM

PAM ofrece las ventajas siguientes:

Archivos de configuración y servicios PAM

El directorio /etc/pam.d/ contiene los archivos de configuración de PAM para cada aplicación tipo PAM. En versiones antiguas de PAM se utilizaba /etc/pam.conf, pero este archivo ya no se utiliza y solamente es usado si el directorio /etc/pam.d/ no existe.

Cada aplicación tipo PAM o servicios tiene un archivo dentro del directorio /etc/pam.d/. Cada uno de estos archivos llevan el nombre del servicio para el cual controla el acceso. Depende del programa tipo PAM definir el nombre de su servicio e instalar su archivo de configuración en el directorio /etc/pam.d/. Por ejemplo, el programa login define su nombre de servicio como login e instala el archivo de configuración PAM /etc/pam.d/login

Formato de archivo de configuración PAM

Cada archivo de configuración PAM contiene un grupo de directivas formateadas como sigue:

Cada aplicación tipo PAM o servicios tiene un archivo dentro del directorio /etc/pam.d/. Cada uno de estos archivos llevan el nombre del servicio para el cual controla el acceso. Depende del programa tipo PAM definir el nombre de su servicio e instalar su archivo de configuración en el directorio /etc/pam.d/. Por ejemplo, el programa login define su nombre de servicio como login e instala el archivo de configuración PAM /etc/pam.d/login

<module interface>
<control flag>
<module name>
<module arguments>

En las siguientes secciones se explican cada uno de estos elementos.

Interfaz de Modulo

Hay cuatro tipos de módulos PAM disponibles. Cada uno corresponde con un aspecto diferente del proceso de autorización:

NOTA: Un módulo individual puede proporcionar una o todas las interfaces de módulos mencionadas anteriormente. Por ejemplo, pam_unix.so proporciona todas las cuatro interfaces. En un archivo de configuración PAM, la interfaz del módulo es el primer campo a definir. Por ejemplo, una línea típica de una configuración sería: auth required pam_unix.so
Esto provoca que PAM utilice la interfaz pam_unix.so del módulo auth.

Indicadores de Control

Todos los módulos PAM generan un resultado de éxito o fracaso cuando se les llama. Los indicadores de control le dicen a PAM qué hacer con el resultado. Como los módulos pueden apilarse en un determinado orden, los indicadores de control le dan la posibilidad de fijar la importancia de un módulo con respecto al objetivo final del proceso de autenticación para el servicio.

Hay cuatro indicadores de control definidos:

IMPORTANTE: El orden en el cual se llaman los módulos required no es crítico. Las banderas o indicadores de control sufficient y requisite provocan que el orden se vuelva importante. Ahora PAM dispone de una nueva sintaxis de control de banderas que permite un control más preciso. La página man de pam.d y la documentación de PAM, ubicadas en directorio /usr/share/doc/pam-<version-number>/ (donde <version-number> es el número de versión para PAM) describe esta nueva sintaxis detalladamente.

A continuación se presenta 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 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

#%PAM-1.0
auth required pam_securetty.so
auth required pam_unix.so 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 línea pam_timestamp siguiente es común en la configuración PAM. El es la ruta completa al archivo de base de datos Berkeley DB

  • NOTA: En este ejemplo, los tres módulos auth son revisados, aún si el primer módulo auth falla. Esto previene que el usuario sepa en qué nivel la autenticación falla. 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 una nueva contraseña. Luego evalúa la nueva contraseña para ver si puede ser fácilmente determinada por un programa que descubre las contraseñas basadas en diccionarios. El argumento retry=3 especifica que si la prueba falla la primera vez, el usuario tiene dos opciones más para crear una contraseña mejor.
  • password required pam_unix.so shadow nullok use_authtok: Esta línea especifica que si el programa cambia la contraseña del usuario, debe utilizar la interfaz password del módulo pam_unix.so para hacerlo.
  • 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 fue 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/secure 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.

A continuación se presenta 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 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

#%PAM-1.0
auth required pam_securetty.so
auth required pam_unix.so 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 línea pam_timestamp siguiente es común en la configuración PAM. El es la ruta completa al archivo de base de datos Berkeley DB

  • NOTA: En este ejemplo, los tres módulos auth son revisados, aún si el primer módulo auth falla. Esto previene que el usuario sepa en qué nivel la autenticación falla. 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 una nueva contraseña. Luego evalúa la nueva contraseña para ver si puede ser fácilmente determinada por un programa que descubre las contraseñas basadas en diccionarios. El argumento retry=3 especifica que si la prueba falla la primera vez, el usuario tiene dos opciones más para crear una contraseña mejor.
  • password required pam_unix.so shadow nullok use_authtok: Esta línea especifica que si el programa cambia la contraseña del usuario, debe utilizar la interfaz password del módulo pam_unix.so para hacerlo.
  • 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 fue 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/secure 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.


Linux Para Todos
http://www.linuxparatodos.net/portal/staticpages/index.php?page=pam