16.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 pour l'authentification de la connexion (ou login).

auth      required  pam_securetty.so

Ce module permet de 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 à saisir un mot de passe, puis le vérifie à l'aide des informations stockées dans /etc/passwd et s'il existe, consulte /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 obtenir 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. Cette dernière consiste à vérifier l'existence du fichier /etc/nologin. Si nologin existe et que l'utilisateur n'est pas le super-utilisateur (ou root), l'authentification échoue.

NoteRemarque
 

Dans cet exemple, les trois modules auth font l'objet d'une vérification, 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 pourraient plus facilement déduire de manière la plus efficace de pénétrer dans le système.

account   required  pam_unix.so

Ce module effectue toute vérification de compte 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 bon exemple montrant 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. À la place, il accepte tout mot de passe enregistré dans le module de mots de passe précédent. 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. Au début et à la fin de chaque session, ce module enregistre dans /var/log/messages le nom d'utilisateur ainsi que le type de service. Un empilage avec d'autres modules de session permet d'obtenir une fonctionnalité plus avancée.

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 mesures de sécurité de l'application.

TuyauAstuce
 

Pour établir une connexion à distance en tant que super-utilisateur, utilisez OpenSSH à la place. Pour obtenir davantage d'nformations sur le sujet, consultez le Chapitre 20.

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 infructueuse 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 telle qu'elle 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.