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.
PAM (Pluggable Authentication Modules) permet à l'administrateur de définir une politique d'authentification sans avoir à recompiler les programmes concernés. Le contrôle des modules se fait à l'aide d'un fichier de configuration.
La plupart des utilisateurs de Red Hat Linux n'auront pas besoin de modifier ce fichier. Lorsque vous utilisez RPM pour installer des programmes qui ont besoin d'une authentification, les modifications nécessaires à une authentification normale par mot de passe sont automatiquement réalisées. Si vous voulez modifier votre configuration, vous devez savoir à quoi correspond ce fichier.
Le standard PAM définit quatre types de modules. Les modules auth sont utilisés pour une authentification normale (nom et mot de passe par exemple). Les modules account vérifient que l'authentification est autorisée (vérifie si le compte n'est pas expiré, vérifie que l'utilisateur peut se connecter à cette heure de la journée, ...). Les modules password sont utilisés pour définir les mots de passe. Les modules session sont utilisés après l'authentification de l'utilisateur pour qu'il puisse utiliser son compte, monter son répertoire utilisateur, ou accéder à sa boîte aux lettres.
Vous avez la possibilité d'utiliser plusieurs modules. Par exemple, rlogin utilise au moins deux méthodes d'authentification : si l'authentification rhosts réussit vous pouvez vous connecter, si elle échoue l'authentification standard unix (mot de passe) est utilisée.
Vous pouvez ajouter des modules à n'importe quel moment, qui seront directement utilisables.
Chaque programme qui utilise PAM définit son propre nom de service (type login pour le programme login, type ftp pour ftpd, ...).En règle générale, le type de service est le nom du programme utilisé pour accéder au service, et non (en cas de différence) celui du programme utilisé pour fournir le service.
Le répertoire /etc/pam.d est utilisé pour configurer toutes les applications PAM (/etc/pam.conf dans les anciennes versions, toujours lu s'il n'y a pas d'entrée /etc/pam.d/). Chaque application (chaque service) possède son propre fichiers. Un fichier ressemble à ce qui suit :
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow nullok use_authtok
session required /lib/security/pam_pwdb.so
La première ligne (qui commence par le caractère #) est une ligne de commentaire. Les trois lignes suivantes sonnt utilisées pour l'autorisation de login. La première s'assure, si l'utilisateur tente de se connecter sous root, que le tty sous lequel il est connecté se trouve dans le fichier /etc/securetty s'il existe. La seconde demande et vérifie le mot de passe. La troisième vérifie l'existence du fichier /etc/nologin, si ce fichier existe le contenu est affiché et si l'utilisateur n'est pas root la connexion est refusée.
Notez que la vérification s'effectue sur les trois modules, même si elle échoue au premier module. L'utilisateur qui se voit refuser la connexion, n'en connaîtra donc pas (par mesure de sécurité) la raison. Vous pouvez remplacer required par requisite, si un module requisite échoue les modules suivants ne seront pas exécutés.
La cinquième ligne autorise l'accès au compte. Si vous avez par exemple activé les shadow passwords, le module pam_pwdb.so vérifie si le compte n'est pas expiré, ou si le mot de passe a été changé alors que la période allouée au changement est déjà expirée.
Si le mot de passe utilisateur est modifié, la sixième ligne indique que c'est le module pam_pwdb.so qui doit être utlisé. (Il en sera ainsi, sauf si le module auth a déterminé que le mot de passe doit être changé, si par exemple un shadow password est expiré).
La dernière ligne indique que le module pam_pwdb.so sera utilisé pour gérer la session. Vous pouvez le remplacez ou lui adjoindre d'autres modules.
Vous devez respecter l'ordre des lignes qui se trouvent à l'intérieur d'un fichier. L'ordre dans lequel sont appelés les modules required n'est pas très important, mais d'autres flags de contrôle sont disponibles. optional est très rarement utilisé et jamais par défaut sur un système Red Hat Linux. L'ordre est par contre important pour sufficient.
Jetons un coup d'oeil à la configuration de auth pour rlogin :
auth required /lib/security/pam_securetty.so
auth sufficient /lib/security/pam_rhosts_auth.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
La configuration est similaire à celle de login, mais un module supplémentaire est utilisé. Les modules sont aussi spécifiés dans un certain ordre.
Premièrement, pam_securetty.so empêche les connexions root depuis les terminaux non sécurisés. Les connexions root sont désactivées. Si vous voulez les réactiver (dans ce cas, nous vous recommandons de ne pas être connecté à Internet et d'utiliser un firewall de qualité), supprimez simplement cette ligne.
Deuxièmement, pam_nologin.so vérifie /etc/nologin, comme spécifié ci dessus.
Troisièmement, si pam_rhosts_auth.so authentifie l'utilisateur il n'y aura pas de vérification de mot de passe. Si pam_rhosts_auth.so n'authentifie pas l'utilisateur, l'échec d'authentification est ignoré.
Enfin (si pam_rhosts_auth.so n'a pas réussi à authentifier l'utilisateur), le module pam_pwdb.so lance l'authentification normale (par mot de passe).
En cas d'échec, vous pouvez stopper l'authentification au niveau du module pam_securetty.so en remplaçant required par requisite.
Les modules pam_pwdb.so par défaut supportent les shadow passwords. Pour effectuer la conversion de votre système pour utiliser les shadow passwords, exécutez les commandes :
cd /etc
pwconv5
chmod 600 passwd- shadow-
Les modules pam_pwdb.so détectent automatiquement l'utilisation des shadow passwords et effectuent les modifications nécessaires.
Ceci est une simple introduction à PAM. Vous trouverez d'autres informations /usr/doc/pam* (dont System Administrators' Guide, A Module Writers' Manual, Application Developers's Manuel, et le standard PAM DCE-RFC 86.0). Vous pouvez aussi consulter le site Red Hat via http://www.redhat.com/linux-info/pam/.