14.4. Exemples de fichiers de configuration PAM

Ci-dessous figure un exemple de fichier de configuration PAM:

#%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, comme l'indique le caractère dièse (#) placé au début de la ligne.

Les lignes deux à quatre empilent trois modules à utiliser pour l'authentification de connexion.

auth      required  /lib/security/pam_securetty.so

Ce module sert à s'assurer que, si l'utilisateur essaie de se connecter en tant que super-utilisateur (ou root), le terminal tty sur lequel il se connecte fait bien partie de la liste se trouvant dans le fichier /etc/securetty, si ce fichier existe.

auth      required  /lib/security/pam_unix.so shadow nullok

Ce module invite l'utilisateur à fournir un mot de passe, puis le vérifie à l'aide des informations stockées dans /etc/passwd et vérifie s'il existe dans /etc/shadow. Le module pam_unix.so détecte et utilise automatiquement les mots de passe masqués pour authentifier les utilisateurs. Reportez-vous à Section 6.5 Mots de passe masqués pour plus d'informations sur les mots de passe masqués.

L'argument nullok donne l'instruction au module pam_unix.so d'autoriser un mot de passe vide.

auth      required  /lib/security/pam_nologin.so

Il s'agit de la dernière phase du processus d'authentification. Elle vérifie l'existence du fichier /etc/nologin. Si nologin n'existe pas et que l'utilisateur n'est pas un super-utilisateur (ou root), l'authentification échoue.

NoteRemarque
 

Dans cet exemple, les trois modules auth sont vérifiés, même si le premier module auth échoue. De cette façon, l'utilisateur ne peut pas savoir à quel moment l'authentification a échoué. Si des agresseurs venaient à connaître ces informations, ils pourrait plus facilement déduire de quelle façon pénétrer dans le système.

account   required  /lib/security/pam_unix.so

Ce module effectuer toute vérification de compte lorsque cela est nécessaire. Par exemple, si des mots de passe masqués ont été activés, l'élément compte du module pam_unix.so vérifiera si le compte a expiré 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 un mot de passe n'est plus valable, l'élément mot de passe du module pam_cracklib.so invite l'utilisateur à en fournir un nouveau. Il vérifie ensuite le mot de passe créé afin de déterminer s'il peut être facilement retrouvé par un programme de craquage de mots de passe basé sur des dictionnaires. Si le test du mot de passe échoue, le programme donne à l'utilisateur deux autres possibilités de créer un mot de passe sûr, comme il l'est précisé dans 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étermine que le mot de passe doit être changé.

L'argument shadow donne l'instruction au module de créer des mots de passe masqués lors de la mise à jour du mot de passe d'un utilisateur.

L'argument nullok donne l'instruction au module d'autoriser l'utilisateur à changer son mot de passe à partir d'un mot de passe vide; sinon, un mot de passe non-valide est traité comme un verrouillage de compte.

Le dernier argument de cette ligne, use_authtok, est un exemple illustrant bien l'importance de l'ordre lors de l'empilage de modules PAM. Cet argument indique au module de ne pas demander à l'utilisateur un nouveau mot de passe. Au lieu de cela, il accepte tous les mots de passe qui ayant été enregistrés dans le précédent module de mots de passe. De cette façon, 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 l'élément session du module pam_unix.so gérera la session. Ce module enregistre dans /var/log/messages le nom d'utilisateur ainsi que le type de service au début et à la fin de chaque session. Il peut être complété en l'empilant avec d'autres modules de session si vous désirez obtenir une fonctionnalité supplémentaire.

L'exemple de fichier de configuration ci-dessous illustre l'empilage du module auth pour le programme 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

Tout d'abord, pam_nologin.so vérifie l'existence de /etc/nologin. S'il existe, seul le super-utilisateur (ou root) se voit autoriser la connexion.

auth      required    /lib/security/pam_securetty.so

Le module pam_securetty.so empêche les connexions en tant que super-utilisateur sur des terminaux non-sécurisés. Ce faisant, toute tentative d'accès au module rlogin est rejetée en raison des précautions de sécurité.

TipAstuce
 

Pour établir une connexion en tant que super-utilisateur, utilisez OpenSSH à la place. Pour plus d'informations sur le protocole SSH, consultez Chapter 18 Protocole SSH.

auth      required    /lib/security/pam_env.so

Cette ligne charge le module pam_env.so, qui définit les variables d'environnement spécifiées dans /etc/security/pam_env.conf.

auth      sufficient  /lib/security/pam_rhosts_auth.so

Le module pam_rhosts_auth.so authentifie ensuite l'utilisateur à l'aide de .rhosts dans le répertoire personnel de l'utilisateur. En cas de réussite, PAM authentifie immédiatement la session. En revanche, si pam_rhosts_auth.so échoue lors de l'authentification de l'utilisateur, cette tentative non-réussie n'est pas prise en compte.

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

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

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

TipAstuce
 

Pour éviter que PAM n'invite l'utilisateur à fournir un mot de passe lorsque la vérification securetty échoue, changez l'indicateur du module pam_securetty.so de required à requisite.