Mots de passe et 2FA
Des politiques de mot de passe fortes et l’authentification à deux facteurs (2FA) sont deux lignes de défense essentielles pour protéger les comptes d’utilisateurs. Cet article explique comment configurer les stratégies de mot de passe et activer l’authentification à deux facteurs sur Ubuntu 26.04.
Politiques de mot de passe strictes
Installation des outils de contrôle de la qualité des mots de passe
sudo apt install libpam-pwqualityConfiguration des politiques de mot de passe
Modifiez le fichier de configuration de la qualité des mots de passe :
sudo nano /etc/security/pwquality.confOptions de configuration courantes :
# 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 = 1Configuration des politiques d’expiration des mots de passe
# 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 12Définition de politiques de mot de passe pour des utilisateurs spécifiques
# 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 usernameHistorique des mots de passe (empêche la réutilisation des anciens mots de passe)
Modifiez la configuration PAM :
sudo nano /etc/pam.d/common-passwordRecherchez la ligne contenant pam_unix.so et ajoutez le paramètre remember :
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12Cela empêche les utilisateurs de réutiliser l’un de leurs 12 derniers mots de passe.
Outils de gestion des mots de passe
Gestionnaire de mots de passe en ligne de commande : passer
# 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 gmailUtiliser KeePassXC
# Install
sudo apt install keepassxc
# Or use snap
sudo snap install keepassxcKeePassXC est un gestionnaire de mots de passe graphique riche en fonctionnalités prenant en charge :
- Stockage de la base de données de mots de passe cryptés
- Remplissage automatique des mots de passe
- Authentification TOTP à deux facteurs
- Intégration du navigateur
- SSH Intégration d’agent
Authentificateur Google (TOTP 2FA)
Installation et initialisation
# Install the PAM module
sudo apt install libpam-google-authenticator
# Run initialization as a regular user
google-authenticatorChoix recommandés lors de l’initialisation :
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 frequencyAssurez-vous de sauvegarder les codes de secours d’urgence affichés.
Activation de 2FA pour la connexion locale
sudo nano /etc/pam.d/common-authAjoutez à la fin du fichier :
auth required pam_google_authenticator.so nullokLe paramètre nullok permet aux utilisateurs qui n’ont pas configuré 2FA de se connecter normalement. Supprimez-le une fois que tous les utilisateurs sont configurés.
Activation de 2FA pour la connexion SSH
# Edit PAM SSH configuration
sudo nano /etc/pam.d/sshdAjouter:
auth required pam_google_authenticator.soModifiez la configuration du serveur SSH :
sudo nano /etc/ssh/sshd_config# Enable keyboard-interactive authentication
KbdInteractiveAuthentication yes
# Require key + TOTP dual authentication
AuthenticationMethods publickey,keyboard-interactiveRedémarrez SSH :
sudo systemctl restart sshActiver 2FA pour sudo
sudo nano /etc/pam.d/sudoAjoutez après @include common-auth :
auth required pam_google_authenticator.soCela nécessite un code de vérification à chaque fois que sudo est utilisé.
Clés de sécurité matérielles (FIDO2/U2F)
Appareils pris en charge
Ubuntu 26.04 prend en charge les clés de sécurité FIDO2/U2F, telles que :
- Série YubiKey 5
- Clé de sécurité Google Titan
- Feitian ePass FIDO
- Clés Solo
Installation et configuration
# Install the PAM U2F module
sudo apt install libpam-u2f
# Install management tools
sudo apt install pamu2fcfgEnregistrement d’une clé de sécurité
# 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_keysActivation de la clé de sécurité pour sudo
sudo nano /etc/pam.d/sudoAjouter avant @include common-auth :
auth sufficient pam_u2f.soActivation de la clé de sécurité pour la connexion
sudo nano /etc/pam.d/gdm-passwordAjouter:
auth required pam_u2f.soActivation de la clé de sécurité pour SSH
OpenSSH 8.2+ prend en charge nativement les clés 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@serverConfiguration du flux d’authentification PAM
Comprendre les indicateurs de contrôle PAM
| Drapeau | Description |
|---|---|
required | Doit réussir ; continue de vérifier les autres modules en cas d’échec |
requisite | Doit réussir ; revient immédiatement en cas d’échec |
sufficient | Réussit immédiatement en cas de succès ; continue de vérifier en cas d’échec |
optional | Le succès ou l’échec n’affecte pas le résultat final |
Exemples de combinaisons d’authentification multifacteur
Mot de passe + TOTP :
# /etc/pam.d/common-auth
auth required pam_unix.so
auth required pam_google_authenticator.soMot de passe + Clé de sécurité (clé de sécurité en option) :
auth required pam_unix.so
auth sufficient pam_u2f.so
auth required pam_google_authenticator.soPolitique de verrouillage de compte
Configuration du verrouillage en cas d’échec de connexion
sudo nano /etc/pam.d/common-authAjoutez au début du fichier :
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-accountAjouter:
account required pam_faillock.soDescriptions des paramètres :
deny=5: Verrouillage après 5 échecsunlock_time=900: verrouiller pendant 900 secondes (15 minutes)
Gestion de l’état de verrouillage
# View a user's failed attempts
sudo faillock --user username
# Unlock a user
sudo faillock --user username --reset
# View all locked users
sudo faillockMeilleures pratiques
- Utilisez des mots de passe de 12 caractères ou plus, y compris des majuscules, des minuscules, des chiffres et des caractères spéciaux.
- Utilisez un mot de passe différent pour chaque service et utilisez un gestionnaire de mots de passe.
- Activez 2FA sur tous les services qui le prennent en charge.
- Enregistrez les codes de sauvegarde et les clés de récupération en toute sécurité.
- Enregistrez plusieurs clés de sécurité en tant que sauvegardes.
- Changez les mots de passe périodiquement, mais pas trop fréquemment (tous les 90 jours suffisent).
- Surveillez les enregistrements de connexion ayant échoué pour détecter rapidement les attaques par force brute.