PAM Linux
PAM Pluggable Authentication Modules est un mécanisme d’authentification centralisé (au niveau de l’OS) disponible sur les distributions Linux et il permet de fournir :
- une interface unifiée aux différents programmes (applications ou services) ayant besoin d’une authentification d’utilisateurs (login, ssh, postfix etc.)
- un système de modules, chacun spécialisé dans une méthode d’authentification
schéma fonctionnement PAM
Configuration
Les fichiers de configuration de PAM se trouvent dans /etc/pam.d
(et un fichier /etc/pam.conf
en cas d’absence du dossier pam.d).
Chaque application cliente du service PAM y a son propre fichier:
liste des fichiers de configuration PAM dans /etc/pam.d
Ces fichiers de configuration sont composés d’une liste de directives, chaque directive est composée de:
- une interface (il existe 4 types d’interfaces: auth, session, account, password)
- un flag de contrôle
- simple (required, requisiste, sufficient, optional, include)
- complexe composés d’un ensemble d’attibuts/valeurs par ex: [success=ok ignore=ignore module_unknown=ignore default=bad]
- du nom du module (pam_xxx.so)
- et d’un certain nombres d’arguments propre au module
extraits de fichiers de configuration PAM
Ces directives sont exécutées séquentiellement (sauf en cas de flag complexe), et chacune retourne success ou failure
Bonus
Aide man pages
- man pam.d : aide générale sur PAM
- man pam_unix : nom du module souhaité sans l’extension .so (pour shared object)
- man pam-auth-update : outil de configuration de la configuration de PAM
Liste des modules PAM
voici une liste non exhaustive des modules PAM disponible dans une distribution raspbian:
pam_access.so
pam_chksshpwd.so
pam_cifscreds.so
pam_debug.so
pam_deny.so
pam_echo.so
pam_env.so
pam_exec.so
pam_faildelay.so
pam_filter.so
pam_ftp.so
pam_group.so
pam_issue.so
pam_keyinit.so
pam_lastlog.so
pam_limits.so
pam_listfile.so
pam_localuser.so
pam_loginuid.so
pam_mail.so
pam_mkhomedir.so
pam_motd.so
pam_namespace.so
pam_nologin.so
pam_permit.so
pam_pwhistory.so
pam_rhosts.so
pam_rootok.so
pam_securetty.so
pam_selinux.so
pam_sepermit.so
pam_shells.so
pam_stress.so
pam_succeed_if.so
pam_systemd.so
pam_tally2.so
pam_tally.so
pam_time.so
pam_timestamp.so
pam_tty_audit.so
pam_umask.so
pam_unix.so
pam_userdb.so
pam_warn.so
pam_wheel.so
pam_xauth.so