Garantir que PAM impose les exigences de mot de passe - Nombre minimum de caractères différents
Définit difok = 2 dans pwquality afin qu'un nouveau mot de passe diffère de l'ancien d'au moins 2 caractères, empêchant un recyclage trivial des mots de passe.
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. Lorsqu'ils changent de mot de passe, les utilisateurs tendent à n'apporter qu'une modification minime au précédent (par ex. incrémenter un chiffre final). difok exige qu'un nombre minimum de caractères diffère de l'ancien mot de passe, afin qu'un mot de passe fraîchement changé ne ressemble pas étroitement à un mot de passe déjà compromis. À noter : sur un système déjà compromis, un mot de passe changé peut rester exposé.
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 difok= (celle qui l'emporte) et en exigeant qu'elle soit >= 2. Résoudre la priorité des drop-ins fusionnés est ce qu'une inspection mono-fichier raterait.
describe command('v=$(grep -rh \'^[[:space:]]*difok[[:space:]]*=\' /etc/security/pwquality.conf /etc/security/pwquality.conf.d/ 2>/dev/null | tail -1 | grep -oE \'[-]?[0-9]+\'); { [ -n "$v" ] && [ "$v" -ge 2 ] && echo ok; } || echo ko') do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Lancez grep -rh '^[[:space:]]*difok' /etc/security/pwquality.conf /etc/security/pwquality.conf.d/ | tail -1, la ligne effective doit indiquer difok = 2 (ou plus). Testez ensuite en conditions réelles : lancez passwd et essayez un nouveau mot de passe ne différant de l'ancien que d'un seul caractère ; il doit être rejeté comme trop similaire.
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 « is too similar to the old one ». journalctl -t passwd montre les tentatives de changement. La valeur effective se confirme depuis les drop-ins fusionnés de pwquality.conf.d.
Remédiation
pavois harden apply écrit le réglage keyval difok = 2 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 l'applique au prochain passwd.
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 | difok |
| resource | keyval |
| value | 2 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Seuls les changements de mot de passe sont concernés ; les mots de passe existants continuent de fonctionner, il n'y a donc pas de risque de verrouillage à l'application. L'effet visible est que les utilisateurs ne peuvent plus se contenter d'une modification d'un seul caractère lors d'une rotation, communiquez-le pour que les changements ne soient pas perçus comme défaillants. À noter : difok n'est vérifié que lorsque l'ancien mot de passe est connu de PAM (passwd interactif) ; un administrateur réinitialisant de force le mot de passe d'un autre utilisateur n'y est pas soumis.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 5.3.3.2.1 | direct | per OS, see the benchmark table | haute |
| NIST | CM-6(a), IA-5(1)(b), IA-5(4), IA-5(c) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| DISA STIG | UBTU-22-611040, UBTU-24-400290 | 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.