15.4. Exemples de fichiers de configuration PAM

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

#%PAM-1.0
auth      required  pam_securetty.so
auth      required  pam_unix.so shadow nullok
auth      required  pam_nologin.so
account   required  pam_unix.so
password  required  pam_cracklib.so retry=3
password  required  pam_unix.so shadow nullok use_authtok
session   required  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  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  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 à la Section 6.5 pour davantage d'informations.

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

auth      required  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 existe 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  pam_unix.so

Ce module effectue 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  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  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 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    pam_nologin.so
auth      required    pam_securetty.so
auth      required    pam_env.so
auth      sufficient  pam_rhosts_auth.so
auth      required    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    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é.

TuyauAstuce
 

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

auth      required    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  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    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.

TuyauAstuce
 

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.