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

Limiter la réutilisation des mots de passe

Impose l'option enforce_for_root sur pam_pwhistory.so afin que la restriction de réutilisation des mots de passe s'applique à tous les comptes, root compris.

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

Empêcher la réutilisation d'anciens mots de passe garantit qu'un mot de passe compromis n'est pas silencieusement réinstauré par un utilisateur. pam_pwhistory exempte root par défaut, laissant une faille pour le compte le plus puissant ; enforce_for_root rend la politique anti-réutilisation universelle pour que l'historique soit réellement appliqué sur tout le système.

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 enforce_for_root. Résoudre la pile password assemblée (common-password plus sa chaîne @include) plutôt qu'un seul fichier évite un faux positif où le drapeau figure dans un exemple mais pas dans la règle réellement appliquée par PAM.

describe command('grep -RqE \'^[^#]*\bpam_pwhistory\.so\' /etc/pam.d/ 2>/dev/null && { grep -RqE \'^[^#]*\bpam_pwhistory\.so[^#]*\benforce_for_root\' /etc/pam.d/ 2>/dev/null || grep -qE \'^[[:space:]]*enforce_for_root\b\' /etc/security/pwhistory.conf 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 enforce_for_root. Fonctionnellement, essayez de définir un mot de passe récemment utilisé avec passwd (en tant qu'utilisateur normal et en tant que root), les deux devraient être rejetés.

Inspecter et investiguer

Les tentatives de changement de mot de passe et les rejets pour réutilisation sont consignés dans /var/log/auth.log (Debian/Ubuntu). L'historique stocké réside dans /etc/security/opasswd.

Remédiation

pavois harden apply utilise la ressource pam_line pour s'assurer que /etc/pam.d/common-password contient password required pam_pwhistory.so remember=24 use_authtok enforce_for_root, insérée avant la ligne pam_unix.so. 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

Cela ne restreint que les changements de mot de passe et n'affecte ni les connexions ni les sessions actives. Le risque principal est une ligne password malformée qui bloque tous les changements de mot de passe, ou un root incapable de redéfinir un mot de passe qu'il venait d'abandonner. Précautions : gardez une session root ouverte, testez passwd sur un utilisateur jetable après application, et confirmez que la ligne précède pam_unix.so pour que use_authtok fonctionne.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS5.3.3.3.2directper 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