Les programmes donnant aux utilisateurs l'accès à
des privilèges de quelque type que ce soit doivent
être en mesure d'authentifier les utilisateurs. Lorsque
vous vous connectez à un système, vous entrez vos
nom et mot de passe que le processus de connexion utilise pour
authentifier la connexion (c'est-à-dire vérifier
que vous êtes bien celui que vous prétendez
être). Il existe d'autres formes d'authentification que
les mots de passe, et diverses possibilités de stockage
des mots de passe.
La plupart des utilisateurs de Red Hat Linux n'ont jamais besoin de
toucher à ce fichier de configuration. Lorsque vous
utilisez RPM pour installer des programmes requérant une
authentification, il apporte automatiquement les modifications
nécessaires pour effectuer une authentification par mot
de passe normale. Toutefois, vous pouvez être amené
à personnaliser la configuration, auquel cas vous devez
comprendre le fichier de configuration.
Quatre types de modules sont définis par la norme PAM.
Les modules auth assurent
l'authentification réelle, éventuellement
en demandant et en vérifiant un mot de passe, et
ils définissent des "certificats
d'identité" tels que l'appartenance à
un groupe ou des "tickets" kerberos.
Les modules account
vérifient si l'authentification est
autorisée (si le compte n'est pas arrivé
à expiration, si l'utilisateur est
autorisé à se connecter à cette
heure de la journée, etc.).
Les modules password sont
utilisés pour définir des mots de passe.
Les modules session sont
utilisés une fois qu'un utilisateur a
été authentifié pour lui permettre
d'utiliser son compte, éventuellement en montant
le répertoire personnel de l'utilisateur ou en
rendant sa boîte aux lettres disponible.
Ces modules peuvent être
empilés pour qu'il soit possible
d'en utiliser plusieurs. Par exemple,
rlogin utilise normalement au moins deux
méthodes d'authentification : si
l'authentification rhosts réussit,
il suffit de
permettre la connexion ; si elle échoue, une
authentification par mot de passe standard intervient.
Il est possible d'ajouter de nouveaux modules à tout
instant et de créer des applications compatibles PAM
pour les utiliser. Par exemple, si vous avez un système
de calculatrice à mot de passe unique et si vous pouvez
écrire un module pour le prendre en charge (une
documentation sur l'écriture de modules est fournie
avec le système, dans
/usr/doc/pam*), les programmes
compatibles PAM peuvent utiliser le nouveau module et
travailler avec les nouvelles calculatrices à mot de
passe unique sans être recompilés ou
modifiés d'une autre manière.
Le répertoire /etc/pam.d est
utilisé pour configurer toutes les applications PAM (il
s'agissait du répertoire
/etc/pam.conf dans les
précédentes versions de PAM ; lorsque le
fichier pam.conf est en cours de lecture,
si aucune entrée /etc/pam.d/ n'est
trouvée, son utilisation est refusée). Chaque
application (en réalité, chaque
service) a son propre fichier. Voici
à quoi ressemble un fichier :
#%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 est un commentaire (toute ligne
commençant par le signe # est un
commentaire). Les lignes deux à quatre empilent trois
modules à utiliser pour l'autorisation de connexion. La
ligne deux fait en sorte que si
l'utilisateur essaie de se connecter en tant que root, le
télétype sur lequel il se connecte figure dans
le fichier /etc/securetty
si ce dernier existe. La ligne trois fait
en sorte que l'utilisateur soit invité à entrer
un mot de passe et que ce mot de passe soit
contrôlé. La ligne quatre vérifie si le
fichier /etc/nologin existe et, dans
l'affirmative, affiche le contenu du fichier ;
si l'utilisateur n'est pas connecté en tant que root,
elle ne le laisse pas se connecter.
Les trois modules sont contrôlés,
même si le premier échoue.
Il s'agit d'une décision liée à la
sécurité ; elle a pour but d'empêcher
l'utilisateur de savoir pourquoi son authentification a
échoué, car, s'il savait pourquoi, il pourrait
contourner l'authentification plus aisément. Vous
pouvez modifier ce comportement en remplaçant
required par
requisite ; Si un module
requisite retourne une erreur, PAM
échoue immédiatement, sans appeler d'autres
modules.
La cinquième ligne entraîne l'exécution de
toute comptabilisation nécessaire. Par exemple, si des
mots de passe masqués ont été
activés, le module pam_pwdb.so
vérifie si le compte est arrivé à
expiration, ou bien si l'utilisateur n'a pas changé son
mot de passe et si la période pendant laquelle il lui
est permis de changer le mot de passe est arrivée
à expiration.
La sixième ligne soumet le nouveau mot de passe
à une série de tests pour s'assurer qu'il ne
puisse pas, par exemple, être aisément
deviné à l'aide d'un programme de
décryptage de mot de passe basé sur un dictionnaire.
La septième ligne (qui peut être saisie sur deux
lignes) spécifie que, si le programme
login modifie le mot de passe de
l'utilisateur, il doit utiliser le module
pam_pwdb.so pour le faire (il ne le fera
que si un module auth a
déterminé que le mot de passe doit être
changé --- par exemple, si un mot de passe
masqué est arrivé à expiration).
La huitième et dernière ligne spécifie si
le module pam_pwdb.so doit être
utilisé pour gérer la session. Actuellement, ce
module ne fait rien ; il pourrait être
remplacé (ou complété par empilage) par
tout module nécessaire.
Il faut noter que l'ordre des lignes à
l'intérieur de chaque fichier a de l'importance. Bien
que l'ordre dans lequel les modules
requis sont appelés n'ait pas
grande importance, d'autres indicateurs de
contrôle sont disponibles. Si
optional est rarement utilisé
et jamais utilisé par défaut sur un
système Red Hat Linux, sufficient et
requisite rendent l'ordre très
important.
Examinons 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
|
Cela ressemble presque à
l'entrée login, mais il y a une
ligne supplémentaire spécifiant un module
supplémentaire, et les modules sont
spécifiés dans un ordre différent.
Premièrement, pam_securetty.so
empêche les root login de se produire sur des terminaux
non sécurisés. Ceci interdit efficacement toutes
les tentatives rlogin de connexion en
tant que root. Si vous voulez les autoriser (auquel cas nous
vous conseillons de ne pas être connecté à
Internet ou d'être protégé par un bon
pare-feu), vous pouvez simplement supprimer cette ligne.
Deuxièmement, si
pam_rhosts_auth.so authentifie
l'utilisateur, PAM notifie immédiatement la
réussite de l'opération à
rlogin sans vérification du mot de
passe. Si pam_rhosts_auth.so ne parvient
pas à authentifier l'utilisateur, l'échec de
l'authentification est ignoré.
Troisièmement, si
pam_rhosts_auth.so n'est pas parvenu
à authentifier l'utilisateur, le module
pam_pwdb.so effectue une authentification
par mot de passe normale.
Enfin, pam_nologin.so vérifie
/etc/nologin, comme spécifié ci-dessus.
Si vous ne voulez pas demander la saisie d'un mot de passe en
cas d'échec du contrôle
securetty, vous pouvez remplacer
required par
requisite pour le module
pam_securetty.so.
Pour des raisons de sécurité,
rexec n'est pas activé dans
Red Hat Linux 6.2. Pour l'activer, vous devez identifier une
ligne du fichier /etc/pam.d/rexec comme
un commentaire. Voici un exemple de fichier (votre fichier
peut être légèrement
différent) :
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
|
Pour activer rexec, la ligne
faisant référence au module
pam_nologin.so doit être
identifiée comme un commentaire :
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nullok
#auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
|
Une fois ce fichier modifié, rexec est activé.
 | Remarque |
|---|
| | Si votre fichier /etc/pam.d/rexec
contient une ligne faisant référence au module
pam_securetty.so, vous ne serez pas en
mesure d'exécuter la commande
rexec en tant que root. Pour ce faire,
vous devez également identifier la ligne faisant
référence au module
pam_securetty.so comme un commentaire.
|
Ceci n'est qu'une introduction aux PAM. Vous trouverez plus
de détails dans le répertoire
/usr/doc/pam* , notamment les documents
System Administrators' Guide,
Module Writers' Manual,
Application Developers' Manual et la
norme PAM, DCE-RFC 86.0.