INSIA SRT 3 PAM !
PAM Pluggable Authentication Modules intégrer différents schémas d'authentification de bas niveau dans une API de haut niveau rendre indépendants du schéma les logiciels réclamant une authentification création de Sun Microsystems supporté sur les architectures Solaris, Linux, FreeBSD, NetBSD, AIX et HP-UX.
PAM 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.
PAM Accès à des privilèges par un programme nécessite authentification A la connexion, l'utilisateur entre un nom et un mot de passe. Vérification de l'identité de la personne : la personne est bien celle qu'elle prétend être (authentification) Autres formes d'authentification possibles : sans mot de passe, avec votre voix, votre clef usb, vos empreintes digitales, sur une base SQL, sur un annuaire LDAP, etc Possibilité de définir des restrictions pour l'utilisateur : comme par exemple l'interdiction d'accès à une personne ou groupe à une certaine heure Définir un environnement pour l'utilisateur
Modules PAM bibliothèques dynamiques (par ex. pam_unix.so) six primitives d'authentification regroupées dans quatre mécanismes : auth, deux primitives ; il assure l'authentification réelle, éventuellement en demandant et en vérifiant un mot de passe, et il définit des « certificats d'identité » tels que l'appartenance à un groupe ou des « tickets » kerberos. account fournit une seule primitive : il vérifie si le compte demandé est disponible (si le compte n'est pas arrivé à expiration, si l'utilisateur est autorisé à se connecter à cette heure de la journée, etc.).
Modules PAM (suite) password fournit une seule primitive : il permet de mettre à jour le jeton d'authentification (en général un mot de passe), soit parce qu'il a expiré, soit parce que l'utilisateur souhaite le modifier. session fournit deux primitives : mise en place et fermeture de la session. Il est activé une fois qu'un utilisateur a été autorisé afin de lui permettre d'utiliser son compte. Il lui fournit certaines ressources et certains services, par exemple en montant son répertoire personnel, en rendant sa boîte aux lettres disponible, en lançant un agent ssh, etc.
Configuration Soit /etc/pam.conf Soit /etc/pam.d/ contenant fichiers portant nom du service Contiennent règles examinées les unes après les autres pour chaque mécanisme du type : service type control module-path module-arguments service : nom de l'application correspondante (login, su, sshd, etc) Default : comportement par defaut... fichier other dans /etc/pam.d : en général, pas utilisé Pas de champ service pour fichier dans /etc/pam.d Service est le nom du fichier type : quel mécanisme on cherche à définir (account, auth, password, session)
Configuration control : comportement du module required : retourne failure, mais les autres règles sont examinées requisite : comme required. retourne failure, mais le contrôle est donné à l'application sufficient : succès suffisant, les autres règles ne sont pas examinées. Si failure, les autres règles sont examinées optional : le succès ou failure de ce module n'a pas de conséquences include : permet d'inclure les règles d'un autre fichier commençant par le même champ type control peut avoir des valeurs plus compliquées entre [ ] [value1=action1 value2=action2 ...] voir manpage de PAM
Configuration module-path : chemin relatif ou absolu du module PAM nécessaire module-arguments : arguments donnés aux modules réalisant l'authentification ; il faut dans ce cas consulter la doc de chaque module http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag- module-reference.html squid auth required pam_mysql.so user=passwd_query passwd=mada \ db=eminence [query=select user_name from internet_service \ where user_name='%u' and password=PASSWORD('%p') and \ service='web_proxy']
D'autres modules possibles La liste des modules disponibles : http://www.kernel.org/pub/linux/libs/pam/modules.html Par exemple, pour faire de l'authentification avec un dongle USB, en PGP, associé à Kerberos, distante, etc. Les modules PAM existants se trouvent habituellement dans /lib/security
Pour résumer Un module est un morceau de code capable d'être lié dynamiquement à une application fournissant un service. Un service est configuré dans un fichier (nommé selon son type de service) contenu dans le répertoire /etc/pam.d/ Un module offre un certain nombre de fonctionnalités qui sont hierarchisées en 4 groupes, définissant leur périmêtre d'action. Un module peut fournir des fonctionnalités pour un seul ou plusieurs groupes. Par exemple, le module pam_xauth ne fourni que des fonctionnalités dans le groupe session alors que pam_unix en fourni pour chaque groupe.