Chapitre 16. Authentification avec les modules PAM

Table des matières

16.1. Structure d'un fichier de configuration PAM
16.2. Configuration PAM de sshd
16.3. Configuration des modules PAM
16.4. Pour plus d'informations

Résumé

Linux utilise les modules PAM (Pluggable Authentication Modules - modules d'authentification enfichables) au cours de son processus d'authentification comme couche intermédiaire entre l'utilisateur et l'application. Les modules PAM sont disponibles sur l'ensemble du système : n'importe quelle application peut donc les demander. Ce chapitre décrit le mode de fonctionnement de ce mécanisme d'authentification modulaire, ainsi que son mode de configuration.

Il n'est pas rare que les administrateurs système et les programmeurs veuillent restreindre l'accès à certaines parties du système ou limiter l'utilisation de certaines fonctions d'une application. Sans les modules PAM, les applications doivent se réadapter chaque fois qu'un nouveau mécanisme d'authentification (LDAP ou SAMBA, par exemple) est disponible sur le marché. Ce processus, cependant, demande du temps et est source d'erreurs. Aussi, pour éviter ces inconvénients, l'une des solutions est de séparer les applications du mécanisme d'authentification et de déléguer cette authentification à des modules gérés de manière centrale. Chaque fois qu'un programme d'authentification nouvellement requis est nécessaire, il suffit d'adapter ou d'écrire le module PAM approprié utilisé par le programme en question.

Chaque programme fondé sur un mécanisme PAM possède son propre fichier de configuration dans le répertoire /etc/pam.d/nomduprogramme. Ces fichiers définissent les modules PAM utilisés pour l'authentification. De plus, il existe des fichiers de configuration globale pour la plupart des modules PAM dans le répertoire /etc/security, qui définissent le comportement exact de ces modules (exemples : pam_env.conf, pam_pwcheck.conf, pam_unix2.conf et time.conf). Chaque application qui utilise un module PAM appelle en fait un ensemble de fonctions PAM. Ces fonctions traitent ensuite les informations des différents fichiers de configuration et renvoient les résultats à l'application appelante.


16.1. Structure d'un fichier de configuration PAM

Chaque ligne d'un fichier de configuration PAM contient quatre colonnes au maximum :

<Type of module (Type de module)> <Control flag (drapeau de contrôle)> <Module path (Chemin d'accès au module)> <Options> 

Les modules PAM sont traités comme des piles. Chaque type de module a une utilité différente. Par exemple, un module contrôlera le mot de passe, un deuxième vérifiera l'emplacement à partir duquel l'accès au système est requis et un troisième lira les paramètres personnalisés des utilisateurs. Les types de modules PAM sont au nombre de quatre :

auth

Ce type de module a pour but de vérifier l'authenticité de l'utilisateur. Traditionnellement, cette opération est exécutée via la demande d'un mot de passe, mais elle est également possible avec l'aide d'une carte à puce ou via des informations biométriques (analyse d'empreintes digitales ou de l'iris).

compte

Les modules de ce type contrôlent si l'utilisateur bénéficie d'autorisations générales pour utiliser le service demandé. Exemple : ce type de contrôle peut être exécuté pour garantir que personne ne peut se loguer sous le nom d'utilisateur d'un compte arrivé à expiration.

password

Ce type de module a pour but d'autoriser la modification d'un jeton d'authentification. Dans la plupart des cas, il s'agit d'un mot de passe.

session

Les modules de ce type sont responsables de la gestion et de la configuration des sessions utilisateur. Ils sont lancés avant et après l'authentification pour enregistrer les tentatives de login dans des journaux système et pour configurer l'environnement propre à un utilisateur (comptes de messagerie, répertoire privé, limites système, etc.).

La seconde colonne contient les drapeaux de contrôle pour influencer le comportement des modules lancés :

required

Un module portant ce drapeau doit être exécuté avec succès pour que l'authentification puisse se poursuivre. En cas d'échec d'un module doté du drapeau required, tous les autres modules portant ce même drapeau sont traités et ce n'est qu'après que l'utilisateur reçoit un message l'informant de l'échec de la tentative d'authentification.

requisite

Les modules portant ce drapeau doivent également être traités avec succès, plus ou moins comme un module doté du drapeau required. Par contre, en cas d'échec, l'utilisateur en est immédiatement averti et aucun autre module n'est traité. En cas de réussite, les autres modules sont traités après, comme tout autre module doté du drapeau required. Le drapeau requisite peut être utilisé comme filtre de base pour vérifier certaines conditions fondamentales pour une authentification correcte.

sufficient

Après la réussite du traitement d'un module portant ce drapeau, l'application appelante reçoit immédiatement un message lui confirmant cette réussite et aucun autre module n'est traité, à condition qu'il n'y a pas eu précédemment d'échec d'un module doté du drapeau required. L'échec d'un module doté du drapeau sufficient n'a pas de conséquence directe, dans le sens où les modules ultérieurs sont traités dans leur ordre respectif.

optional

L'échec ou le succès d'un module portant ce drapeau n'a pas de conséquence directe. Cela peut s'avérer pratique pour les modules dont la seule fonctionnalité est d'afficher un message (par exemple, pour avertir l'utilisateur de l'arrivée d'un message), sans exécuter d'autre action.

include

Lorsque ce drapeau est attribué, le fichier indiqué en argument est inséré à cet endroit.

Le chemin d'accès au module n'a pas besoin d'être indiqué de manière explicite, du moment que ce module est situé dans le répertoire par défaut /lib/security (pour toutes les plates-formes 64 bits prises en charge par SUSE Linux, il s'agit du répertoire /lib64/security). La quatrième colonne peut contenir une option pour le module indiqué, telle que debug (pour activer le débogage) ou nullok (pour autoriser l'utilisation de mots de passe vides).