1 PAM (Pluggable Authentication Modules)
1.1 Concepto y arquitectura modular
El PAM (Pluggable Authentication Modules) es un mecanismo flexible y modular que permite integrar diferentes métodos de autenticación en GNU/Linux sin necesidad de modificar las aplicaciones.
Actúa como una capa intermedia entre las aplicaciones que requieren autenticación (login, sudo, sshd, passwd, etc.) y los módulos de autenticación que se pueden integrar dinámicamente.
1.1.1 Ventajas principales
- Centraliza la autenticación de todos los servicios.
- Evita modificar el código de las aplicaciones.
- Permite usar distintos métodos (LDAP, biometría, tokens, 2FA…).
- Facilita políticas de seguridad y control de acceso más detalladas.
1.1.2 Arquitectura general
Figura 1. Imagen de Linux Journal
Descripción del flujo general:
- La aplicación llama a la biblioteca
libpam. - PAM lee la configuración del servicio (por ejemplo
/etc/pam.d/login). - Carga los módulos definidos, en el orden especificado.
- Cada módulo devuelve éxito o error, y PAM decide el resultado final.
- La aplicación recibe una respuesta global (acceso concedido o denegado).
1.2 Tipos de módulos
Existen cuatro tipos principales de módulos PAM, cada uno correspondiente a una fase del proceso de autenticación: auth, account, password y session.
| Tipo | Cuándo se ejecuta | Función principal | Ejemplos de módulos |
|---|---|---|---|
| auth | Al iniciar sesión | Comprueba la identidad del usuario (contraseña, token, huella, etc.) | pam_unix.so, pam_faillock.so,
pam_google_authenticator.so |
| account | Después de autenticar | Verifica si la cuenta puede usarse (vigencia, horario, terminal, etc.) | pam_unix.so, pam_access.so,
pam_time.so |
| password | Al cambiar contraseñas | Controla la actualización y complejidad de contraseñas | pam_pwquality.so, pam_cracklib.so |
| session | Al iniciar/cerrar sesión | Ejecuta acciones al abrir o cerrar sesión (montar recursos, registrar accesos, aplicar límites) | pam_limits.so, pam_env.so,
pam_lastlog.so |
Cada tipo tiene su propia pila de módulos que se ejecuta de forma independiente.
1.3 Fases de ejecución del proceso PAM
Cuando un usuario intenta iniciar sesión en un sistema Linux, el mecanismo PAM (Pluggable Authentication Modules) se encarga de gestionar todo el proceso de autenticación.
PAM no realiza la autenticación por sí mismo, sino que coordina distintos módulos que verifican la identidad del usuario, comprueban el estado de su cuenta y preparan su sesión.
PAM evalúa las reglas en orden y por
fases, pasando por cuatro etapas principales. Cada fase utiliza
módulos específicos (auth, account,
password, session) que cumplen funciones
diferentes.
1.3.1 Ejemplo del proceso PAM cuando un usuario inicia sesión
Supongamos que un usuario llamado maria inicia sesión
desde la terminal:
auth. PAM verifica su nombre de usuario y contraseña (
pam_unix.so). También comprueba si el sistema está en mantenimiento (pam_nologin.so).account. Revisa si la cuenta de
mariaestá activa y no ha caducado (pam_unix.so). Si la contraseña está expirada, se pedirá un cambio.password. Si
mariadecide cambiar su contraseña, este módulo aplica las reglas de complejidad (pam_pwquality.so).session. Si la autenticación fue correcta, PAM crea la sesión, carga las variables de entorno (
pam_env.so), muestra el mensaje del día (pam_motd.so) y registra el acceso (pam_lastlog.so).
1.4 Archivos de configuración de PAM
El funcionamiento de PAM se define mediante archivos de configuración que especifican qué módulos se ejecutan, en qué orden y cómo debe actuar el sistema ante el éxito o el fallo de cada uno.
Hay dos formatos principales para estos archivos:
/etc/pam.conf: Archivo de configuración global. Actualmente está en desuso./etc/pam.d/: Directorio que contiene un archivo de configuración por cada servicio. Es la forma utilizada en la mayoría de distribuciones modernas.
Ejemplo:
$ ls /etc/pam.d/
chfn chsh common-auth common-session cron newusers passwd runuser-l su sudo vmtoolsd
chpasswd common-account common-password common-session-noninteractive login other runuser sshd su-l sudo-iCada archivo contiene una serie de reglas, una por línea, con la siguiente estructura general:
tipo control módulo [argumentos]1.4.1 Elementos principales de una regla
| Campo | Descripción |
|---|---|
| tipo | Indica la fase del proceso de autenticación en la
que se aplica la regla. Puede ser auth,
account, password o session. |
| control | Determina la acción que realizará PAM según el resultado del módulo (éxito o fallo). |
| módulo | Especifica el nombre o la ruta del módulo que se
ejecutará (por ejemplo, pam_unix.so,
pam_nologin.so). |
| argumentos | Define los parámetros adicionales que modifican el
comportamiento del módulo (por ejemplo, retry=3,
use_authtok, debug). |
1.5 El campo control. Cómo se evalúan las reglas
El campo control define cómo afecta el resultado de cada módulo al resultado final de la pila:
| Control | Significado | Comportamiento |
|---|---|---|
| required | Obligatorio | Si falla, se sigue ejecutando el resto, pero el resultado global será fallo. |
| requisite | Obligatorio e inmediato | Si falla, se detiene la ejecución inmediatamente y se devuelve error. |
| sufficient | Suficiente | Si tiene éxito y no hay fallos previos, PAM considera la pila exitosa y no ejecuta los módulos siguientes. |
| optional | Opcional | Su éxito o fallo no afecta el resultado global, salvo que sea el único módulo del tipo. |
1.6 Ejemplo de evaluación de reglas
1.6.1 Versión simplificada del
archivo /etc/pam.d/login
A continuación se muestra un ejemplo simplificado del archivo de
configuración de PAM utilizado por el servicio
login. Este archivo define los módulos que
se ejecutarán durante el proceso de autenticación local del sistema:
auth required pam_securetty.so
auth requisite pam_nologin.so
auth sufficient pam_unix.so
auth required pam_deny.so
Evaluación paso a paso
pam_securetty.so- Comprueba si el usuario root intenta iniciar sesión
desde una terminal segura (definida en
/etc/securetty). - Si la verificación falla, el acceso no será
finalmente concedido, pero PAM seguirá evaluando el
resto de las reglas, ya que el control es de tipo
required.
- Comprueba si el usuario root intenta iniciar sesión
desde una terminal segura (definida en
pam_nologin.so- Verifica si existe el archivo
/etc/nologin. - Si el archivo está presente, el acceso se bloquea
inmediatamente para todos los usuarios excepto
root y el proceso de autenticación se
detiene, porque el control es
requisite. - Si el archivo no existe, la evaluación continúa con la siguiente regla.
- Verifica si existe el archivo
pam_unix.so- Valida el nombre de usuario y la
contraseña frente a los datos almacenados en
/etc/passwdy/etc/shadow. - Si la autenticación tiene éxito y no se han
producido fallos previos en módulos required, el control
sufficienthace que PAM detenga la pila con éxito (ya no se evalúan más módulos). - Si la autenticación falla, el proceso continúa hacia la siguiente regla.
- Valida el nombre de usuario y la
contraseña frente a los datos almacenados en
pam_deny.so- Este módulo falla siempre, y su propósito es denegar el acceso en caso de que todos los módulos anteriores no hayan autenticado correctamente al usuario.
- Actúa como una medida de seguridad final para garantizar que no se conceda acceso de manera accidental.
1.7 Módulos más comunes
A continuación, se presentan dos tablas con algunos de los módulos PAM más utilizados. La primera tabla muestra módulos para realizar autenticación y administración general, mientras que la segunda tabla muestra módulos más avanzados para realizar hardening del sistema.
Nivel Básico: Módulos para autenticación y administración general
| Módulo | Tipo | Función principal / Propósito de seguridad | Archivo o contexto habitual |
|---|---|---|---|
| pam_unix.so | auth / account / password / session | Implementa la autenticación clásica UNIX validando contraseñas en
/etc/passwd y /etc/shadow. |
/etc/pam.d/common-auth,
/etc/pam.d/common-password |
| pam_pwquality.so | password | Refuerza la fortaleza de contraseñas (longitud, complejidad,
diccionarios). Sustituye a pam_cracklib.so. |
/etc/security/pwquality.conf |
| pam_nologin.so | auth / account | Bloquea el acceso a usuarios normales si existe
/etc/nologin (modo mantenimiento). |
/etc/pam.d/login, /etc/nologin |
| pam_securetty.so | auth | Restringe el acceso de root solo a terminales seguras
definidas en /etc/securetty. |
/etc/pam.d/login, /etc/securetty |
| pam_limits.so | session | Aplica límites de uso de recursos (CPU, procesos, memoria) según
/etc/security/limits.conf. |
/etc/pam.d/common-session |
| pam_env.so | session | Carga variables de entorno del usuario desde
/etc/environment o
/etc/security/pam_env.conf. |
/etc/pam.d/common-session |
| pam_lastlog.so | session | Muestra el último inicio de sesión y actualiza el registro
lastlog. |
/etc/pam.d/login |
| pam_motd.so | session | Muestra el “mensaje del día” (MOTD) al iniciar sesión. | /etc/pam.d/login, /etc/pam.d/sshd |
| pam_deny.so | auth / account / password / session | Deniega siempre el acceso; se usa al final de las pilas como medida de seguridad. | Al final de cualquier pila de reglas |
| pam_permit.so | auth / account / password / session | Siempre concede acceso; se usa solo para pruebas o configuraciones por defecto. | Configuraciones básicas del sistema |
Nivel Avanzado: Módulos para hardening del sistema
| Módulo | Tipo | Función principal / Propósito de seguridad | Archivo o contexto habitual |
|---|---|---|---|
| pam_faillock.so | auth / account | Previene ataques de fuerza bruta bloqueando cuentas tras varios intentos fallidos. | /etc/pam.d/common-auth,
/etc/security/faillock.conf |
| pam_google_authenticator.so | auth | Implementa autenticación multifactor (2FA) basada en códigos TOTP. | /etc/pam.d/sshd |
| pam_access.so | account | Controla el acceso según usuario, grupo, TTY o dirección IP (según
/etc/security/access.conf). |
/etc/pam.d/login,
/etc/security/access.conf |
| pam_time.so | account | Restringe el acceso de usuarios en función del horario o día de la semana. | /etc/pam.d/login,
/etc/security/time.conf |
| pam_selinux.so | session | Configura el contexto de seguridad de SELinux al iniciar sesión. | /etc/pam.d/login, /etc/pam.d/sshd |
| pam_mkhomedir.so | session | Crea automáticamente el directorio /home/usuario si no
existe (útil con LDAP/NIS). |
/etc/pam.d/common-session |
| pam_loginuid.so | session | Asigna un identificador único de sesión, útil para auditoría y trazabilidad. | /etc/pam.d/login, /etc/pam.d/sshd |
| pam_systemd.so | session | Integra la sesión del usuario con systemd-logind para
una gestión moderna de sesiones. |
/etc/pam.d/common-session |
| pam_keyinit.so | session | Crea un nuevo keyring de sesión del kernel para almacenamiento seguro de claves o tokens. | /etc/pam.d/common-session |
| pam_access.so | account | Refuerza las políticas de acceso combinando restricciones por IP, grupo o usuario. | /etc/security/access.conf |
1.8 Depuración y análisis
La depuración en PAM permite analizar el flujo de ejecución de los módulos y detectar posibles errores de autenticación o configuración.
Es una herramienta muy útil durante tareas de auditoría o bastionado de sistemas.
Para ver cómo se ejecutan los módulos, se puede activar el modo debug en la línea correspondiente del archivo PAM.
Ejemplo:
auth required pam_unix.so debugCon esta opción, el módulo registrará información adicional sobre cada paso del proceso de autenticación (inicio, verificación, resultado, errores, etc.).
Los mensajes generados por PAM se almacenan en los registros del sistema, que pueden consultarse con el comando:
sudo tail -f /var/log/auth.logo con el comando:
sudo journalctl -xe | grep pamNota: Las opciones
-xeenjournalctlpermiten ver mensajes detallados y de error relacionados con PAM.
-x: Muestra explicaciones adicionales para los mensajes.
-e: Salta al final del registro para ver los mensajes más recientes.
1.9 Integración de PAM con políticas de seguridad
PAM permite implementar políticas de seguridad avanzadas que refuerzan la autenticación y reducen riesgos:
| Política de seguridad | Módulo / Archivo | Descripción |
|---|---|---|
| Bloqueo tras intentos fallidos | pam_faillock.so |
Bloquea temporalmente la cuenta después de varios intentos fallidos. |
| Contraseñas seguras | pam_pwquality.so o pam_cracklib.so |
Exige contraseñas con longitud, mezcla de caracteres y sin coincidencias con diccionarios. |
| Expiración de contraseñas | /etc/login.defs, chage |
Define la validez y caducidad de las contraseñas. |
| Restricciones de horario o terminal | pam_time.so, pam_securetty.so |
Limita accesos según hora o dispositivo. |
| Límites de recursos | pam_limits.so |
Controla el uso de CPU, procesos o memoria por usuario. |
| Segundo factor de autenticación (2FA) | pam_google_authenticator.so |
Añade verificación adicional mediante códigos TOTP. |
Estas políticas suelen combinarse dentro de los archivos comunes
(/etc/pam.d/common-auth, common-password,
etc.) para aplicarse a múltiples servicios del sistema.
1.10 /etc/nologin y
control de mantenimiento
El archivo /etc/nologin es un mecanismo
que permite bloquear temporalmente el acceso de los usuarios
normales. Cuando este archivo existe, el módulo
pam_nologin.so deniega el acceso a todos los usuarios
excepto al superusuario root, mostrando el contenido
del archivo como mensaje informativo.
Ejemplo de uso:
echo "El sistema está en mantenimiento. Inténtelo más tarde." | sudo tee /etc/nologin > /dev/nullPara reactivar los logins:
sudo rm /etc/nologinEste mecanismo se utiliza habitualmente durante tareas de mantenimiento o reinicios planificados.
1.11 Buenas prácticas de seguridad con PAM
- Restringir accesos de root a terminales seguras
mediante
pam_securetty.so. - Bloquear cuentas tras varios intentos fallidos con
pam_faillock.so. - Evitar contraseñas débiles con
pam_pwquality.soopam_cracklib.so. - Aplicar límites de recursos a usuarios con
pam_limits.so. - Implementar autenticación multifactor (2FA) en
servicios críticos (
sshd,sudo). - Auditar accesos con
pam_lastlog.soy revisar/var/log/auth.log. - Proteger archivos sensibles de PAM con permisos
adecuados (
chmod 644, propiedad root). - Probar la configuración antes de aplicarla globalmente (para evitar bloqueos).
1.12 Bastionado del sistema PAM en Ubuntu según las recomendaciones del CIS
¿Qué es el CIS?
El CIS (Center for Internet Security) es una organización sin fines de lucro que proporciona directrices y mejores prácticas para la seguridad informática.
¿Qué son los CIS Benchmarks?
Los CIS Benchmarks son conjuntos de mejores prácticas de seguridad para sistemas y aplicaciones. Estos benchmarks son desarrollados mediante un proceso de consenso entre expertos en seguridad y son utilizados por organizaciones para evaluar y mejorar su postura de seguridad.
Bastionado de PAM según el CIS Benchmark para Ubuntu Linux 24.04
Consulte la guía oficial del CIS Benchmark for Ubuntu Linux 24.04 para obtener recomendaciones detalladas sobre el bastionado de PAM en sistemas Ubuntu.
1.13 Ejercicios prácticos
1.13.1 Ejercicio 1. Crea una aplicación en Python que utilice PAM para autenticación
En esta práctica tendrá que desarrollar una aplicación sencilla en Python que integre la autenticación del sistema mediante PAM (Pluggable Authentication Modules), permitiendo validar usuarios y contraseñas del sistema Linux de forma segura.
En esta unidad hemos visto que PAM (Pluggable Authentication Modules) es una capa de autenticación modular que permite a las aplicaciones usar distintos métodos de validación (contraseña, biometría, 2FA, etc.) sin necesidad de modificar su código.
El paquete python-pam actúa como interfaz entre Python y
la biblioteca PAM del sistema, permitiendo autenticar usuarios
directamente contra la configuración definida en /etc/pam.d/.
Paso 1. Crea un entorno virtual de Python
En primer lugar, asegúrate de tener instalado el paquete
python3-venv para crear entornos virtuales en Python:
sudo apt install python3-venvLuego, crea un entorno virtual y actívalo:
python3 -m venv venv
source venv/bin/activatePaso 2. Instala las dependencias necesarias
Instala las librerías requeridas para usar PAM desde Python:
pip install python-pam
pip install sixPaso 3. Crea el script de Python
Crea el archivo app.py con el siguiente contenido:
#!/usr/bin/env python3
import pam
import getpass
def autenticar_usuario():
p = pam.pam()
usuario = input("Usuario: ")
password = getpass.getpass("Contraseña: ") # El texto no se muestra al escribir
if p.authenticate(usuario, password):
print(f"Autenticación correcta. Bienvenido, {usuario}.")
else:
print("Error de autenticación. Usuario o contraseña incorrectos.")
if __name__ == "__main__":
autenticar_usuario()Paso 4. Ejecuta la aplicación
python app.pyVerifica que el programa reconoce las credenciales del sistema y no acepta contraseñas incorrectas.
1.13.2 Ejercicio 2: Configuración
de bloqueo de usuarios con pam_faillock.so
En esta práctica vamos a implementar una política de seguridad en el
sistema GNU/Linux mediante el módulo pam_faillock.so, de
forma que:
- Las cuentas de usuario se bloqueen automáticamente tras 5 intentos fallidos de autenticación consecutivos.
- El bloqueo tenga una duración de 15 minutos (900 segundos).
- Solo el administrador (
root) pueda desbloquear antes de ese tiempo.
El módulo pam_faillock.so forma parte del sistema
PAM (Pluggable Authentication Modules) y se utiliza
para:
- Registrar intentos fallidos de autenticación.
- Bloquear usuarios que superen un número máximo de intentos.
- Evitar ataques de fuerza bruta o diccionario.
Los bloqueos se registran en el directorio:
/var/run/faillock/.
Paso 1. Instalar el paquete necesario
Comprueba que el módulo PAM está instalado:
sudo apt install libpam-modules -yPaso 2. Hacer copia de seguridad de los archivos PAM
Antes de modificar los archivos, es una buena práctica guardar una copia:
sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak
sudo cp /etc/pam.d/common-account /etc/pam.d/common-account.bakPaso 3. Configurar el archivo
/etc/pam.d/common-auth
Edita el archivo con privilegios de root:
sudo nano /etc/pam.d/common-authAñade las siguientes líneas al principio del
archivo, antes de cualquier otra regla auth:
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900La primera línea se ejecuta antes de pedir la contraseña, en esta línea PAM revisa si el usuario está bloqueado. Si lo está, deniega el acceso inmediatamente sin perdir la contraseña.
Los parámetros utilizados en la primera línea son:
| Parámetro | Significado |
|---|---|
auth |
Indica que esta regla pertenece a la fase de autenticación. |
required |
Si este módulo falla, el resultado global será fallo (aunque se sigan ejecutando los demás). |
pam_faillock.so |
Módulo que gestiona los intentos fallidos de login. |
preauth |
Comprueba si el usuario ya está bloqueado antes de autenticarlo. |
silent |
No muestra mensajes adicionales al usuario. |
audit |
Envía registros de auditoría al sistema
(/var/log/auth.log o journalctl). |
deny=5 |
Bloquea la cuenta tras 5 intentos fallidos consecutivos. |
unlock_time=900 |
Desbloquea automáticamente después de 900 segundos (15 minutos). |
La segunda línea se ejecuta el módulo clásico
pam_unix.so, que valida la contraseña del usuario frente al
archivo /etc/shadow.
Los parámetros utilizados en la segunda línea son:
| Parámetro | Significado |
|---|---|
success=1 |
Si la autenticación tiene éxito, se salta una línea, es decir, pasa a la siguiente regla después de la siguiente. |
default=bad |
Si la autenticación falla, se marca el resultado como fallido. |
La tercera línea se ejecuta si la autenticación ha fallado. Registra el intento fallido y, si se alcanza el límite, bloquea la cuenta.
Los parámetros utilizados en la tercera línea son:
| Parámetro | Significado |
|---|---|
authfail |
Indica que esta ejecución se produce tras un intento fallido. |
audit |
Registra el intento fallido en los logs. |
deny=5 |
Bloquea la cuenta tras 5 intentos consecutivos fallidos. |
unlock_time=900 |
Desbloquea después de 15 minutos. |
[default=die] |
Si el módulo falla, se detiene la pila de autenticación inmediatamente. |
Paso 4. Configurar el archivo
/etc/pam.d/common-account
Edita el archivo /etc/pam.d/common-account y asegúrate
de incluir la siguiente línea al principio del
archivo:
account required pam_faillock.soEsta línea garantiza que se compruebe el estado de bloqueo del usuario antes de permitir el acceso.
Paso 5. Crear un usuario de prueba
Crea un usuario normal para probar la configuración:
sudo adduser pruebaPaso 6. Probar el bloqueo de cuenta
Inicia sesión con el usuario creado:
su - pruebaIntroduce una contraseña incorrecta 5 veces seguidas y en el sexto intento deberías ver un mensaje indicando que la cuenta está bloqueada.
Nota: Puede ejecutar el comando
journalctl -fen otra terminal para ver los mensajes de PAM en tiempo real.
Paso 7. Verificar el bloqueo
Consulta la información del bloqueo:
sudo faillock --user pruebaPaso 8. Desbloquear manualmente al usuario
Si necesitas desbloquear al usuario antes de los 15 minutos puedes ejecutar este comando:
sudo faillock --user prueba --resetPaso 9. Revisar los archivos de log del sistema
Para analizar los eventos generados por PAM puede ejecutar el comando:
sudo grep pam_faillock /var/log/auth.logO bien:
sudo journalctl -f | grep pam_faillockCuestiones para reflexionar
- ¿Qué ocurre si cambias
unlock_time=0? - ¿Dónde se almacenan los archivos de bloqueo de
pam_faillock? - ¿Qué ventajas tiene usar este módulo frente a herramientas externas
como
fail2ban?
1.13.3 Ejercicio 3. Definición y
aplicación de la política de contraseñas con
pam_pwquality
En esta práctica vamos a configurar el módulo
pam_pwquality.so para exigir contraseñas con los siguientes
requisitos mínimos:
- Longitud mínima de 12 caracteres.
- Deben incluir mayúsculas, minúsculas y símbolos.
- Rechazar contraseñas débiles o demasiado similares a las anteriores.
El módulo pam_pwquality.so, que
sustituye al antiguo pam_cracklib.so, verifica la
fortaleza de las contraseñas cuando un usuario las crea
o modifica. Forma parte de la fase
password del sistema PAM.
El archivo principal de configuración de este módulo se encuentra en la ruta:
/etc/security/pwquality.conf
La función principal de pam_pwquality.so es:
- Evalúa la contraseña según longitud, tipos de caracteres y diccionarios.
- Devuelve un error si la contraseña no cumple las reglas establecidas.
Paso 1. Instalar el paquete necesario
Asegúrate de tener instalado el paquete correspondiente:
sudo apt install libpam-pwquality -yPaso 2. Editar el archivo
/etc/pam.d/common-password
Abre el archivo con privilegios de administrador:
sudo nano /etc/pam.d/common-passwordBusca una línea similar a esta:
password requisite pam_pwquality.so retry=3Tenga en cuenta que pueda variar ligeramente según la distribución o versión de Linux.
Si no existe, añádela al principio del bloque de
contraseñas, justo antes de pam_unix.so:
password requisite pam_pwquality.so retry=3
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512Los parámetros utilizados en la línea que hemos añadido son:
| Elemento | Descripción |
|---|---|
password |
Indica que la regla pertenece al módulo de gestión de contraseñas dentro de PAM. |
requisite |
Si la verificación falla, PAM aborta el cambio de contraseña inmediatamente. |
pam_pwquality.so |
Módulo que verifica la complejidad y fortaleza de las contraseñas nuevas. |
retry=3 |
Permite hasta tres intentos de introducir una contraseña válida antes de cancelar el proceso. |
Paso 3. Editar las reglas en
/etc/security/pwquality.conf
Abre el archivo de configuración:
sudo nano /etc/security/pwquality.confY añade o modifica las siguientes líneas:
# --- Política de contraseñas seguras ---
minlen = 12
minclass = 3
maxrepeat = 3
maxsequence = 3
usercheck = 1
enforce_for_rootA continuación se explica el significado de cada parámetro.
| Parámetro | Significado |
|---|---|
| minlen = 12 | Longitud mínima de la contraseña. |
| minclass = 3 | Exige al menos 3 clases de caracteres entre: mayúsculas, minúsculas, dígitos y símbolos. |
| maxrepeat = 3 | No permite más de 3 caracteres idénticos consecutivos. |
| maxsequence = 3 | Evita secuencias como “abcd” o “1234”. |
| usercheck = 1 | Rechaza cualquier contraseña que contenga el nombre de usuario completo. |
| enforce_for_root | Aplica la política incluso al superusuario (root). |
Paso 4. Cambia la contraseña de un usuario
Cambia la contraseña del usuario actual o de un usuario de prueba:
sudo passwd pruebaIntenta establecer contraseñas inseguras y observa los mensajes de error.
Después, prueba con una contraseña que cumpla los requisitos.
Paso 5. Verificación y logs
Los intentos de cambio de contraseña quedan registrados en:
/var/log/auth.log
Puedes revisar los fallos o rechazos con el comando:
sudo grep pwquality /var/log/auth.logCuestiones para reflexionar
- ¿Qué ocurre si estableces
minclass = 4? - ¿Por qué es útil la opción
reject_usernameen entornos corporativos? - ¿Debería aplicarse esta política también a
root? ¿Por qué? - ¿Dónde se almacena la configuración global de las políticas de contraseñas?
1.13.4 Ejercicio 4. Habilitar 2FA con Google Authenticator
Siga los pasos de este tutorial para configurar la autenticación de dos factores (2FA) en su servidor Ubuntu utilizando Google Authenticator y PAM:
Referencias:
- Obtener códigos de verificación con Google Authenticator
- Solucionar problemas habituales con la verificación en dos pasos
1.14 Recursos
Videos
- Video PAM - 1. Alberto Molina Coballes
- Video PAM - 2. Alberto Molina Coballes
- Video. Linux Account Security and PAM. Red Hat Enterprise Linux.
PDFs
- Pluggable Authentication Modules (PAM). I. González Sosa y M. Padrón Martínez.
- Módulos PAM. J.A. Martín Bejarano Sánchez.
- Autenticación de acceso PAM. E. V. Bonet Esteban.
Web
- PAM Tutorial.
- Documentación PAM. Arch Linux.