2

私は趣味のプロジェクトとしてPythonでWebサーバーを書いています。コードは*NIXマシンを対象としています。私はLinuxでの開発に不慣れであり、Python自体にも不慣れです。

私がウェブサイトを提供するために使用しているフォルダから人々が抜け出すのが心配です。これを行う最も明白な方法は、/../../ etc/passwdのようなドキュメントのリクエストをフィルタリングすることです。しかし、私が気付いていないディレクトリツリーを上る賢い方法があるかもしれないので、結果として私のフィルターが捕まえられないのではないかと心配しています。

ルートディレクトリがWebサイト自体になるように、os.chrootを使用して追加することを検討しています。これは、これらの脱獄攻撃から保護するための安全な方法ですか?これを行うことで、将来私を傷つける可能性のある落とし穴はありますか?

4

2 に答える 2

7

はい、落とし穴があります。セキュリティ面で:

  1. ルートとして実行する場合は、常に抜け出す方法があります。したがって、最初にchroot()を実行し、次に他のユーザーに特権を永続的にドロップします。
  2. 絶対に必要ではないものはchrootツリーに入れてください。特に、suid / sgidファイル、名前付きパイプ、UNIXドメインソケット、およびデバイスノードはありません。

Pythonに関しては、モジュール全体の読み込みが台無しになります。Pythonは、そのようなシナリオ向けには作成されていません。アプリケーションが適度に複雑な場合、モジュールのロードの問題が発生します

chrootingが非特権ユーザーとして実行され、ファイルシステムのアクセス許可を使用して、そのユーザーが重要なものを読み取らないようにすることよりもはるかに重要だと思います。

于 2009-01-25T22:02:05.320 に答える
3

Twistedをチェックしてください。twistdすぐに使用できる特権の削除とchroot操作をサポートします。さらに、ネットワークサービス、デーモン、およびほとんどすべてを作成するためのフレームワーク全体があります。

于 2009-01-25T23:15:25.327 に答える