Contraseñas y 2FA
Las políticas de contraseñas sólidas y la autenticación de dos factores (2FA) son dos líneas de defensa fundamentales para proteger las cuentas de los usuarios. Este artículo explica cómo configurar políticas de contraseña y habilitar la autenticación de dos factores en Ubuntu 26.04.
Políticas de contraseñas seguras
Instalación de herramientas de control de calidad de contraseñas
sudo apt install libpam-pwqualityConfigurar políticas de contraseña
Edite el archivo de configuración de calidad de la contraseña:
sudo nano /etc/security/pwquality.confOpciones de configuración comunes:
# Minimum password length
minlen = 12
# Minimum number of character classes (uppercase, lowercase, digits, special characters)
minclass = 3
# Minimum number of uppercase letters
ucredit = -1
# Minimum number of lowercase letters
lcredit = -1
# Minimum number of digits
dcredit = -1
# Minimum number of special characters
ocredit = -1
# Number of characters that must differ from the old password
difok = 5
# Prevent using the username as part of the password
usercheck = 1
# Limit consecutive identical characters
maxrepeat = 3
# Limit consecutive characters of the same class
maxclassrepeat = 4
# Reject palindrome passwords
palindrome = 1
# Reject common dictionary words
dictcheck = 1Configuración de políticas de caducidad de contraseñas
# Edit global settings
sudo nano /etc/login.defs# Maximum password age (days)
PASS_MAX_DAYS 90
# Minimum password age (days)
PASS_MIN_DAYS 7
# Password expiration warning days
PASS_WARN_AGE 14
# Minimum password length
PASS_MIN_LEN 12Configuración de políticas de contraseña para usuarios específicos
# Set maximum password age to 90 days
sudo chage -M 90 username
# Set minimum password age to 7 days
sudo chage -m 7 username
# Set 14-day expiration warning
sudo chage -W 14 username
# Immediately require password change
sudo chage -d 0 username
# View user password policy
sudo chage -l usernameHistorial de contraseñas (evitar la reutilización de contraseñas antiguas)
Edite la configuración de PAM:
sudo nano /etc/pam.d/common-passwordBusque la línea que contiene pam_unix.so y agregue el parámetro remember:
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12Esto evita que los usuarios reutilicen cualquiera de sus últimas 12 contraseñas.
Herramientas de administración de contraseñas
Administrador de contraseñas de línea de comandos: pasar
# Install
sudo apt install pass
# Initialize (requires a GPG key)
gpg --gen-key
pass init "your-gpg-id"
# Add a password
pass insert email/gmail
pass insert -m server/production # multi-line mode
# View a password
pass email/gmail
# Generate a random password
pass generate web/newsite 20
# List all passwords
pass ls
# Search
pass find gmailUsando KeePassXC
# Install
sudo apt install keepassxc
# Or use snap
sudo snap install keepassxcKeePassXC es un administrador de contraseñas gráfico rico en funciones que admite:
- Almacenamiento de base de datos de contraseñas cifradas
- Autocompletar contraseñas
- Autenticación TOTP de dos factores
- Integración del navegador
- SSH Integración del agente
Autenticador de Google (TOTP 2FA)
Instalación e inicialización
# Install the PAM module
sudo apt install libpam-google-authenticator
# Run initialization as a regular user
google-authenticatorOpciones recomendadas durante la inicialización:
Do you want authentication tokens to be time-based (y/n) y
# Choose y for time-based tokens (TOTP)
# A QR code will be displayed -- scan it with an authenticator app
# Recommended apps: Google Authenticator, Authy, Microsoft Authenticator, FreeOTP
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
# Choose y to prevent token replay
By default, a new token is generated every 30 seconds.
Do you want to change the size of the time skew window? (y/n) n
Do you want to enable rate-limiting? (y/n) y
# Choose y to limit attempt frequencyAsegúrese de guardar los códigos de respaldo de emergencia que se muestran.
Habilitación de 2FA para inicio de sesión local
sudo nano /etc/pam.d/common-authAgregue al final del archivo:
auth required pam_google_authenticator.so nullokEl parámetro nullok permite a los usuarios que no han configurado 2FA iniciar sesión normalmente. Elimínelo una vez que todos los usuarios estén configurados.
Habilitación de 2FA para el inicio de sesión SSH
# Edit PAM SSH configuration
sudo nano /etc/pam.d/sshdAgregar:
auth required pam_google_authenticator.soEdite la configuración del servidor SSH:
sudo nano /etc/ssh/sshd_config# Enable keyboard-interactive authentication
KbdInteractiveAuthentication yes
# Require key + TOTP dual authentication
AuthenticationMethods publickey,keyboard-interactiveReinicie SSH:
sudo systemctl restart sshHabilitando 2FA para sudo
sudo nano /etc/pam.d/sudoAgregar después de @include common-auth:
auth required pam_google_authenticator.soEsto requiere un código de verificación cada vez que se usa sudo.
Claves de seguridad de hardware (FIDO2/U2F)
Dispositivos compatibles
Ubuntu 26.04 admite claves de seguridad FIDO2/U2F, como:
- Serie YubiKey 5
- Clave de seguridad de Google Titán
- Feitian ePass FIDO
- Solo teclas
Instalación y configuración
# Install the PAM U2F module
sudo apt install libpam-u2f
# Install management tools
sudo apt install pamu2fcfgRegistro de una clave de seguridad
# Create configuration directory
mkdir -p ~/.config/Yubico
# Register the first key (insert the security key and touch it)
pamu2fcfg > ~/.config/Yubico/u2f_keys
# Register a backup key (append mode)
pamu2fcfg -n >> ~/.config/Yubico/u2f_keysHabilitación de la clave de seguridad para sudo
sudo nano /etc/pam.d/sudoAgregar antes de @include common-auth:
auth sufficient pam_u2f.soHabilitación de la clave de seguridad para iniciar sesión
sudo nano /etc/pam.d/gdm-passwordAgregar:
auth required pam_u2f.soHabilitación de la clave de seguridad para SSH
OpenSSH 8.2+ admite de forma nativa claves FIDO2:
# Generate a FIDO2 SSH key
ssh-keygen -t ed25519-sk -C "your_email@example.com"
# Or use a resident key (does not require the corresponding hardware key for the public key in .ssh/authorized_keys on the server)
ssh-keygen -t ed25519-sk -O resident -C "your_email@example.com"
# Deploy the public key to the server
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@serverConfiguración del flujo de autenticación PAM
Comprensión de los indicadores de control de PAM
| Bandera | Descripción |
|---|---|
required | Debe tener éxito; continúa revisando otros módulos en caso de falla |
requisite | Debe tener éxito; regresa inmediatamente en caso de falla |
sufficient | Pasa inmediatamente después del éxito; continúa comprobando el fallo |
optional | El éxito o el fracaso no afecta el resultado final |
Ejemplos de combinación de autenticación multifactor
Contraseña + TOTP:
# /etc/pam.d/common-auth
auth required pam_unix.so
auth required pam_google_authenticator.soContraseña + Clave de seguridad (clave de seguridad opcional):
auth required pam_unix.so
auth sufficient pam_u2f.so
auth required pam_google_authenticator.soPolítica de bloqueo de cuenta
Configuración del bloqueo de inicio de sesión fallido
sudo nano /etc/pam.d/common-authAgregue al principio del archivo:
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900sudo nano /etc/pam.d/common-accountAgregar:
account required pam_faillock.soDescripciones de parámetros:
deny=5: Bloqueo después de 5 fallasunlock_time=900: Bloqueo durante 900 segundos (15 minutos)
Administrar el estado de bloqueo
# View a user's failed attempts
sudo faillock --user username
# Unlock a user
sudo faillock --user username --reset
# View all locked users
sudo faillockMejores prácticas
- Utilice contraseñas de 12 caracteres o más, incluidas mayúsculas, minúsculas, dígitos y caracteres especiales.
- Utilice una contraseña diferente para cada servicio y utilice un administrador de contraseñas.
- Habilite 2FA en todos los servicios que lo admitan.
- Guarde códigos de respaldo y claves de recuperación de forma segura.
- Registre varias claves de seguridad como copias de seguridad.
- Cambie las contraseñas periódicamente, pero no con demasiada frecuencia (cada 90 días es suficiente).
- Supervise los registros de inicio de sesión fallidos para detectar temprano ataques de fuerza bruta.