← Toutes les règles
SOCLE-CLD-IAM-030// Accounts (PAM modules)moyenneconfig persistante

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 PASS prouve? actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 1 norme

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' }
end

Comment 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
linepassword required pam_pwhistory.so remember=24 use_authtok enforce_for_root
modulepam_pwhistory.so
resourcepam_line
pavois harden plan local

où 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

NormeRéférenceTypeVersionConfiance
CIS5.3.3.3.3directper OS, see the benchmark tablehaute

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.

Sources & références