Imposer l'historique des mots de passe avec use_authtok
Impose l'option use_authtok sur pam_pwhistory.so afin qu'il valide le mot de passe déjà fourni à la pile au lieu de le redemander.
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
L'option use_authtok permet à pam_pwhistory de réutiliser le nouveau mot de passe déjà collecté par un module antérieur de la pile password, afin que plusieurs modules (qualité, historique, unix) valident le même jeton sans redemander à l'utilisateur. Sans elle, les modules peuvent se désynchroniser et la vérification d'historique peut porter sur une valeur différente de celle finalement stockée, affaiblissant le contrôle.
Ce que vérifie Pavois
Pavois recherche dans la pile PAM effective sous /etc/pam.d/ une ligne pam_pwhistory.so non commentée portant use_authtok. Lire la pile password résolue (avec sa chaîne @include et son ordre) plutôt qu'un seul fichier est essentiel ici, car use_authtok ne fonctionne correctement que par rapport aux modules placés avant lui.
describe command('grep -RqE \'^[^#]*\bpam_pwhistory\\.so\b[^#]*\buse_authtok\' /etc/pam.d/ 2>/dev/null && echo ok || echo ko') do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Exécutez grep -rE '^[^#]*pam_pwhistory\.so' /etc/pam.d/ et vérifiez que la ligne password inclut use_authtok. Fonctionnellement, un seul passwd ne devrait demander le nouveau mot de passe qu'une fois tout en appliquant la vérification d'historique.
Inspecter et investiguer
Les changements de mot de passe sont consignés dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL/Fedora). L'historique des anciens condensats est conservé dans /etc/security/opasswd.
Remédiation
pavois harden apply utilise la ressource pam_line pour s'assurer que la ligne pam_pwhistory.so de /etc/pam.d/common-password porte use_authtok (avec remember=24 et enforce_for_root), insérée avant pam_unix.so afin de recevoir le jeton du module précédent. Cela s'applique avec pavois harden apply.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| before | ^password.*pam_unix\.so |
|---|---|
| file | /etc/pam.d/common-password |
| line | password required pam_pwhistory.so remember=24 use_authtok enforce_for_root |
| module | pam_pwhistory.so |
| resource | pam_line |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Si use_authtok est défini mais qu'aucun module antérieur de la pile ne fournit réellement le jeton, les changements de mot de passe peuvent échouer avec « authentication token manipulation error ». Précautions : gardez une session root ouverte, assurez-vous qu'un module collecteur de mot de passe (par ex. pam_pwquality ou pam_unix) précède pam_pwhistory, et testez passwd sur un utilisateur jetable avant de vous y fier.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 5.3.3.3.3 | direct | per OS, see the benchmark table | 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.