Comment appliquer des politiques de complexité de mot de passe sous Linux

LinuxBeginner
Pratiquer maintenant

Introduction

Le maintien de politiques de mots de passe robustes est crucial pour la sécurisation des systèmes Linux. Ce tutoriel vous guidera à travers la compréhension des fondamentaux des politiques de mots de passe Linux, la configuration des exigences de complexité des mots de passe et l'application de ces politiques pour améliorer la sécurité globale de votre environnement Linux.

Comprendre les fichiers de politique de mots de passe Linux

Les systèmes Linux utilisent plusieurs fichiers de configuration pour gérer les politiques de mots de passe. Dans cette étape, nous allons explorer ces fichiers et comprendre leur objectif dans la gestion des mots de passe.

Exploration des fichiers de configuration des politiques de mots de passe

Commençons par examiner les principaux fichiers de configuration qui contrôlent les politiques de mots de passe dans Ubuntu :

  1. Tout d'abord, ouvrez un terminal en cliquant sur l'icône du terminal dans l'environnement de bureau.

  2. Examinons le fichier /etc/login.defs, qui contient les paramètres de base des politiques de mots de passe :

    cat /etc/login.defs | grep "^PASS_"

    Vous devriez voir une sortie similaire à celle-ci :

    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_WARN_AGE   7

    Ces paramètres contrôlent :

    • PASS_MAX_DAYS : Nombre maximum de jours pendant lesquels un mot de passe reste valide
    • PASS_MIN_DAYS : Nombre minimum de jours requis entre les changements de mot de passe
    • PASS_WARN_AGE : Nombre de jours d'avertissement avant l'expiration du mot de passe
  3. Un autre fichier important est /etc/pam.d/common-password, qui gère les paramètres PAM (Pluggable Authentication Modules) pour l'authentification par mot de passe :

    cat /etc/pam.d/common-password

    Ce fichier contient plusieurs lignes configurant la manière dont les mots de passe sont gérés, y compris les exigences de complexité.

  4. Le système utilise la bibliothèque pwquality pour appliquer la qualité des mots de passe. Vérifions si elle est installée :

    dpkg -l | grep libpwquality

    Si elle n'est pas installée, nous pouvons l'installer :

    sudo apt update
    sudo apt install -y libpam-pwquality
  5. Maintenant, examinons le fichier de configuration de la qualité des mots de passe :

    cat /etc/security/pwquality.conf

    Ce fichier peut avoir la plupart des lignes commentées avec #, ce qui signifie que les valeurs par défaut sont utilisées.

Comprendre les paramètres de la politique de mots de passe

Voici les principaux paramètres que vous pouvez configurer :

  • minlen : Longueur minimale du mot de passe
  • dcredit : Crédit pour les chiffres dans le mot de passe
  • ucredit : Crédit pour les majuscules
  • lcredit : Crédit pour les minuscules
  • ocredit : Crédit pour les caractères spéciaux
  • retry : Nombre de tentatives pour saisir un nouveau mot de passe
  • enforce_for_root : S'il faut appliquer ces politiques pour l'utilisateur root

Ces paramètres fournissent un cadre complet pour contrôler la complexité et la sécurité des mots de passe dans votre système Linux.

Configuration des politiques de mots de passe de base

Dans cette étape, nous allons configurer les politiques de mots de passe de base en modifiant le fichier /etc/login.defs pour définir les exigences de vieillissement des mots de passe.

