Catégories
Sécurité

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
détail fichier dans pam.d
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