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

Vérifier que le module pam_pwhistory est activé

Garantit que pam_pwhistory.so est présent dans la pile password de PAM afin que le système mémorise les anciens mots de passe et en interdise la réutilisation.

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

Imposer des mots de passe forts et non recyclés augmente la difficulté et les ressources nécessaires à la compromission d'un mot de passe. pam_pwhistory est le module qui enregistre les anciens condensats et rejette un nouveau mot de passe identique à un récent ; sans lui, les utilisateurs reviennent librement à un mot de passe connu (potentiellement divulgué), annulant l'intérêt de l'expiration des mots de passe.

Ce que vérifie Pavois

Pavois recherche dans la pile PAM effective sous /etc/pam.d/ une ligne pam_pwhistory.so active. Comme la pile password est assemblée à partir de common-password et de sa chaîne @include, lire les fichiers résolus détecte un module présent dans un exemple mais retiré ou commenté dans le chemin réellement appliqué par PAM, une lacune qu'une analyse mono-fichier manque.

describe command('grep -RqE \'^[^#]*\bpam_pwhistory\\.so\b\' /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/ ; une ligne password active doit référencer le module. Comme test fonctionnel, essayez de changer le mot de passe d'un utilisateur vers une valeur récemment utilisée, PAM devrait le rejeter (« Password has been already used »).

Inspecter et investiguer

Les tentatives et rejets de changement de mot de passe 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 insérer password required pam_pwhistory.so remember=24 use_authtok enforce_for_root dans /etc/pam.d/common-password, placée avant la ligne pam_unix.so pour que l'historique soit vérifié avant la validation du mot de passe. 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

Ajouter pam_pwhistory n'affecte que les changements de mot de passe, les sessions existantes ne sont donc pas touchées, mais une ligne password malformée peut casser tous les changements de mot de passe (impossibilité d'en définir un nouveau). Précautions : gardez une session root ouverte, testez passwd sur un utilisateur jetable après application, et vérifiez que la nouvelle ligne se situe avant pam_unix.so pour que use_authtok reçoive correctement le jeton du module précédent.

Mapping des normes

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