
Le système PAM (Pluggable Authentication Modules) est le cœur de l’authentification sur la majorité des distributions Linux modernes. Il permet d’enchaîner plusieurs modules pour contrôler les connexions, les mots de passe, les limitations d’accès, et les stratégies de sécurité. Ce guide aborde des méthodes avancées pour auditer, renforcer et contrôler le comportement de PAM dans un contexte d’entreprise ou d’administration sécurisée.
1. Auditer les modules PAM actifs
grep -r pam_ /etc/pam.d/
Permet d’identifier quels modules PAM sont appelés pour chaque service (sudo, sshd, login, passwd, etc.).
2. Activer l’audit des connexions via pam_tty_audit
session required pam_tty_audit.so enable=* log_passwd
Trace toutes les saisies clavier, y compris les mots de passe, pour les comptes spécifiés (à utiliser dans des environnements hautement surveillés).
3. Implémenter un verrouillage après échecs avec pam_faillock
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=300
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail audit
account required pam_faillock.so
Verrouille un compte pendant 5 minutes après 3 échecs de connexion.
4. Forcer des mots de passe robustes avec pam_pwquality
password requisite pam_pwquality.so retry=3 minlen=14 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Exige des mots de passe longs, complexes et variés pour tous les utilisateurs locaux.
5. Restreindre les utilisateurs via pam_access
account required pam_access.so
Ajoute un contrôle d’accès basé sur les hôtes et les groupes définis dans /etc/security/access.conf
.
6. Journaliser les connexions et changements avec pam_exec
session optional pam_exec.so /usr/local/bin/log-session.sh
Permet d’exécuter un script personnalisé à chaque début/fin de session pour journalisation, synchronisation ou alerte.
7. Imposer une authentification multifactorielle (MFA)
auth required pam_google_authenticator.so nullok
Active la vérification par TOTP en complément du mot de passe, avec Google Authenticator ou FreeOTP.
8. Supprimer les modules PAM inutilisés
Identifie et supprime les configurations obsolètes pour réduire la surface d’attaque :
find /etc/pam.d/ -type f -exec grep -L pam_unix.so {} \;
9. Protéger le fichier /etc/shadow
chmod 000 /etc/shadow
chattr +i /etc/shadow
Empêche la lecture/modification du fichier des mots de passe hachés même en cas de compromission root.
10. Activer la journalisation centralisée de PAM
grep pam /var/log/auth.log
Permet une corrélation SIEM en analysant les tentatives de connexion, les erreurs et les modules appelés.
Conclusion
La configuration PAM par défaut est rarement suffisante en environnement à haut niveau d’exigence. En couplant journalisation, MFA, restrictions d’accès, règles de complexité et surveillance, on renforce considérablement la posture de sécurité des points d’entrée Linux. Chaque service réseau (SSH, console, su, sudo) peut ainsi être traité indépendamment avec des politiques précises.