GNU/Linux >> Tutoriels Linux >  >> Linux

Une introduction aux modules d'authentification enfichables (PAM) sous Linux

Les modules d'authentification enfichables (PAM) existent depuis 1997. On m'a appris que PAM provenait de Solaris de Sun, et il semble que la première utilisation et vulgarisation en entreprise s'y soit produite. Cependant, selon un article de 1997 que j'ai trouvé, la première implémentation complète a été le déploiement de Linux-PAM. L'article est toujours disponible sur Linux Journal. Le principe de base et la mise en œuvre n'ont pas changé depuis lors. Il y a quelques nouveaux mots clés et de nombreux nouveaux modules, mais dans l'ensemble, le processus est le même qu'il y a 20 ans.

En tant que A dans PAM indique, PAM concerne l'authentification. Dans la plupart des cas, lorsque vous vous connectez à un système via une console ou à travers le réseau avec SSH ou Cockpit, PAM est impliqué. Peu importe que les comptes d'utilisateurs soient détenus localement ou dans un emplacement centralisé. Pour autant qu'il soit utilisé, il n'est pas courant de manipuler directement les fichiers de configuration de PAM. D'autres utilitaires le font pour vous. De nombreuses modifications sont apportées à l'installation, comme lors de l'installation du sssd RPM ou en utilisant le ipa-client-install utilitaire. Les configurations supplémentaires les plus courantes peuvent être gérées par authconfig (RHEL7 et versions antérieures) ou authselect (RHEL8), ou même via l'interface web Cockpit. La plupart des administrateurs ne connaissent pas les fichiers de configuration PAM tant qu'ils ne sont pas impliqués dans les sujets avancés d'authentification et de sécurité.

Que gagnons-nous avec PAM ?

PAM sépare les tâches standard et spécialisées d'authentification des applications. Des programmes tels que login , gdm , sshd , ftpd , et bien d'autres veulent tous savoir qu'un utilisateur est bien celui qu'il prétend être, mais il existe de nombreuses façons de le faire. Un utilisateur peut fournir un nom d'utilisateur et un mot de passe qui peuvent être stockés localement ou à distance avec LDAP ou Kerberos. Un utilisateur peut également fournir une empreinte digitale ou un certificat comme identifiant. Il serait pénible de demander à chaque développeur d'application de réécrire les vérifications d'authentification pour chaque nouvelle méthode. Un appel aux bibliothèques PAM laisse les vérifications aux experts en authentification. PAM est enfichable en ce sens que différentes applications peuvent exécuter différents tests et modulaire en ce sens que nous pouvons ajouter de nouvelles méthodes avec de nouvelles bibliothèques.

Examinons les étapes de haut niveau effectuées lorsqu'un utilisateur défini localement se connecte à une console textuelle :

  • L'application de connexion demande un nom d'utilisateur et un mot de passe, puis crée un libpam appel d'authentification pour demander "Cet utilisateur est-il celui qu'il prétend être ?" Le pam_unix module est chargé de vérifier l'authentification du compte local. D'autres modules peuvent également être vérifiés, et finalement le résultat est renvoyé au processus de connexion.
  • Le processus de connexion demande ensuite :"Cet utilisateur est-il autorisé à se connecter ?", puis effectue un appel de compte à libpam . Le pam_unix module vérifie des choses comme si le mot de passe a expiré. D'autres modules peuvent vérifier les listes de contrôle d'accès basées sur l'hôte ou le temps. Une réponse globale est renvoyée au processus.
  • Si le mot de passe a expiré, l'application répond. Certaines applications ne parviennent tout simplement pas à connecter l'utilisateur. Le processus de connexion invite l'utilisateur à saisir un nouveau mot de passe.
  • Pour obtenir le mot de passe vérifié et écrit au bon emplacement, le processus de connexion effectue un appel de mot de passe à libpam . Le pam_unix le module écrit dans le shadow local dossier. D'autres modules peuvent également être appelés pour vérifier la force du mot de passe.
  • Si le processus de connexion se poursuit à ce stade, il est prêt à créer la session. Un appel de session à libpam résultats dans le pam_unix module écrivant un horodatage de connexion au wtmp dossier. D'autres modules permettent l'authentification X11 ou les contextes utilisateur SELinux.
  • A la déconnexion, lorsque la session est fermée, un autre appel de session peut être effectué vers libpam . C'est alors que le pam_unix le module écrit l'horodatage de déconnexion dans wtmp fichier.

Il existe de nombreux composants pour PAM

Si vous modifiez l'authentification à l'aide d'un programme tel que authconfig ou authselect et que vous voulez voir ce qui a changé, voici quelques-uns des endroits où chercher :

/usr/lib64/security
Une collection de bibliothèques PAM qui effectuent diverses vérifications. La plupart de ces modules ont des pages de manuel pour expliquer le cas d'utilisation et les options disponibles.

/etc/pam.d
Une collection de fichiers de configuration pour les applications qui appellent libpam . Ces fichiers définissent quels modules sont vérifiés, avec quelles options, dans quel ordre et comment gérer le résultat. Ces fichiers peuvent être ajoutés au système lors de l'installation d'une application et sont fréquemment modifiés par d'autres utilitaires.

Étant donné qu'il existe plusieurs vérifications effectuées par toutes les applications, ces fichiers peuvent également inclure des instructions pour appeler d'autres fichiers de configuration dans ce répertoire. La plupart des modules partagés se trouvent dans le system-auth fichier pour l'authentification locale et le password-auth fichier pour les applications écoutant les connexions distantes.

/etc/security
Une collection de fichiers de configuration supplémentaires pour des modules spécifiques. Certains modules, tels que pam_access et pam_time , permettent une granularité supplémentaire pour les vérifications. Lorsqu'un fichier de configuration d'application appelle ces modules, les vérifications sont effectuées à l'aide des informations supplémentaires de ses fichiers de configuration supplémentaires correspondants. D'autres modules, comme pam_pwquality , facilitez la modification de la configuration par d'autres utilitaires en plaçant toutes les options dans un fichier séparé plutôt que sur la ligne de module dans le fichier de configuration de l'application.

/var/log/secure
La plupart des erreurs de sécurité et d'authentification sont signalées dans ce fichier journal. Les autorisations sont configurées sur ce fichier pour restreindre l'accès.

man pam
Cette page de manuel décrit le processus global, y compris les types d'appels et une liste des fichiers impliqués.

man pam.conf
Cette page de manuel décrit le format général et définit les mots-clés et les champs pour pam.d fichiers de configuration.

man -k pam_
Cette recherche de pages de manuel répertorie les pages disponibles pour les modules installés.

Récapitulez

PAM permet un environnement d'authentification beaucoup plus robuste que ce que les services par application pourraient fournir. Il existe sous Linux depuis de très nombreuses années et est impliqué dans presque tous les processus d'identification des utilisateurs.

Dans le prochain article, je vais parcourir le format du /etc/pam.d fichiers de configuration.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. Qu'est-ce qu'un utilisateur Linux ?

  2. Introduction à Nmap sur Kali Linux

  3. Une introduction à la surveillance des comptes utilisateur Linux

  4. Commande Linux su

  5. Changer le nom d'utilisateur sous Linux

Comment savoir si un utilisateur utilise une authentification SSH basée sur un mot de passe ou une clé sous Linux

Commande su sous Linux

Anatomie d'un fichier de configuration Linux Pluggable Authentication Modules (PAM)

Comment améliorer la sécurité des utilisateurs Linux avec les paramètres du module d'authentification enfichable

Authentification PAM

Comment changer d'utilisateur sous Linux