| Red Hat Linux 6.2: Le Guide officiel de référence Red Hat Linux | ||
|---|---|---|
| Précédent | Chapitre 2. Administration du système | Suivant |
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.
PAM, qui est l'acronyme de Pluggable Authentication Modules, modules d'authentification enfichables , est une manière de permettre à l'administrateur système de définir une stratégie d'authentification sans devoir recompiler des programmes d'authentification. PAM permet de contrôler la manière dont les modules sont enfichés dans les programmes en modifiant un fichier de configuration.
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.
Chaque programme utilisant des PAM définit son propre nom de "service". Le programme login définit le type de service login, ftpd définit le type de service ftp, etc. En général, le type de service est le nom du programme utilisé pour accéder au service, pas celui du programme (si ce n'est pas le même) utilisé pour fournir le service.
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.
Le module pam_pwdb.so détecte automatiquement si vous utilisez un mot de passe masqué et effectue tous les ajustements nécessaires. Consultez la la section intitulée Utilitaires masqués pour plus de détails.
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.
| Précédent | Sommaire | Suivant |
| Groupe floppy | Niveau supérieur | Utilitaires masqués |