2011-01-25 9 views
0

私はインフラストラクチャを制御するためのマスター制御スクリプトを作成しています。pythonスクリプト内での認証

ユーザーがアプリケーションを実行できるようにし、システムのルート資格情報を使用してプログラムに「ログイン」するように要求したい(Linux - Ubuntu)。認証に失敗すると、電子メールイベントがトリガーされ、プログラムがロックされます。/etc/passwdに対して認証できますか?アプリケーションをロックアウトするにはどうすればよいですか?

第2に、アプリケーションを変更から保護するにはどうすればよいですか?アプリケーションに特定の属性をハードコードする必要があるかもしれません。実行されるが編集されないスクリプトのための理想的なパーミッションは何ですか?

+2

おそらく、スクリプトをスーパーユーザーだけが実行可能にする必要がありますか?スクリプトを実行するには、sudo/suを使用する必要があります。 – GWW

+1

あなたの2番目の問い合わせに関しては、Pythonは実際は難読化のための適切な候補者ではありません。コンパイルされた '.pyc'ファイルのみを発送することができます。これは変更するのが少し難しくなります。 – miku

+0

私は言及すべきでした。このスクリプトは、3つのC&Cサーバー(コマンドとコントロール)のいずれかに置かれます。 – Publiccert

答えて

2

これは最も簡単な解決策ですが、これを行う最も安全な方法は、クライアント/サーバーのアプローチを取って、マスターコントロールスクリプトをシステムサービスにし、rootだけが読み取りおよび実行可能にすることです。 init.dスタートアップインフラストラクチャを通じてサービスを開始できます。

サービスが開始されると、制御コマンドを処理するためにソケットまたはRPCサーバーを開く必要があります。 Pythonでは、これは簡単にTwistedを使って行うことができます。

/etc/passwdで認証するには、cryptpwdのPythonモジュールを使用できます。

+0

これは非常にクールな提案です。私はこれを調べるつもりです。ハードコードされたログインが検出されないようにしますか? – Publiccert

+0

@Jeffreyハードコードされたログインを避けることを強くお勧めします。また、ソースコードが漏洩した場合、攻撃者は資格情報に簡単にアクセスできます。内部の/ etc/passwd認証メカニズムには、ブルートフォース攻撃の軽減に役立つ認証トークンリングがあります。 – vz0

+0

絶対に。スクリプトとテキストエディタにアクセスできる人が誰でも読むことを心配することなく、実際にスクリプト内の他の情報(非ログイン情報)を隠そうとしているので、例として言及しました。 – Publiccert

関連する問題