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

Éviter l'option remember dans le module pam_unix

Garantit que l'argument remember= n'est pas posé sur pam_unix.so, afin que l'historique des mots de passe soit confié à pam_pwhistory.so et que le hachage fort soit préservé.

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'historique des mots de passe doit être géré par pam_pwhistory.so, et non par l'argument remember= de pam_unix.so. Lorsque pam_unix gère l'historique, il écrit les anciens condensats dans /etc/security/opasswd avec son propre hachage (plus faible), affaiblissant l'algorithme et le nombre de tours utilisés ailleurs. Retirer remember= de pam_unix laisse la gestion de l'historique au module conçu pour cela et préserve un hachage robuste, rendant plus difficile le cassage des mots de passe stockés.

Ce que vérifie Pavois

Pavois recherche dans l'arborescence PAM effective sous /etc/pam.d/ les lignes pam_unix.so actives et échoue si l'une porte remember=. Inspecter la pile résolue (avec les fichiers @include) capte l'argument là où il est réellement appliqué, contrairement à un contrôle lié à un seul fichier supposé.

describe command('grep -RE \'^[^#]*\bpam_unix\\.so\b\' /etc/pam.d/ 2>/dev/null | grep -q \'remember=\' && echo ko || echo ok') do
  its('stdout.strip') { should eq 'ok' }
end

Comment vérifier qu’elle est appliquée

Exécutez :

grep -rE '^[^#]*\bpam_unix\.so\b' /etc/pam.d/ | grep 'remember='

Attendu : aucune sortie, aucune ligne pam_unix.so active ne doit contenir remember=. Toute correspondance signale la mauvaise configuration.

Inspecter et investiguer

Les changements de mot de passe et les rejets pour historique sont enregistrés dans /var/log/auth.log (Debian/Ubuntu) ou /var/log/secure (RHEL/Fedora). Observez journalctl -t passwd -f lors d'un changement de mot de passe pour voir quel module applique l'historique ; le stockage des anciens condensats est /etc/security/opasswd.

Remédiation

Aucun plan de durcissement automatisé n'est fourni pour cette règle : elle doit être appliquée manuellement. Éditez la pile password (/etc/pam.d/common-password, ou password-auth/system-auth sous RHEL/Fedora) et retirez l'argument remember= de la ligne pam_unix.so, en configurant plutôt l'historique sur une ligne pam_pwhistory.so dédiée.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

command# Remove 'remember=' from pam_unix and use pam_pwhistory instead (see pam-remember-pwhistory-remember). # Manage via: pam-auth-update
reasonmoving history off pam_unix to pam_pwhistory is a stack change, use pam-auth-update
resourcemanual
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Conserver remember= sur pam_unix affaiblit la protection des condensats stockés mais ne bloque pas les connexions ; la correction est peu risquée si l'historique est aussi configuré sur pam_pwhistory.so pour ne pas perdre la politique. Précautions : gardez un shell root ouvert, éditez via pam-auth-update/authselect si possible, et vérifiez qu'un changement de mot de passe fonctionne toujours (et refuse toujours la réutilisation) depuis une seconde session avant de fermer la session courante.

Mapping des normes

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