Modules d'authentification enfichables (P.A.M.) Master 1 ère année Sécurité des Systèmes Informatique Modules d'authentification enfichables (P.A.M.) Pluggable Authentication Modules (modules d'authentification enfichables, en abrégé PAM) est un mécanisme permettant d'intégrer différents schémas d'authentification de bas niveau dans une API de haut niveau, permettant de ce fait de rendre indépendants du schéma les logiciels réclamant une authentification. PAM est une création de Sun Microsystems et est supporté en 2006 sur les architectures Solaris, Linux, FreeBSD, NetBSD, AIX et HP-UX.
Modules d'authentification enfichables (P.A.M.) Master 1 ère année Sécurité des Systèmes Informatique Modules d'authentification enfichables (P.A.M.) L'administrateur système peut alors définir une stratégie d'authentification sans devoir recompiler des programmes d'authentification. PAM permet de contrôler la manière dont les modules sont enfichés dans les programmes en modifiant un fichier de configuration. Les programmes qui donnent aux utilisateurs un accès à des privilèges doivent être capables de les authentifier. Lorsque vous vous connectez sur le système, vous indiquez votre nom et votre mot de passe. Le processus de connexion vérifie que vous êtes bien la personne que vous prétendez être. Il existe d'autres formes d'authentification que l'utilisation des mots de passe, qui peuvent d'ailleurs êtres stockés sous différentes formes.
Modules d'authentification enfichables (P.A.M.) Master 1 ère année Sécurité des Systèmes Informatique Modules d'authentification enfichables (P.A.M.) Moyens modulables d'authentifier les utilisateurs Ensemble de bibliothèques auxquelles font appel les applications (su, login, ...) Configuration effectuée grâce aux fichiers de configuration de /etc/pam.d ou /etc/pam.conf Séparation des tâches d'authentification en quatre groupes de gestion auth: utilisé pour authentifier l'utilisateur account: utilisé pour vérifier si l'accès est autorisé (heure de connexion, expiration du mot de passe) password: utilisé pour définir les mots de passe session: tout ce qui concerne l'ouverture d'une session avant et après
Sécurité des Systèmes Informatique Master 1 ère année Sécurité des Systèmes Informatique Quelques modules PAM pam_cracklib pas de mot de passe du dictionnaire pam_env spécification de variables d'environnement (/etc/security/pam_env.conf) pam_unix module de base pam_pwdb idem pam_time gestion heure par heure (/etc/security/time.conf) pam_wheel limitation du su au groupe wheel pam_nologin désactivation des comptes en cas de présence du fichier /etc/nologin pam_securetty vérification des consoles d'accès root pam_ldap utilisation d'un annuaire ldap pour l'authentification
Le répertoire /etc/pam.d Master 1 ère année Sécurité des Systèmes Informatique Le répertoire /etc/pam.d -rw-r--r-- 1 root root 330 aoû 14 2003 chfn -rw-r--r-- 1 root root 330 aoû 14 2003 chsh -rw-r--r-- 1 root root 125 sep 18 2003 cups -rw-r--r-- 1 root root 225 sep 18 2003 halt -rw-r--r-- 1 root root 157 aoû 14 2003 kbdrate -rw-r--r-- 1 root root 380 sep 18 2003 kde3 -rw-r--r-- 1 root root 222 sep 13 2003 kppp -rw-r--r-- 1 root root 287 sep 18 2003 kscreensaver3 -rw-r--r-- 1 root root 427 aoû 14 2003 login -rw-r--r-- 1 root root 225 sep 19 2003 net_monitor -rw-r--r-- 1 root root 210 sep 1 2003 other -rw-r--r-- 1 root root 169 jui 21 2003 passwd -rw-r--r-- 1 root root 182 sep 18 2003 pmsuspend2 -rw-r--r-- 1 root root 225 sep 18 2003 poweroff -rw-r--r-- 1 root root 204 aoû 13 2003 ppp -rw-r--r-- 1 root root 225 sep 18 2003 reboot -rw-r--r-- 1 root root 254 sep 1 2003 secure-mcserv -rw-r--r-- 1 root root 384 sep 18 2003 simple_root_authen -rw-r--r-- 1 root root 659 aoû 3 2003 su -rw-r--r-- 1 root root 278 jui 18 2003 sudo -rw-r--r-- 1 root root 573 mar 10 2004 system-auth -rw-r--r-- 1 root root 386 sep 10 2003 xdm -rw-r--r-- 1 root root 157 sep 10 2003 xserver
Les fichiers de configuration PAM Master 1 ère année Sécurité des Systèmes Informatique Les fichiers de configuration PAM 4 champs séparés par des blancs type utilisé pour spécifier à quel groupe de gestion correspondent les règles control comportement de l'API en cas d'échec chemin accès au module PAM paramètres liste de valeurs modifiant le comportement de l'API
Comportement de l'API PAM: le champ control Master 1 ère année Sécurité des Systèmes Informatique Comportement de l'API PAM: le champ control required doit être vérifié avec succès. L'utilisateur ne sera averti qu'à la fin de la vérification des modules du même type requisite doit être vérifié avec succès. L'utilisateur sera averti immédiatement de l'échec du premier module de ce type ou de type required Sufficient ignoré en cas d'échec. Si aucun module required précédent n'a échoué et que l'authentification est réussie alors aucun autre module required ne sera testé Optional uniquement s'il n'y a pas d'autre module ou si l'authentification n'a pu être ni validée ni réfutée.
Sécurité des Systèmes Informatique Master 1 ère année Sécurité des Systèmes Informatique Empilement de module L'ordre a une grande importance Différentes conditions peuvent être requises L'exemple du rlogin: Y a-t-il un fichier /etc/nologin ? Connexion root distante ? Variables d'environnement spécifiques. Authentification rhosts réussie ? Demande d'authentification standard. auth required /lib/security/pam_nologin.so auth required /lib/security/pam_securetty.so auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_rhosts_auth.so auth required /lib/security/pam_stack.so service=system-auth
Un exemple de configuration Master 1 ère année Sécurité des Systèmes Informatique Un exemple de configuration #%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_unix.so shadow nullok auth required /lib/security/pam_nologin.so account required /lib/security/pam_unix.so password required /lib/security/pam_cracklib.so retry=3 password required /lib/security/pam_unix.so shadow nullok use_authtok session required /lib/security/pam_unix.so Vérification du terminal de connexion (pour root) Vérification standard (mot de passe vide autorisé) Vérification du nologin Activation de la vérification de compte (mot de passe périmé, ...) Si le mot de passe doit être changé alors on utilise le module password de pam_unix_so La session sera logée dans syslog (début et fin)