É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 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' }
endComment 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 |
|---|---|
| reason | moving history off pam_unix to pam_pwhistory is a stack change, use pam-auth-update |
| resource | manual |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 5.3.3.4.2 | 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.