Dans cette étape, vous apprendrez à renforcer la sécurité d'un système Linux en configurant une politique de mot de passe robuste. Une politique de mot de passe forte est un contrôle de sécurité fondamental qui applique deux aspects critiques : la complexité et l'âge. Les règles de complexité garantissent que les mots de passe ne sont pas facilement devinables en exigeant un mélange de types de caractères, tandis que les règles d'âge forcent les utilisateurs à changer leurs mots de passe périodiquement, réduisant ainsi le risque de compromission des identifiants. Vous utiliserez des utilitaires Linux standard pour modifier les fichiers de configuration système et appliquer ces politiques.
Commençons par explorer la complexité des mots de passe. Sur les systèmes modernes basés sur Debian comme Ubuntu, la qualité des mots de passe est gérée par le module pam_pwquality. Sa configuration est stockée dans le fichier /etc/security/pwquality.conf.
Commençons par examiner les paramètres par défaut. Utilisez la commande cat pour visualiser le contenu du fichier de configuration. Nous utiliserons grep pour filtrer les lignes commentées et les lignes vides afin de rendre la sortie plus claire.
grep -vE '^#|^$' /etc/security/pwquality.conf
Vous pourriez voir certains paramètres par défaut ou le fichier pourrait être vide de configurations actives. Maintenant, nous allons imposer une politique plus stricte. Nous devons éditer ce fichier avec des privilèges d'administrateur, nous utiliserons donc sudo avec l'éditeur nano.
sudo nano /etc/security/pwquality.conf
Ajoutez les lignes suivantes au fichier pour appliquer notre nouvelle politique. Ces paramètres exigent que le mot de passe ait au moins 10 caractères et contienne au moins un chiffre, une lettre majuscule et une lettre minuscule.
minlen = 10
dcredit = -1
ucredit = -1
lcredit = -1
Décortiquons ces options :
minlen = 10: Définit la longueur minimale acceptable pour le mot de passe à 10 caractères.
dcredit = -1: Exige au moins un chiffre. Le nombre négatif signifie "au moins un".
ucredit = -1: Exige au moins un caractère majuscule.
lcredit = -1: Exige au moins un caractère minuscule.
Après avoir ajouté ces lignes, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y, et Enter.
Passons maintenant à la configuration de l'âge des mots de passe (expiration). Ces paramètres définissent la durée de vie maximale et minimale d'un mot de passe. Les valeurs par défaut pour les nouveaux comptes utilisateurs sont stockées dans /etc/login.defs.
Utilisez grep pour trouver les paramètres pertinents dans ce fichier.
grep -E 'PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_WARN_AGE' /etc/login.defs
Vous verrez les valeurs par défaut, qui sont souvent définies sur un nombre très élevé pour PASS_MAX_DAYS, désactivant effectivement l'expiration.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 99999
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 0
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 7
Appliquons une politique d'expiration de 9000 jours. Ouvrez le fichier avec sudo nano.
sudo nano /etc/login.defs
Trouvez la ligne PASS_MAX_DAYS et changez sa valeur de 99999 à 9000. Vous pouvez également définir PASS_MIN_DAYS à 7 pour empêcher les utilisateurs de changer leur mot de passe trop fréquemment.
## PASS_MAX_DAYS Maximum number of days a password may be used.
PASS_MAX_DAYS 9000
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
PASS_MIN_DAYS 7
## PASS_WARN_AGE Number of days warning is given before a password expires.
PASS_WARN_AGE 14
Enregistrez le fichier et quittez nano. Ces paramètres dans /etc/login.defs s'appliquent aux utilisateurs créés après cette modification. Pour appliquer la politique à un utilisateur existant, comme notre utilisateur labex, nous utilisons la commande chage.
Vérifiez d'abord les informations d'âge actuelles pour l'utilisateur labex.
sudo chage -l labex
La sortie indiquera que le mot de passe n'expire jamais.
Last password change : Jul 22, 2023
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Maintenant, utilisez chage avec l'indicateur -M pour définir le nombre maximum de jours à 9000 pour l'utilisateur labex.
sudo chage -M 9000 labex
Vérifiez le changement en consultant à nouveau les informations d'âge de l'utilisateur.
sudo chage -l labex
Vous verrez maintenant que la date Password expires a été mise à jour, et le nombre maximum de jours est fixé à 9000, appliquant ainsi avec succès la politique d'âge.
Last password change : Jul 22, 2023
Password expires : Jan 01, 2048
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 9000
Number of days of warning before password expires : 7
Vous avez maintenant configuré avec succès les politiques de complexité et d'âge des mots de passe sur votre système Linux.