# PAM - Módulos de Autenticación Pluggable {{#include ../../banners/hacktricks-training.md}} ### Información Básica **PAM (Módulos de Autenticación Pluggable)** actúa como un mecanismo de seguridad que **verifica la identidad de los usuarios que intentan acceder a los servicios informáticos**, controlando su acceso según varios criterios. Es similar a un portero digital, asegurando que solo los usuarios autorizados puedan interactuar con servicios específicos mientras potencialmente limita su uso para prevenir sobrecargas del sistema. #### Archivos de Configuración - **Los sistemas Solaris y basados en UNIX** utilizan típicamente un archivo de configuración central ubicado en `/etc/pam.conf`. - **Los sistemas Linux** prefieren un enfoque de directorio, almacenando configuraciones específicas de servicios dentro de `/etc/pam.d`. Por ejemplo, el archivo de configuración para el servicio de inicio de sesión se encuentra en `/etc/pam.d/login`. Un ejemplo de una configuración de PAM para el servicio de inicio de sesión podría verse así: ``` auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix_auth.so try_first_pass account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so ``` #### **Reinos de Gestión de PAM** Estos reinos, o grupos de gestión, incluyen **auth**, **account**, **password** y **session**, cada uno responsable de diferentes aspectos del proceso de autenticación y gestión de sesiones: - **Auth**: Valida la identidad del usuario, a menudo solicitando una contraseña. - **Account**: Maneja la verificación de cuentas, comprobando condiciones como la membresía en grupos o restricciones de horario. - **Password**: Gestiona las actualizaciones de contraseñas, incluyendo verificaciones de complejidad o prevención de ataques de diccionario. - **Session**: Gestiona acciones durante el inicio o final de una sesión de servicio, como montar directorios o establecer límites de recursos. #### **Controles de Módulo PAM** Los controles dictan la respuesta del módulo ante el éxito o el fracaso, influyendo en el proceso de autenticación general. Estos incluyen: - **Required**: El fallo de un módulo requerido resulta en un eventual fracaso, pero solo después de que se verifiquen todos los módulos subsiguientes. - **Requisite**: Terminación inmediata del proceso al fallar. - **Sufficient**: El éxito omite el resto de las verificaciones del mismo reino a menos que un módulo subsiguiente falle. - **Optional**: Solo causa fallo si es el único módulo en la pila. #### Escenario de Ejemplo En una configuración con múltiples módulos de auth, el proceso sigue un orden estricto. Si el módulo `pam_securetty` encuentra el terminal de inicio de sesión no autorizado, los inicios de sesión de root son bloqueados, sin embargo, todos los módulos aún se procesan debido a su estado de "required". El `pam_env` establece variables de entorno, potencialmente ayudando en la experiencia del usuario. Los módulos `pam_ldap` y `pam_unix` trabajan juntos para autenticar al usuario, con `pam_unix` intentando usar una contraseña previamente suministrada, mejorando la eficiencia y flexibilidad en los métodos de autenticación. ### Referencias - [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) {{#include ../../banners/hacktricks-training.md}}