Garantir que PAM impose les exigences de mot de passe - Empêcher l'usage de mots du dictionnaire
Définit dictcheck = 1 dans pwquality afin que PAM rejette les mots de passe fondés sur des mots du dictionnaire, empêchant les identifiants faciles à deviner.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.
Pourquoi cette règle
La robustesse d'un mot de passe mesure sa résistance aux attaques par devinette et force brute. Les mots de passe construits à partir de mots du dictionnaire sont nettement plus faibles car les attaquants lancent d'abord des attaques par dictionnaire et listes de mots, ils tombent en quelques secondes quelle que soit leur longueur. Activer dictcheck fait rejeter ces mots de passe par pwquality au moment du changement, fermant l'une des voies les plus courantes de compromission d'identifiants.
Ce que vérifie Pavois
Pavois lit la configuration pwquality effective en parcourant /etc/security/pwquality.conf et chaque drop-in sous /etc/security/pwquality.conf.d/, en conservant la dernière valeur dictcheck= (celle qui l'emporte) et en exigeant qu'elle soit >= 1. Résoudre la priorité des drop-ins fusionnés est ce qu'un contrôle mono-fichier raterait.
describe command('v=$(grep -rh \'^[[:space:]]*dictcheck[[:space:]]*=\' /etc/security/pwquality.conf /etc/security/pwquality.conf.d/ 2>/dev/null | tail -1 | grep -oE \'[-]?[0-9]+\'); { [ -n "$v" ] && [ "$v" -ge 1 ] && echo ok; } || echo ko') do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Lancez grep -rh '^[[:space:]]*dictcheck' /etc/security/pwquality.conf /etc/security/pwquality.conf.d/ | tail -1, la ligne effective doit indiquer dictcheck = 1. Testez ensuite en conditions réelles : lancez passwd et essayez un mot courant du dictionnaire (par ex. password) ; il doit être rejeté comme fondé sur un mot du dictionnaire.
Inspecter et investiguer
Les rejets PAM sont journalisés dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL) ; cherchez les messages pam_pwquality du type « it is based on a dictionary word ». journalctl -t passwd montre aussi les tentatives de changement de mot de passe. Le réglage effectif se confirme depuis les drop-ins fusionnés de pwquality.conf.d.
Remédiation
pavois harden apply écrit le réglage keyval dictcheck = 1 dans le drop-in /etc/security/pwquality.conf.d/99-Pavois.conf, surchargeant les valeurs par défaut de la distribution. Aucun redémarrage n'est requis, PAM prend le changement en compte au prochain passwd / à la prochaine authentification.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| file | /etc/security/pwquality.conf.d/99-pavois.conf |
|---|---|
| key | dictcheck |
| resource | keyval |
| value | 1 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Seuls les mots de passe nouveaux ou modifiés sont concernés ; les mots de passe existants continuent de fonctionner, il n'y a donc pas de risque de verrouillage à l'application. Les utilisateurs peuvent être surpris de voir leurs mots de passe habituels refusés car proches de mots du dictionnaire, communiquez la politique et orientez-les vers des phrases de passe. Les outils automatisés définissant des mots de passe à base de mots échoueront ; mettez-les à jour avant d'imposer la règle à tout le parc.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 5.3.3.2.6 | direct | per OS, see the benchmark table | haute |
| NIST | CM-6(a), IA-5(1)(a), IA-5(4), IA-5(c) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| DISA STIG | UBTU-22-611030, UBTU-24-300014 | direct | per OS STIG release | haute |
Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.