Question

Je suis intéressé par écrit un module PAM qui utiliserait un mécanisme d'authentification populaire pour les connexions Unix. La plupart de mon expérience passée de programmation a été en Python, et le système que je suis en interaction avec a déjà une API Python. J'ai googlé et trouvé pam_python , qui permet aux modules PAM pour appeler la intrepreter python, ce qui permet donc des modules PAM à écrire essentiellement Python.

Cependant, j'ai lu qu'il ya des risques de sécurité lors permettant à un utilisateur d'invoquer le code Python qui fonctionne avec un niveau d'accès supérieur à l'utilisateur lui-même, comme les scripts SUID Python. Ces préoccupations sont applicables à un module PAM Python ainsi?

Était-ce utile?

La solution

Les problèmes de sécurité que vous mentionnez ne sont pas, en soi, de « permettre à l'utilisateur d'invoquer le code Python » qui fonctionne avec des niveaux élevés d'accès, mais permettant à l'utilisateur d'exercer toute forme de contrôle sur le fonctionnement de ce code - le plus évident en injectant ou en modifiant le code lui-même, mais, plus subtilement, en contrôlant également l'environnement de ce processus (et donc le chemin à partir duquel qui importe des modules de code, par exemple). (Des préoccupations similaires s'appliqueraient avec le code écrit en C, si l'utilisateur a pu contrôler la trajectoire à partir de laquelle ce dernier charge .so par exemple - pour que le système d'exploitation peut aider plus directement avec une telle préoccupation).

Il me semble que pam_python est bien blindé contre ces risques, et il devrait donc être utilisable en toute sécurité à vos besoins. Cependant, notez que les docs signaler ...:

  

modules PAM d'écriture de encourt python   une grande peine de performance et   nécessite Python à installer, il   n'est pas la meilleure option pour l'écriture   Les modules qui seront largement utilisés.

Donc, si vous avez raison que le mécanisme vous fournir sera populaire, vous voudrez probablement coder votre module C pour éviter ces problèmes. Cependant, il prototypage en Python comme preuve de concept avec une distribution limitée, avant de se raffermir, il en C, est une stratégie viable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top