Skip to Content

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-pwquality

Configuration des politiques de mot de passe

Modifiez le fichier de configuration de la qualité des mots de passe :

sudo nano /etc/security/pwquality.conf

Options 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 = 1

Configuration 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 12

Dé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 username

Historique des mots de passe (empêche la réutilisation des anciens mots de passe)

Modifiez la configuration PAM :

sudo nano /etc/pam.d/common-password

Recherchez 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=12

Cela 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 gmail

Utiliser KeePassXC

# Install sudo apt install keepassxc # Or use snap sudo snap install keepassxc

KeePassXC 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-authenticator

Choix 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 frequency

Assurez-vous de sauvegarder les codes de secours d’urgence affichés.

Activation de 2FA pour la connexion locale

sudo nano /etc/pam.d/common-auth

Ajoutez à la fin du fichier :

auth required pam_google_authenticator.so nullok

Le 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/sshd

Ajouter:

auth required pam_google_authenticator.so

Modifiez 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-interactive

Redémarrez SSH :

sudo systemctl restart ssh

Activer 2FA pour sudo

sudo nano /etc/pam.d/sudo

Ajoutez après @include common-auth :

auth required pam_google_authenticator.so

Cela 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 pamu2fcfg

Enregistrement 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_keys

Activation de la clé de sécurité pour sudo

sudo nano /etc/pam.d/sudo

Ajouter avant @include common-auth :

auth sufficient pam_u2f.so

Activation de la clé de sécurité pour la connexion

sudo nano /etc/pam.d/gdm-password

Ajouter:

auth required pam_u2f.so

Activation 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@server

Configuration du flux d’authentification PAM

Comprendre les indicateurs de contrôle PAM

DrapeauDescription
requiredDoit réussir ; continue de vérifier les autres modules en cas d’échec
requisiteDoit réussir ; revient immédiatement en cas d’échec
sufficientRéussit immédiatement en cas de succès ; continue de vérifier en cas d’échec
optionalLe 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.so

Mot 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.so

Politique de verrouillage de compte

Configuration du verrouillage en cas d’échec de connexion

sudo nano /etc/pam.d/common-auth

Ajoutez 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=900
sudo nano /etc/pam.d/common-account

Ajouter:

account required pam_faillock.so

Descriptions des paramètres :

  • deny=5 : Verrouillage après 5 échecs
  • unlock_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 faillock

Meilleures pratiques

  1. 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.
  2. Utilisez un mot de passe différent pour chaque service et utilisez un gestionnaire de mots de passe.
  3. Activez 2FA sur tous les services qui le prennent en charge.
  4. Enregistrez les codes de sauvegarde et les clés de récupération en toute sécurité.
  5. Enregistrez plusieurs clés de sécurité en tant que sauvegardes.
  6. Changez les mots de passe périodiquement, mais pas trop fréquemment (tous les 90 jours suffisent).
  7. Surveillez les enregistrements de connexion ayant échoué pour détecter rapidement les attaques par force brute.