Définition des paramètres de vieillissement des mots de passe

  1. Commençons par faire une sauvegarde du fichier d'origine :

    sudo cp /etc/login.defs /etc/login.defs.backup
  2. Maintenant, ouvrez le fichier pour l'édition en utilisant nano :

    sudo nano /etc/login.defs
  3. Dans l'éditeur, recherchez ces paramètres (utilisez Ctrl+W pour rechercher) :

    PASS_MAX_DAYS
    PASS_MIN_DAYS
    PASS_WARN_AGE
  4. Modifiez ces valeurs pour mettre en œuvre une politique de vieillissement des mots de passe plus sécurisée :

    • Remplacez PASS_MAX_DAYS de 99999 par 90 (les mots de passe expirent après 90 jours)
    • Remplacez PASS_MIN_DAYS de 0 par 7 (minimum 7 jours entre les changements de mot de passe)
    • Remplacez PASS_WARN_AGE de 7 par 14 (avertir les utilisateurs 14 jours avant l'expiration du mot de passe)
  5. Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Entrée, et quittez avec Ctrl+X.

  6. Vérifiez vos modifications :

    cat /etc/login.defs | grep "^PASS_"

    Vous devriez voir :

    PASS_MAX_DAYS   90
    PASS_MIN_DAYS   7
    PASS_WARN_AGE   14

Test de la politique sur un nouvel utilisateur

Créons un utilisateur de test pour voir comment ces politiques s'appliquent :

  1. Créez un nouvel utilisateur :

    sudo useradd -m testuser
  2. Définissez un mot de passe pour le nouvel utilisateur :

    sudo passwd testuser

    Entrez un mot de passe simple lorsque vous y êtes invité (nous le renforcerons dans les étapes suivantes).

  3. Vérifiez les informations de vieillissement du mot de passe pour le nouvel utilisateur :

    sudo chage -l testuser

    Vous devriez voir que les politiques de mots de passe ont été appliquées à ce nouvel utilisateur, affichant la date d'expiration en fonction de vos paramètres.

Notez que ces modifications ne s'appliquent qu'aux nouveaux comptes ou lorsqu'un mot de passe est modifié. Les comptes existants conservent leurs paramètres précédents jusqu'à ce que vous les mettiez à jour manuellement.

Configuration des exigences de complexité des mots de passe

Dans cette étape, nous allons configurer les règles de complexité des mots de passe pour imposer des mots de passe forts sur notre système.

Mise en place des règles de complexité des mots de passe

  1. Tout d'abord, faisons une sauvegarde du fichier de configuration PAM :

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup
  2. Maintenant, ouvrez le fichier pour l'édition :

    sudo nano /etc/pam.d/common-password
  3. Recherchez une ligne contenant pam_pwquality.so. Elle peut ressembler à ceci :

    password        requisite                       pam_pwquality.so retry=3
  4. Modifiez cette ligne pour ajouter des exigences de complexité. Remplacez-la par :

    password        requisite                       pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root

    Cette configuration signifie :

    • minlen=12 : La longueur minimale du mot de passe est de 12 caractères
    • dcredit=-1 : Au moins 1 chiffre est requis
    • ucredit=-1 : Au moins 1 lettre majuscule est requise
    • lcredit=-1 : Au moins 1 lettre minuscule est requise
    • ocredit=-1 : Au moins 1 caractère spécial est requis
    • enforce_for_root : Appliquer ces politiques également à l'utilisateur root
  5. Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Entrée, et quittez avec Ctrl+X.

Configuration de paramètres supplémentaires dans pwquality.conf

  1. Maintenant, modifions le fichier de configuration pwquality pour des contrôles supplémentaires :

    sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.backup
    sudo nano /etc/security/pwquality.conf
  2. Décommentez (supprimez le ## au début) et modifiez ces lignes, ou ajoutez-les si elles n'existent pas :

    minlen = 12
    dcredit = -1
    ucredit = -1
    lcredit = -1
    ocredit = -1
    difok = 4
    enforce_for_root = 1

    Le paramètre difok = 4 exige qu'au moins 4 caractères soient différents du mot de passe précédent.

  3. Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Entrée, et quittez avec Ctrl+X.

Test de la nouvelle politique de complexité des mots de passe

  1. Testons notre nouvelle politique en changeant le mot de passe de notre utilisateur de test :

    sudo passwd testuser
  2. Essayez d'entrer un mot de passe simple comme password123. Le système devrait le rejeter car il ne répond pas aux exigences de complexité.

  3. Essayez maintenant un mot de passe complexe qui répond à toutes les exigences, tel que Secure@Password123.

    Si vous avez tout configuré correctement, le système devrait accepter ce mot de passe.

Les exigences de complexité garantissent que les utilisateurs créent des mots de passe forts, ce qui rend plus difficile pour les attaquants de les deviner ou de les casser.

Mise en œuvre des contrôles d'historique des mots de passe

Dans cette étape, nous allons configurer les contrôles d'historique des mots de passe pour empêcher les utilisateurs de réutiliser leurs mots de passe récents.

Configuration de l'historique des mots de passe

  1. Tout d'abord, faisons une sauvegarde du fichier de configuration PAM si vous ne l'avez pas déjà fait :

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup2
  2. Ouvrez le fichier pour l'édition :

    sudo nano /etc/pam.d/common-password
  3. Recherchez une ligne contenant pam_unix.so. Elle pourrait ressembler à ceci :

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
  4. Modifiez cette ligne pour ajouter le paramètre remember. Ajoutez remember=5 à la fin de la ligne :

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

    Cela empêchera les utilisateurs de réutiliser l'un de leurs 5 mots de passe les plus récents.

  5. Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Entrée, et quittez avec Ctrl+X.

Comprendre le fonctionnement de l'historique des mots de passe

Le paramètre remember=5 indique au système de stocker les hachages des 5 derniers mots de passe pour chaque utilisateur. Lorsqu'un utilisateur tente de modifier son mot de passe, le système compare le nouveau mot de passe à ces hachages stockés pour s'assurer qu'il n'est pas réutilisé.

L'historique des mots de passe est stocké dans le fichier /etc/security/opasswd. Vérifions si ce fichier existe :

ls -la /etc/security/opasswd

S'il n'existe pas, il sera créé automatiquement lorsque le premier utilisateur modifiera son mot de passe avec la nouvelle politique en place.

Test de l'historique des mots de passe

  1. Essayons de changer le mot de passe de l'utilisateur de test plusieurs fois pour voir le mécanisme d'historique en action :

    sudo passwd testuser
  2. Définissez un mot de passe complexe comme Complex@Password1.

  3. Essayez maintenant de le changer à nouveau immédiatement :

    sudo passwd testuser
  4. Essayez de définir à nouveau le même mot de passe. Le système devrait le rejeter en raison de la politique d'historique.

  5. Essayez ceci plusieurs fois avec des mots de passe différents, puis essayez de réutiliser un mot de passe précédent. Vous devriez constater que vous ne pouvez pas réutiliser l'un de vos 5 mots de passe les plus récents.

Ce mécanisme d'historique des mots de passe ajoute une autre couche de sécurité en empêchant la réutilisation des mots de passe, ce qui est une faiblesse de sécurité courante.

Application des politiques de mots de passe aux utilisateurs existants

Dans cette dernière étape, nous allons apprendre comment appliquer nos nouvelles politiques de mots de passe aux utilisateurs existants et gérer les informations de mot de passe des utilisateurs.

Compréhension de la gestion de l'expiration des mots de passe

Lorsque vous modifiez les politiques de mots de passe dans /etc/login.defs, les nouveaux paramètres ne s'appliquent qu'aux utilisateurs nouvellement créés ou lorsque vous mettez à jour manuellement les utilisateurs existants. Voyons comment gérer les utilisateurs existants :

  1. Tout d'abord, vérifiez l'état actuel d'un compte utilisateur :

    sudo chage -l labex

    Cela affiche les informations de vieillissement du mot de passe pour l'utilisateur actuel.

  2. Pour forcer un utilisateur à changer son mot de passe à la prochaine connexion :

    sudo chage -d 0 testuser

    Cela définit la date de la dernière modification du mot de passe sur 0, forçant un changement de mot de passe à la prochaine connexion.

  3. Pour définir manuellement la date d'expiration du mot de passe :

    sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuser

    Cela définit la date d'expiration du compte à 90 jours à partir d'aujourd'hui.

Définition de l'âge maximal du mot de passe pour les utilisateurs existants

Pour appliquer la politique d'âge maximal du mot de passe à un utilisateur existant :

sudo chage -M 90 testuser

Cela définit l'âge maximal du mot de passe à 90 jours pour l'utilisateur.

Définition de l'âge minimal du mot de passe pour les utilisateurs existants

Pour appliquer la politique d'âge minimal du mot de passe à un utilisateur existant :

sudo chage -m 7 testuser

Cela définit l'âge minimal du mot de passe à 7 jours pour l'utilisateur.

Définition de l'avertissement d'expiration du mot de passe pour les utilisateurs existants

Pour appliquer la politique d'avertissement d'expiration du mot de passe à un utilisateur existant :

sudo chage -W 14 testuser

Cela définit la période d'avertissement d'expiration du mot de passe à 14 jours pour l'utilisateur.

Affichage des informations de mot de passe de l'utilisateur

Vous pouvez vérifier les informations de mot de passe d'un utilisateur à l'aide de plusieurs commandes :

  1. Afficher tous les comptes d'utilisateurs locaux :

    cat /etc/passwd
  2. Vérifier l'état du mot de passe pour un utilisateur spécifique :

    sudo passwd -S testuser
  3. Lister les utilisateurs avec un paramètre de mot de passe spécifique :

    awk -F: '($3 >= 1000) {print $1}' /etc/passwd

    Cela liste tous les utilisateurs réguliers sur le système (UID >= 1000).

Application des politiques à tous les utilisateurs

Pour appliquer les nouvelles politiques de mots de passe à tous les utilisateurs réguliers du système, vous pouvez utiliser un script simple. Voici un exemple :

for user in $(awk -F: '($3 >= 1000) && ($3 < 60000) {print $1}' /etc/passwd); do
  echo "Updating password policy for user: $user"
  sudo chage -M 90 -m 7 -W 14 $user
done

Ce script met à jour tous les utilisateurs réguliers avec nos nouvelles politiques de vieillissement des mots de passe.

En appliquant ces politiques aux utilisateurs existants, vous assurez une sécurité cohérente des mots de passe sur l'ensemble de votre système.

Résumé

Dans ce laboratoire, vous avez appris à configurer et à appliquer des politiques de mots de passe robustes sous Linux. Vous avez :

  1. Exploré les fichiers de configuration clés qui contrôlent les politiques de mots de passe
  2. Configuré des politiques de vieillissement de base des mots de passe pour garantir des mises à jour régulières des mots de passe
  3. Mis en œuvre des exigences de complexité de mot de passe fortes pour imposer des mots de passe sécurisés
  4. Mis en place des contrôles d'historique des mots de passe pour empêcher la réutilisation des mots de passe
  5. Appris à appliquer les politiques de mots de passe aux utilisateurs existants

Ces configurations de politique de mots de passe sont essentielles pour maintenir un environnement Linux sécurisé. En mettant en œuvre des exigences de mot de passe fortes, une rotation régulière des mots de passe et en empêchant la réutilisation des mots de passe, vous avez considérablement amélioré la posture de sécurité de votre système contre les accès non autorisés et les violations potentielles.

N'oubliez pas que des politiques de mots de passe efficaces ne sont qu'un aspect d'une stratégie de sécurité globale. Elles doivent être combinées à d'autres mesures de sécurité telles que les mises à jour régulières du système, une gestion appropriée des utilisateurs et une surveillance continue de la sécurité.