14

Unixログイン用の一般的な認証メカニズムを利用するPAMモジュールを作成することに興味があります。私の過去のプログラミング経験のほとんどはPythonでのものであり、私が対話しているシステムにはすでにPythonAPIがあります。グーグルで調べてみたところ、 pam_pythonが見つかりました。これにより、PAMモジュールがpython intrepreterを呼び出すことができるため、PAMモジュールを基本的Pythonで記述できるようになります。

ただし、SUID Pythonスクリプトなど、ユーザー自身よりも高いアクセスレベルで実行されるPythonコードをユーザーが呼び出すことを許可すると、セキュリティ上のリスクがあることを読みました。これらの懸念はPythonPAMモジュールにも当てはまりますか?

4

1 に答える 1

17

あなたが言及するセキュリティ上の懸念は、それ自体、高いアクセスレベルで実行される「ユーザーがPythonコードを呼び出すことを許可する」ことではなく、ユーザーがそのようなコードの実行に対して任意の形式の制御を実行できるようにすることです。コード自体を挿入または変更することによって、さらに微妙に、そのプロセスの環境(したがって、たとえば、そのコードがモジュールをインポートするパス)を制御することによっても。(たとえば、ユーザーがCで記述されたコードをロードするパスを制御できた場合、同様の懸念がCで記述されたコードに当てはまりますが.so、OSはそのような懸念に直接役立つ可能性があります)。

私にpam_pythonは、そのようなリスクに対して十分に装甲されているように思われるので、あなたの目的のために安全に使用できるはずです。ただし、ドキュメントが指摘していることに注意してください...:

PythonからPAMモジュールを作成すると、パフォーマンスが大幅に低下し、Pythonをインストールする必要があるため、広く使用されるモジュールを作成するための最良のオプションではありません。

したがって、提供しているメカニズムが一般的であることが正しい場合は、これらの問題を回避するために、モジュールをCでコーディングすることをお勧めします。ただし、Cで確定する前に、配布が制限された概念実証としてPythonでプロトタイプを作成することは、実行可能な戦略です。

于 2009-09-20T16:20:40.617 に答える