hacktricks/src/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md

54 lines
3.6 KiB
Markdown

# 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}}