Authentification avec les modules PAM
- CONTENU
Linux utilise les modules PAM (Pluggable Authentication Modules - modules d'authentification enfichables) au cours de son processus d'authentification comme couche intermédiaire entre l'utilisateur et l'application. Cet article décrit le concept PAM, la structure de la configuration de PAM et l'utilisation d'outils pour configurer PAM.
- MOTIF
Vous voulez savoir comment configurer un module PAM et configurer votre système pour utiliser les clés U2F.
- EFFORT
La lecture de l'article prend environ 20 minutes.
- CONDITIONS REQUISES
Pour configurer l'authentification à l'aide des clés U2F, vous devez disposer de clés YubiKeys ou de sécurité.
1 Présentation de PAM #
Il n'est pas rare que les administrateurs système et les programmeurs veuillent restreindre l'accès à certaines parties du système ou limiter l'utilisation de certaines fonctions d'une application. En l'absence de module PAM, les applications doivent se réadapter chaque fois qu'un nouveau mécanisme d'authentification (par exemple, LDAP, Samba or Kerberos) est disponible sur le marché. Cependant, ce processus est long et propice aux erreurs. Aussi, pour éviter ces inconvénients, l'une des solutions est de séparer les applications du mécanisme d'authentification et de déléguer cette authentification à des modules gérés de manière centrale. Chaque fois qu'un nouveau schéma d'authentification est nécessaire, il suffit d'adapter ou de rédiger un module PAM approprié à utiliser par le programme en question.
Le concept PAM comprend :
Des modules PAM qui sont un ensemble de bibliothèques partagées par un mécanisme d'authentification spécifique.
Une pile de modules avec un ou plusieurs modules PAM.
Un service compatible avec PAM qui nécessite une authentification à l'aide d'une pile de modules ou de modules PAM. Un service utilise généralement un nom explicite de l'application correspondante, comme
loginousu. Le nom du serviceotherest un mot réservé aux règles par défaut.Des arguments de module avec lesquels l'exécution d'un module PAM unique peut être influencée.
Un mécanisme évaluant chaque résultat d'une seule exécution de module PAM. Une valeur positive exécute le module PAM suivant. La façon dont une valeur négative est traitée dépend de la configuration : « aucune influence, continuer » à « arrêter immédiatement » et toute les étapes intermédiaires entre les deux sont des options valides.
2 Structure de la configuration PAM #
PAM sous SUSE Linux Micro est fourni avec une configuration basée sur un répertoire. L'ensemble des fichiers de configuration sont stockés à l'emplacement /etc/pam.d. Chaque service (ou programme) qui repose sur le mécanisme PAM possède son propre fichier de configuration dans ce répertoire. Par exemple, le service pour sshd est disponible dans le fichier /etc/pam.d/sshd.
/etc/pam.conf) non utilisée sous SUSE Linux Micro
La configuration de chaque service peut également être stockée à l'emplacement /etc/pam.conf. Toutefois, pour des raisons de maintenance et de convivialité, ce schéma de configuration n'est pas utilisé dans SUSE Linux Micro.
Les fichiers à l'emplacement /etc/pam.d/ définissent les modules PAM utilisés pour l'authentification. Chaque fichier est constitué de lignes, qui définissent un service et chaque ligne est constitué d'un maximum de quatre composants :
TYPE
CONTROL
MODULE_PATH
MODULE_ARGSLes composants ont la signification suivante :
- TYPE
Déclare le type de service. Les modules PAM sont traités comme des piles. Les différents types de modules ont des objectifs variés. Par exemple, un module vérifie le mot de passe, un autre vérifie l'emplacement à partir duquel a eu lieu l'accès au système et un autre lit les paramètres spécifiques à l'utilisateur. Les types de modules PAM sont au nombre de quatre :
-
auth Vérifiez l'authenticité de l'utilisateur, généralement en demandant un mot de passe. Cependant, l'authentification peut également être effectuée avec une carte à puce ou à l'aide de la biométrie (par exemple, empreintes digitales ou scan de l'iris).
-
account Les modules de ce type contrôlent si l'utilisateur dispose d'une autorisation générale pour utiliser le service demandé. Il peuvent, par exemple, vérifier que personne ne se connecte avec le nom d'utilisateur d'un compte ayant expiré.
-
password Ce type de module a pour but d'autoriser la modification d'un jeton d'authentification. Il s'agit généralement d'un mot de passe.
-
session Les modules de ce type sont responsables de la gestion et de la configuration des sessions utilisateur. Ils sont lancés avant et après l'authentification pour consigner les tentatives de connexion et configurer l'environnement spécifique de l'utilisateur.
-
- CONTROL
Indique le comportement d'un module PAM. Chaque module peut avoir les indicateurs de contrôle suivants :
-
required L'exécution d'un module portant cet indicateur doit avoir réussi pour que l'authentification puisse se poursuivre. En cas d'échec d'un module doté de l'indicateur
required, tous les autres modules ayant le même indicateur sont traités avant que l'utilisateur reçoive un message l'informant de l'échec de la tentative d'authentification.-
requisite Le traitement des modules ayant cet indicateur doit également avoir réussi, plus ou moins comme pour un module doté de l'indicateur
required. Par contre, en cas d'échec, l'utilisateur en est immédiatement averti et aucun autre module n'est traité. En cas de réussite, les autres modules sont ensuite traités, comme tout autre module doté de l'indicateurrequired. L'indicateurrequisitepeut être utilisé comme filtre de base pour vérifier certaines conditions fondamentales pour une authentification correcte.-
sufficient Après la réussite du traitement d'un module portant cet indicateur, l'application à l'origine de la demande reçoit immédiatement un message lui confirmant cette réussite et aucun autre module n'est traité, à condition qu'il n'y a pas eu d'échec précédemment d'un module ayant l'indicateur
required. L'échec d'un module doté de l'indicateursufficientn'a pas de conséquence directe, dans le sens où les modules ultérieurs sont traités dans leur ordre respectif.-
optional L'échec ou la réussite d'un module portant cet indicateur n'a pas de conséquence directe. Cela peut s'avérer pratique pour les modules dont la seule fonctionnalité est d'afficher un message (par exemple, pour avertir l'utilisateur de l'arrivée d'un message), sans exécuter d'autre action.
-
include Lorsque cet indicateur est attribué, le fichier indiqué en argument est inséré à cet endroit.
-
- MODULE_PATH
Contient le nom de fichier complet d'un module PAM. Il ne doit pas nécessairement être spécifié de manière explicite. Si le module se trouve dans le répertoire par défaut
/lib/security(pour toutes les plates-formes 64 bits prises en charge par SUSE Linux Micro, le répertoire est/lib64/security).- MODULE_ARGS
Contient une liste d'options séparées par des espaces pour influencer le comportement d'un module PAM, telles que
debug(active le débogage) ounullok(autorise l'utilisation de mots de passe vides).
En outre, des fichiers de configuration globale existent pour les modules PAM sous /etc/security. Ces fichiers définissent le comportement exact de ces modules (par exemple, pam_env.conf et time.conf). Chaque application qui utilise un module PAM invoque un ensemble de fonctions PAM. Ces fonctions traitent ensuite les informations des différents fichiers de configuration et renvoient les résultats à l'application qui a initié la demande.
Pour simplifier la création et la maintenance des modules PAM, des fichiers de configuration par défaut communs pour les types auth, account, password et les modules session ont été introduits. Ceux-ci sont récupérés à partir de la configuration PAM de chaque application. Les mises à jour des modules de configuration globale PAM dans common-* sont donc propagées dans tous les fichiers de configuration PAM sans que l'administrateur ne doive mettre à jour chaque fichier de configuration PAM.
Les fichiers de configuration globale PAM sont gérés à l'aide de l'outil pam-config. Cet outil ajoute automatiquement de nouveaux modules à la configuration, modifie la configuration des modules existants ou supprime des modules (ou des options) des configurations. L'intervention manuelle dans la gestion des configurations PAM est réduite au minimum ou n'est plus nécessaire.
2.1 Exemple de configuration PAM #
Pour illustrer un exemple de cas d'utilisation réel de la configuration PAM, la configuration de sshd a été utilisée dans cette section :
/etc/pam.d/sshd) ##%PAM-1.0 1 auth requisite pam_nologin.so 2 auth include common-auth 3 account requisite pam_nologin.so 2 account include common-account 3 password include common-password 3 session required pam_loginuid.so 4 session include common-session 3 session optional pam_lastlog.so silent noupdate showfailed 5
Déclare la version de ce fichier de configuration pour PAM 1.0. Il s'agit simplement d'une convention, mais elle pourrait être utilisée à l'avenir pour vérifier la version. | |
Vérifie si le paramètre | |
Fait référence aux fichiers de configuration de quatre types de modules : | |
Définit l'attribut de processus UID de connexion pour le processus qui a été authentifié. | |
Affiche des informations concernant la dernière connexion d'un utilisateur. |
En incluant les fichiers de configuration au lieu d'ajouter chaque module séparément à sa configuration PAM respective, vous obtenez automatiquement une configuration PAM mise à jour lorsqu'un administrateur modifie les valeurs par défaut.
Le premier fichier inclus (common-auth) invoque des modules du type auth : pam_env.so, pam_gnome_keyring.so et pam_unix.so. Reportez-vous à l'Exemple 2, « Configuration par défaut pour la section auth (common-auth) ». N'oubliez pas que les modules peuvent différer en fonction de votre installation.
auth (common-auth) #auth required pam_env.so 1 auth optional pam_gnome_keyring.so 2 auth required pam_unix.so try_first_pass 3
| |
| |
|
La pile tout entière des modules auth est traitée avant que sshd ne soit informé de la réussite ou non de la connexion. Le traitement de tous les modules de la pile ayant l'indicateur de contrôle required doit avoir réussi avant que sshd reçoive un message concernant le résultat positif. En cas d'échec de l'un des modules, le reste de la pile continue à être traité et ce n'est qu'à ce moment-là que sshd est averti de ce résultat négatif.
Dès que le traitement de tous les modules de type auth a réussi, une autre instruction d'inclusion est traitée (dans le cas présent, il s'agit de l'Exemple 3, « Configuration par défaut pour la section account (common-account) »). common-account ne contient qu'un seul module, pam_unix. Si pam_unix renvoie un résultat indiquant que l'utilisateur existe, sshd reçoit un message de réussite et la pile suivante de modules (password) est traitée.
account (common-account) #account required pam_unix.so try_first_pass
Une fois encore, la configuration PAM de sshd implique seulement une instruction d'inclusion faisant référence à la configuration par défaut des modules password dans common-password. L'exécution de ces modules doit avoir réussi (indicateurs de contrôle requisite et required) chaque fois que l'application demande de modifier un jeton d'authentification.
Le changement d'un mot de passe ou d'un autre jeton d'authentification requiert un contrôle de sécurité. Ce contrôle est réalisé avec le module. pam_cracklib. Le module pam_unix utilisé par la suite transfère les anciens et les nouveaux mots de passe à partir de pam_cracklib, de sorte que l'utilisateur n'a pas besoin de se réauthentifier après avoir modifié le mot de passe. Grâce à cette procédure, il est impossible d'éviter les contrôles effectués par pam_cracklib. Chaque fois que le type account ou auth est configuré pour signaler que des mots de passe ont expiré, les modules password doivent également être utilisés.
Comme étape finale, les modules de type session (compilés dans le fichier common-session), sont appelés pour configurer la session selon les paramètres de l'utilisateur en question. Le module pam_limits charge le fichier /etc/security/limits.conf, ce qui peut définir des limites d'utilisation pour certaines ressources système. Le module pam_unix est à nouveau traité. Le module pam_umask peut être utilisé pour définir le masque de création du mode fichier. Étant donné que ce module porte l'indicateur optional, un échec de ce module n'affectera pas la réussite de l'ensemble de la pile de modules de session. Les modules session sont appelés une deuxième fois lorsque l'utilisateur se déconnecte.
3 Configuration des modules PAM #
Certains modules PAM peuvent être configurés. Les fichiers de configuration se trouvent à l'emplacement /etc/security. Cette section décrit brièvement les fichiers de configuration relatifs à l'exemple sshd : pam_env.conf et limits.conf.
3.1 pam_env.conf #
pam_env.conf peut servir à définir un environnement standardisé pour les utilisateurs qui est paramétré chaque fois que le module pam_env est invoqué. Grâce à lui, prédéfinissez les variables d'environnement à l'aide de la syntaxe suivante :
VARIABLE [DEFAULT=VALUE] [OVERRIDE=VALUE]
- VARIABLE
Nom de la variable d'environnement à définir.
-
[DEFAULT=<value>] Valeur VALUE par défaut que l'administrateur souhaite définir.
-
[OVERRIDE=<value>] Valeurs pouvant faire l'objet d'une requête et qui sont définies par
pam_env, ce qui écrase la valeur par défaut.
Un exemple d'utilisation classique de pam_env est l'adaptation de la variable DISPLAY qui est modifiée chaque fois qu'une connexion est exécutée à distance. Il est présenté dans l'Exemple 4, « pam_env.conf ».
REMOTEHOST DEFAULT=localhost OVERRIDE=@{PAM_RHOST}
DISPLAY DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
La première ligne définit la valeur de la variable REMOTEHOST sur localhost. Cette valeur est utilisée chaque fois que pam_env ne parvient pas à déterminer d'autre valeur. La variable DISPLAY contient alors la valeur REMOTEHOST. Pour plus d'informations, reportez-vous aux commentaires à l'emplacement /etc/security/pam_env.conf.
3.2 limits.conf #
Vous pouvez définir des limites système pour un utilisateur ou un groupe dans le fichier limits.conf qui est lu par le module pam_limits. Ce fichier permet de définir soit des limites strictes (qui ne doivent absolument pas être dépassées), soit des limites souples (qui peuvent être dépassées temporairement). Pour plus d'informations sur la syntaxe et les options, reportez-vous aux commentaires à l'emplacement /etc/security/limits.conf.
4 Configuration de PAM à l'aide de pam-config #
L'outil pam-config vous aide à configurer les fichiers de configuration PAM globaux (/etc/pam.d/common-*) et plusieurs configurations d'application sélectionnées. Pour obtenir une liste des modules pris en charge, utilisez la commande pam-config --list-modules. La commande pam-config permet de gérer vos fichiers de configuration PAM. Ajoutez de nouveaux modules à vos configurations PAM, supprimez d'autres modules ou modifiez les options de ces modules. Lors de la modification des fichiers de configuration PAM globaux, aucune adaptation manuelle de la configuration PAM pour des applications individuelles n'est requise.
Un cas d'utilisation simple de pam-config implique les tâches suivantes :
Générer automatiquement une nouvelle configuration PAM de type Unix. Laissez la commande
pam-configcréer la configuration la plus simple possible que vous pourrez étendre ultérieurement. La commandepam-config --createcrée une configuration d'authentification Unix simple. Les fichiers de configuration préexistants non conservés parpam-configsont écrasés, mais des copies de sauvegarde sont conservées en tant que*.pam-config-backup.Ajouter une nouvelle méthode d'authentification. L'ajout d'une nouvelle méthode d'authentification (par exemple, LDAP) à votre pile de modules PAM se résume à une commande
pam-config --add --ldapsimple. LDAP est ajouté chaque fois que nécessaire dans tous les fichiers de configuration PAMcommon-*-pc.Ajouter le débogage à des fins de test. Pour vous assurer que la nouvelle procédure d'authentification fonctionne comme prévu, activez le débogage pour toutes les opérations liées à PAM. La commande
pam-config --add --ldap-debugactive le débogage pour les opérations PAM liées à LDAP.Interroger votre configuration. Avant d'appliquer définitivement votre nouvelle configuration PAM, vérifiez qu'elle contient toutes les options que vous souhaitiez ajouter. La commande
pam-config --query --MODULE liste le type et les options du module PAM interrogé.Supprimer les options de débogage. Terminez en supprimant l'option de débogage de votre configuration lorsque vous êtes entièrement satisfait des performances de celle-ci. La commande
pam-config --delete --ldap-debugdésactive le débogage pour l'authentification LDAP. Si vous aviez ajouté des options de débogage pour d'autres modules, utilisez des commandes similaires pour les désactiver.
Pour plus d'informations sur la commande pam-config et les options disponibles, reportez-vous à la page de manuel de pam-config(8).
5 Configuration manuelle de PAM #
Si vous préférez créer ou gérer manuellement vos fichiers de configuration PAM, veillez à désactiver pam-config pour ces fichiers.
Lorsque vous créez vos fichiers de configuration PAM à partir de zéro à l'aide de la commande pam-config --create, des liens symboliques sont créés entre les fichiers common-* et common-*-pc. pam-config modifie uniquement les fichiers de configuration common-*-pc. La suppression de ces liens symboliques désactive effectivement pam-config, car pam-config ne fonctionne que sur les fichiers common-*-pc et ces fichiers ne sont pas appliqués sans les liens symboliques.
pam_systemd.so dans la configuration
Si vous créez votre propre configuration PAM, veillez à inclure pam_systemd.so configuré avec l'option session
optional. Ne pas inclure pam_systemd.so peut entraîner des problèmes en raison de limites de tâches systemd. Pour plus d'informations, reportez-vous à la page du manuel de pam_systemd.so.
6 Configuration de SUSE Linux Micro pour exiger des clés U2F pour la connexion locale #
Pour renforcer la sécurité lors de la connexion locale à SUSE Linux Micro, vous pouvez configurer l'authentification à deux facteurs à l'aide de la structure pam-u2f et de la fonction U2F sur les clés YubiKeys et les clés de sécurité.
Pour configurer U2F sur votre système SUSE Linux Micro, vous devez associer votre clé à votre compte sur SUSE Linux Micro. Ensuite, configurez votre système pour utiliser la clé. La procédure est décrite dans les sections suivantes.
6.1 Association de la clé U2F à votre compte #
Pour associer votre clé U2F à votre compte, procédez comme suit :
Connectez-vous à votre machine.
Insérez votre clé U2F.
Créez un répertoire pour la configuration de la clé U2F :
>sudomkdir -p ~/.config/YubicoExécutez la commande
pamu2fcfgqui génère des lignes de configuration :>sudopamu2fcfg > ~/.config/Yubico/u2f_keysLorsque votre périphérique commence à clignoter, appuyez sur le contact en métal pour confirmer l'association.
Nous vous recommandons d'utiliser un périphérique de sauvegarde U2F, que vous pouvez configurer en exécutant les commandes suivantes :
Exécutez :
>sudopamu2fcfg -n >> ~/.config/Yubico/u2f_keysLorsque votre périphérique commence à clignoter, appuyez sur le contact en métal pour confirmer l'association.
Vous pouvez déplacer le fichier de sortie de l'emplacement par défaut vers un répertoire qui nécessite l'autorisation sudo pour modifier le fichier afin d'améliorer la sécurité. Par exemple, déplacez-le dans le répertoire /etc. Pour ce faire, procédez comme suit :
Créez un répertoire dans
/etc:>sudomkdir /etc/YubicoDéplacez le fichier créé :
>sudomv ~/.config/Yubico/u2f_keys /etc/Yubico/u2f_keys
u2f_keys à un emplacement autre que celui par défaut
Si vous déplacez le fichier de sortie vers un autre répertoire que celui par défaut ($HOME/.config/Yubico/u2f_keys), vous devez ajouter le chemin d'accès au fichier /etc/pam.d/login comme décrit à la Section 6.2, « Mise à jour de la configuration PAM ».
6.2 Mise à jour de la configuration PAM #
Après avoir créé la configuration des clés U2F, vous devez ajuster la configuration PAM sur votre système.
Ouvrez le fichier
/etc/pam.d/login.Ajoutez la ligne
auth required pam_u2f.soau fichier comme suit :#%PAM-1.0 auth include common-auth auth required pam_u2f.so account include common-account password include common-password session optional pam_keyinit.so revoke session include common-session #session optional pam_xauth.soSi vous avez placé le fichier
u2f_keysà un autre emplacement que$HOME/.config/Yubico/u2f_keys, vous devez utiliser l'optionauthfiledans le fichier PAM/etc/pam.d/logincomme suit :#%PAM-1.0 auth requisite pam_nologin.so auth include common-auth auth required pam_u2f.so authfile=<PATH_TO_u2f_keys> ...où <PATH_TO_u2f_keys> est le chemin absolu du fichier
u2f_keys.
7 Mentions légales #
Copyright © 2006–2025 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.