Exemples de fichiers de configuration PAM

Un fichier de configuration PAM ressemble à ceci :

#%PAM-1.0
auth      required  /lib/security/pam_securetty.so
auth      required  /lib/security/pam_unix.so shadow nullok
auth      required  /lib/security/pam_nologin.so
account   required  /lib/security/pam_unix.so
password  required  /lib/security/pam_cracklib.so retry=3
password  required  /lib/security/pam_unix.so shadow nullok use_authtok
session   required  /lib/security/pam_unix.so

La première ligne est un commentaire car toute ligne commençant par un # est un commentaire. Les lignes deux à quatre superposent trois modules à utiliser pour l'authentification de connexion.

auth      required  /lib/security/pam_securetty.so

La deuxième ligne sert à s'assurer que, si l'utilisateur essaie de se connecter en tant qu'utilisateur root, le terminal sur lequel il se connecte fait partie de la liste se trouvant dans le fichier /etc/securetty, si ce fichier existe.

auth      required  /lib/security/pam_unix.so nullok

Cette ligne fait en sorte que le mot de passe de l'utilisateur soit demandé et le vérifié en utilisant les informations sockées dans /etc/passwd et, s'il existe, dans /etc/shadow. Le module pam_unix.so détecte et utilise automatiquement les mots de passe masqués stockés dans /etc/shadow afin d'authentifier les utilisateurs. Consultez la la section intitulée Utilitaires masqués dans Chapitre 6 pour plus d'informations sur les mots de passe masqués.

L'argument nullok indique au module pam_unix.sod'autoriser un mot de passe vide.

auth      required  /lib/security/pam_nologin.so

La dernière phase du processus d'authentification contrôle si le fichier /etc/nologin existe. Si nologin n'existe pas et que l'utilisateur n'est pas root, l'authentification échoue.

NoteRemarque
 

Dans cet exemple, les trois modules auth sont vérifiés, même si le premier module auth échoue. Ceci empêche à l'utilisateur de savoir à quel moment l'authentification a échoué. Si des hackers s'appropriaient de ces informations, ils pourraient entrer plus facilement dans le système.

account   required  /lib/security/pam_unix.so

Cette ligne active la vérification des comptes lorsque nécessaire. Par exemple, si des mots de passe masqués ont été activés, le module pam_unix.so vérifie si le compte est périmé ou si l'utilisateur a changé son mot de passe pendant le délai de grâce alloué.

password  required  /lib/security/pam_cracklib.so retry=3

Si le mot de passe n'est plus valable, l'élément mot de passe du module pam_cracklib.so en demande un nouveau. Il vérifie ensuite le mot de passe créé pour établir s'il peut être facilement détecté par un programme de détermination de mots de passe utilisant un dictionnaire. Si le mot de passe n'est pas accepté, il offre à l'utilisateur deux autres possibilités de créer un mot de passe sûr, et ce grâce à l'argument retry=3.

password  required  /lib/security/pam_unix.so shadow nullok use_authtok

Cette ligne spécifie que si le programme change le mot de passe de l'utilisateur, il doit le faire en utilisant l'élément password du module pam_unix.so. Ceci se produit uniquement si la partie auth du module pam_unix.so décide que le mot de passe doit être changé, par exemple si un mot de passe masqué est périmé.

L'arguement shadow indique au module de créer des mots de passe masqués lors de la mise à jour d'un mot de passe utilisateur.

L'argument nullok fait en sorte que le module autorise l'utilisateur à changer son mot de passe depuis un mot de passe vide, autrement un mot de passe non valide est traité comme un verrouillage de compte.

Le dernier argument de cette ligne, use_authtok, est un bon exemple d'empilage de modules PAM. Cet argument fait en sorte que le module ne demande pas à l'utilisateur un nouveau mot de passe. Il accepte tous les mots de passe qui passent à travers le précédent module mot de passe. Ainsi, tous les nouveaux mots de passe doivent passer le test de sécurité pam_cracklib.so avant d'être acceptés.

session required /lib/security/pam_unix.so

La dernière ligne spécifie que le module pam_unix.so gérera la session. Ce module connecte le nom d'utilisateur et le type de service à /var/log/messages au début et à la fin de chaque session. Il peut être également empilé avec d'autres modules si vous désirez obtenir des fonctions supplémentaires.

Dans le prochain exemple, nous examinerons la configuration auth de rlogin :

#%PAM-1.0
auth      required    /lib/security/pam_nologin.so
auth      required    /lib/security/pam_securetty.so
auth      required    /lib/security/pam_env.so
auth      sufficient  /lib/security/pam_rhosts_auth.so
auth      required    /lib/security/pam_stack.so service=system-auth

Premièrement, pam_nologin.so vérifie si /etc/nologin existe. S'il existe, seuls les utilisateurs root peuvent obtenir l'accès.

auth      required    /lib/security/pam_securetty.so

Ensuite le module pam_securetty.so empêche les connexions root sur des terminaux non sécurisés. Ceci a pour effet de refuser toute tentative de rlogin root. Si vous devez vous connecter en tant que root, utilisez OpenSSH à la place. Pour plus d'informations sur le protocole SSH, consultez le Chapitre 10.

auth      required    /lib/security/pam_env.so

Le module pam_env.so charge les variables d'environnement spécifiées dans /etc/security/pam_env.conf.

auth      sufficient  /lib/security/pam_rhosts_auth.so

Si pam_rhosts_auth.so procède à l'authentification de l'utilisateur au moyen de .rhosts dans le répertoire personnel de l'utilisateur, PAM authentifie immédiatement la session rlogin. Si pam_rhosts_auth.so échoue lors de l'authentification de l'utilisateur, cette tentative non réussie est ignorée.

auth      required    /lib/security/pam_stack.so service=system-auth

Si pam_rhosts_auth.so ne réussit pas à authentifier l'utilisateur, le module pam_stack.so lance une authentification normale avec mot de passe.

L'argument service=system-auth indique que l'utilisateur doit passer à travers la configuration PAM pour l'autorisation du système qui se trouve dans /etc/pam.d/system-auth.

NoteRemarque
 

Si vous ne voulez pas qu'une invite de mot de passe apparaisse lorsque la vérification securetty échoue et détermine que l'utilisateur essaie de se connecter à distance comme utilisateur root, vous pouvez changer le module pam_securetty.so de required à requisite.