Authentification avec les modules PAM
- CONTENU
Cet article décrit le concept PAM, la structure de la configuration de PAM et l'utilisation de ses outils de configuration.
- 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
login
ousu
. Le nom du serviceother
est 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 SLE 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 SLE 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 SLE 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_ARGS
Les 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'indicateurrequisite
peut ê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'indicateursufficient
n'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 SLE 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-config
créer la configuration la plus simple possible que vous pourrez étendre ultérieurement. La commandepam-config --create
crée une configuration d'authentification Unix simple. Les fichiers de configuration préexistants non conservés parpam-config
sont é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 --ldap
simple. 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-debug
active 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-debug
dé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 SLE Micro pour exiger des clés U2F pour la connexion locale #
Pour renforcer la sécurité lors de la connexion locale à SLE 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 SLE Micro, vous devez associer votre clé à votre compte sur SLE 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 :
>
sudo
mkdir -p ~/.config/YubicoExécutez la commande
pamu2fcfg
qui génère des lignes de configuration :>
sudo
pamu2fcfg > ~/.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 :
>
sudo
pamu2fcfg -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
:>
sudo
mkdir /etc/YubicoDéplacez le fichier créé :
>
sudo
mv ~/.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.so
au 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.so
Si vous avez placé le fichier
u2f_keys
à un autre emplacement que$HOME/.config/Yubico/u2f_keys
, vous devez utiliser l'optionauthfile
dans le fichier PAM/etc/pam.d/login
comme 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–2024 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.