Modules PAM personnalisés et considérations de sécurité


8

J'écris mon propre module PAM qui fera partie d'une application que je développe, mais je ne sais pas exactement où le mettre. Mon module fait essentiellement une authentification au niveau du réseau (avec d'autres mojo bien sûr) similaire à LDAP.

Il y a beaucoup de fichiers de configuration dans mon /etc/pam.d/répertoire, et je sais ce que font la plupart des services (sauf quelques-uns, comme atd, polkit, ppp). Je suppose que l'authentification avec la pile PAM ressemble à ceci:

  1. Exécute la pile en fonction du nom du service (s'il existe un fichier de configuration)
  2. S'il n'est pas authentifié, recourez à common- *, où * est le type de module (auth, compte, etc.)
  3. Renvoyer le succès ou l'échec de l'application appelante (et toute autre donnée bien sûr)

Ai-je raison dans cette hypothèse? Toutes les plateformes ont-elles l'authentification commune, le compte commun, le mot de passe commun et la session commune?

Si c'est le cas, je pensais simplement le placer en haut de common- * en tant que sufficientmodule afin qu'en cas d'échec, la pile PAM régulière ne soit pas affectée. Ceci est particulièrement avantageux car je peux le faire par programme lors de l'installation du logiciel.

Suis-je en train de manquer des failles de sécurité potentielles?

Je n'ai pas pu trouver de très bonne documentation sur l'endroit où intégrer les modules PAM personnalisés ou les problèmes de sécurité concernant l'emplacement des modules.


2
L'intérêt de PAM est de dissocier les procédures d'authentification réelles des applications, afin de permettre aux administrateurs système de les configurer séparément. Si votre application dépend de votre module d'authentification, cela peut indiquer que vous abusez de PAM.
Riccardo Murri

Eh bien, mon application est un démon qui synchronise le compte d'un utilisateur avec le réseau si l'utilisateur connecté est un utilisateur du réseau. Je pense que tant que je n'autorise pas la communication entre le démon et le module PAM, ça devrait aller.
beatgammit

Réponses:


7

Lorsque vous appelez à Linux-PAM pour une procédure d'authentification, il y a toujours une et une seule pile qui est exécutée.

La définition de la pile est recherchée à ces endroits; la première tentative réussie détermine quel fichier est lu:

  1. le fichier est /etc/pam.dnommé d'après l'application "nom du service" (par exemple, sshdou gdm), ou

  2. le fichier /etc/pam.d/others'il n'existe aucun fichier spécifique au service, ou

  3. le fichier /etc/pam.confsi le répertoire /etc/pam.dn'existe pas.

Voir la documentation de la fonction pam_start pour plus de détails.

Les fichiers common- * sont une convention suivie par de nombreuses distributions Linux mais ne sont pas mandatés par le logiciel PAM lui-même. Ils sont généralement inclus par d'autres fichiers PAM au moyen d' @include instructions; par exemple, le /etc/pam.d/otherfichier sur Debian a le contenu suivant:

# We fall back to the system default in /etc/pam.d/common-*
@include common-auth
@include common-account
@include common-password
@include common-session

Les mêmes @includeinstructions peuvent également être utilisées par un fichier spécifique au service, et -indeed- elles sont dans la configuration par défaut sur Debian. Notez que c'est une question de configuration: un administrateur système est libre de modifier le fichier pour /etc/pam.dne pas inclure de fichiers communs * du tout!

Par conséquent: si votre module PAM est spécifique à votre application, créez un fichier de service spécifique à l'application et appelez le module à partir de là. N'ajoutez pas automatiquement un module au fichier PAM d'autres services ni au othersfichier de secours, car cela pourrait casser d'autres applications installées sur le système. La gestion de la pile logicielle PAM est une tâche pour l'administrateur système, pas pour les développeurs d'applications.


C'est vraiment clair pour moi. Certaines distributions utilisent-elles les fichiers common- * comme sauvegarde pour les fichiers de configuration spécifiques au service? Lorsque j'ai mis mon module en common-auth, il a été exécuté même lors de l'exécution de sudo.
beatgammit

@tjameson J'ai mis à jour la réponse avec plus de détails sur les fichiers common- *
Riccardo Murri

OK merci!! Maintenant je comprends tout. Je pensais que ma distribution avait peut-être une procédure de secours personnalisée intégrée à leur version de PAM ou quelque chose. Merci d'avoir clarifié cela.
beatgammit
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.