• Aucun résultat trouvé

Pluggable Authentification Module, PAM

Dans le document Administration système UNIX version 7.0 (Page 67-74)

§ 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) – Le

module_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 compte

Pluggable 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é pour

l’authentification. Il utilise des données stockées dans

/etc/dialups

et

/etc/d_passwd

. Principalement utilisé par

login

.

/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é par

rlogin

et

rsh

.

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

ou

debug

– 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

Dans le document Administration système UNIX version 7.0 (Page 67-74)