§ 36.1 Problématique
Exemple :
– Soit une machine dans une université, hébergeant les comptes de 10 professeurs et de 1000 élèves.
– La machine est équipée d’un modem.
– Les professeurs sont autorisés à se connecter à la machine par modem, pas les élèves.
– La machine est cliente NIS.
– Quand on se connecte par modem sur une machine, le système lance la commande
login
lorsque la connexion s’établit.
Comment implémenter cela ?
En modifiant le programme
login
pour l’adapter à ce cas très particulier ? ? ?Formation permanente – ARS 7.0 113
Pluggable Authentification Module, PAM Problématique
La problématique en général :
Comment changer une méthode d’authentification dans un programme (par exemple FTP) sans avoir à tout reprogrammer ?
Une solution développée par SUN à l’origine et reprise et encouragée dans Linux : Pluggable Authentification Module dit PAM
Pluggable Authentification Module, PAM Principe de PAM
§ 36.2 Principe de PAM
L’authentication fait appel par l’intermédiaire de PAM à des modules externes de code
d’authentification appropriée selon le service. On déporte l’authentification en dehors du programme.
4 catégories de modules PAM :
– module d’authentification (authentication)
fonctionnalités pour authentifier un utilisateur et définir ses créances – module de gestion de compte (account management)
fonctionnalités pour déterminer si l’utilisateur dispose d’un compte valide (car possibilité d’expiration de mot de passe dit password aging, de restrictions d’accès horaire) – module de gestion de session (session management)
fonctionnalités pour définir et terminer les sessions utilisateur – module de gestion de mot de passe (password management)
fonctionnalités pour changer un mot de passe utilisateur et certaines caractéristiques du compte Pour une certaine application, on organise les modules nécessaires sous forme d’une pile et chaque module de la pile va être essayé pour constituer l’authentification demandée.
Selon la configuration, un utilisateur pourra être amené à rentrer plusieurs mots de passe.
Formation permanente – ARS 7.0 115
Pluggable Authentification Module, PAM Fichier de configuration/etc/pam.conf
§ 36.3 Fichier de configuration /etc/pam.conf
/etc/pam.conf
définit quels modules seront utilisés pour chaque application.(Sur Linux, on trouve aussi le répertoire/etc/pam.dqui contient un fichier par application portant le nom de l’application. Ainsi/etc/pam.d/loginpour le servicelogin.)
Une ligne de
/etc/pam.conf
contient 5 champs :service_name module_type control_flag module_path options
– Le
service_name
nomme le service concerné par la ligne (other
pour service joker) – Lemodule_type
est l’un des 4 mots clef :auth
,account
,session
,password
– Le
control_flag
est l’un des 4 mots clef :requisite
,required
,optional
,sufficient
– Le
module_path
est le chemin du module.– Les options dépendent du module.
Pluggable Authentification Module, PAM Fichier de configuration/etc/pam.conf
Par exemple, le service
login
fait appel aux modules suivants :# Authentication management
Formation permanente – ARS 7.0 117
Pluggable Authentification Module, PAM Directives d’essai des modules
§ 36.4 Directives d’essai des modules
Les directives possibles d’essai des modules sont : – directive
required
la valeur de retour de ce module doit être
PAM_SUCCESS
pour sortir de la pile d’authentification avec succès ;PAM_AUTH_ERR
fera recommencer toute la pile– directive
requisite
une valeur de retour
PAM_AUTH_ERR
fait sortir de la pile d’authentification prématurément en échec– directive
optional
si ce module échoue, on sortira de la pile avec succès si un autre module dans la pile réussit – directive
sufficient
une valeur de retour
PAM_SUCCESS
de ce module fait sortir de la pile d’authentification prématurément avec succès ; les autres modules dans la pile ne sont pas pris en comptePluggable Authentification Module, PAM Modules,/usr/lib/security
§ 36.5 Modules, /usr/lib/security
Les modules sont conventionnellement stockés dans
/usr/lib/security/
Par exemple sur Solaris :
% ls /usr/lib/security
amiserv pam_ldap.so.1 pam_sample.so.1
pam_ami.so pam_projects.so pam_smartcard.so pam_ami.so.1 pam_projects.so.1 pam_smartcard.so.1 pam_dial_auth.so pam_rhosts_auth.so pam_unix.so
pam_dial_auth.so.1 pam_rhosts_auth.so.1 pam_unix.so.1
pam_krb5.so pam_roles.so sparcv9
pam_krb5.so.1 pam_roles.so.1 pam_ldap.so pam_sample.so
Chaque module fournit l’implémentation d’un mécanisme spécifique.
Formation permanente – ARS 7.0 119
Pluggable Authentification Module, PAM Modules,/usr/lib/security
/usr/lib/security/pam_unix.so.1
fournit un suport d’authentification, gestion de compte, session de mot de passe. Il utilise les mots de passe Unix pour l’authenfication./usr/lib/security/pam_dial_auth.so.1
peut seulement être utilisé pourl’authentification. Il utilise des données stockées dans
/etc/dialups
et/etc/d_passwd
. Principalement utilisé parlogin
./usr/lib/security/pam_rhosts_auth.so.1
peut seulement être utilisé pour l’authentification. Il utilise les données stockées dans les fichiers.rhosts
et/etc/hosts.equiv
. Principalement utilisé parrlogin
etrsh
.Pluggable Authentification Module, PAM Options des modules
§ 36.6 Options des modules
On peut passer certaines options aux modules
– des options spécifiques à chaque module ; cf la documentation de chaque module ; par exemple
retry=3
oudebug
– option
use_first_pass
Cette option indique d’utiliser exclusivement le mot de passe entré pour le premier module de la pile du service.
– option
try_first_pass
Cette option indique d’utiliser d’abord le mot de passe entré pour le premier module de la pile du service et en cas d’échec de ce mot de passe d’en demander un autre.
(Le support des optionsuse_first_passettry_first_passest fortement conseillé auprès des développeurs de modules PAM ; à vérifier donc avec chaque module)
Formation permanente – ARS 7.0 121
Pluggable Authentification Module, PAM Exemple 1
§ 36.7 Exemple 1
Password: XXXXXXXX <-- mot de passe
Dialup Password: YYYYYYYY <-- mot de passe
%% <-- connexion établie, shell lancé
On voit bien la ligne supplémentaire «
Dialup Password:
»Pluggable Authentification Module, PAM Exemple 1 Si l’on se trompe dans l’un des mots de passe, toutes les demandes de mot de passe sont
réessayées :
% exec login login: besancon
Password: ZZZZZZZZ <-- mauvais mot de passe Dialup Password: YYYYYYYY <-- mot de passe OK Login incorrect
login: besancon
Password: XXXXXXXX <-- mot de passe OK
Dialup Password: ZZZZZZZZ <-- mauvais mot de passe Login incorrect
login: besancon
Password: XXXXXXXX <-- mot de passe OK
Dialup Password: YYYYYYYY <-- mot de passe OK
%% <-- connexion établie, shell lancé Au niveau SYSLOG, ça laisse quelques traces :
Aug 20 14:51:14 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed ...
Aug 20 14:51:34 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed
Formation permanente – ARS 7.0 123
Pluggable Authentification Module, PAM Exemple 2
§ 36.8 Exemple 2
Pour autoriser l’authentification par LDAP, on mettra dans
/etc/pam.conf
:# Authentication management
login auth sufficient /usr/lib/security/pam_unix.so.1
login auth required /usr/lib/security/pam_ldap.so.1 use_first_pass
Pluggable Authentification Module, PAM A propos de LDAP
§ 36.9 A propos de LDAP
Pour les systèmes n’incorporant pas LDAP en natif dans l’OS, se reporter à : –
http://diamond.rug.ac.be/pam_LDAP/index.shtml
Formation permanente – ARS 7.0 125
Pluggable Authentification Module, PAM Un peu de bibliographie
§ 36.10 Un peu de bibliographie
–
http://www.sun.com/software/solaris/pam/
–
http://www.kernel.org/pub/linux/libs/pam/
–
http://www.netlogic.ro/linuxdoc/pam-0.64/html/pam.html
–
http://www.mailgate.org/mailgate/LINUX/linux.redhat.pam/
Connexion des utilisateurs