fastcgiサーバー(またはネットワークプロキシサーバー)を刑務所に入れる方法は?

fastcgiサーバー(またはネットワークプロキシサーバー)を刑務所に入れる方法は?

Webサーバー(nginxなど)がある場合は、通常、fast-cgiサーバーまたは他のアプリケーションhttpサーバーを使用して動的コンテンツを取得します。これは、どちらの場合も、Webサーバープロセスとfast-cgi(またはアプリケーションhttpサーバープロセス - 以下ではスレーブプロセスと呼ばれる)の間でプロセスがうまく分離されていることを意味します。

Webサーバーは、fast-cgiがソケットまたはプロキシを介してhttp要求を処理するように構成されています。

スレーブプロセスにセキュリティ上の問題がある場合は、スレーブサーバーとWebサーバーに対して異なるユーザーを作成してファイルシステムの場所を保護できます。

しかし、Linuxでスレーブプロセスをさらに制限する方法は?

(たとえば、インターネットにアクセスできない場合や電子メールを送信できない場合など)

次のパスを考えてみましょう。

  • SELinux
  • Linuxシステムの名前空間(「コンテナ」、cgroup)

現在のディストリビューション(Debianなど)で最も便利な方法は何ですか?実際の運営ではどうすればいいですか?構成例はありますか?

ベストアンサー1

Ubuntuで投獄するもう1つの方法は次のとおりです。アパモア

パスベースの必須アクセス制御(MAC)Linuxセキュリティモジュール(LSM)。 Ubuntu 10.04では、選択したサービスに対してデフォルトで有効になっています。

文書はかなり散らばっています。 Ubuntuのドキュメントが良いかもしれません。 〜でもアップストリーム文書紹介がうまくいかなかったですね。これ参考ページの現状:

警告:この文書は作成の初期段階にあり、まだリファレンスマニュアルとして使用できる形式ではありません。

しかし、始めるのは比較的簡単です。 AppAmor プロファイルは実行可能なパスと一致します/var/www/slave/slave(たとえば、. プロファイル拒否ルールは常に許可ルールの前に一致します。空のプロファイルはすべてを無効にします。

さまざまなバイナリのプロファイルがに保存されます/etc/apparmor.dapparmor_status有効なプロファイル、強制モード(良好)、または不平モード(ログメッセージのみを印刷)のプロファイルを表示します。

新しいプロファイルを作成する方法は/var/www/slave/slave次のとおりです。

aa-genprof /var/www/slave/slave

別の端末から始めて、/var/www/slave/slave一般的なユースケースを実行します。完了したら、前の端末でキーを押しますsf

これで/etc/apparmor.d設定ファイルが含まれていますvar.www.slave.slave。スレーブが一部のブランチを実行すると、プロファイルは非常に希薄になり、子へのすべてのアクセスは無視されます。

それにもかかわらず、プロファイルは強制モードでアクティブになり、スレーブデバイスでタスクを繰り返しトリガーし、違反をtail -f /var/log/messages監視できるようになりました。他の端末では、構成ファイルを編集し、aa-enforce var.www.slave.slave各変更後に実行します。これにより、ログに以下が表示されます。

audit(1308348253.465:3586):  operation="profile_replace" pid=25186 name="/var/www/slave/slave"

違反は次のとおりです。

operation="open" pid=24583 parent=24061 profile="/var/www/slave/slave" 
  requested_mask="::r" denied_mask="::r" fsuid=10004 ouid=10000 name="/var/www/slave/config"

構成ファイルの規則は次のとおりです。

/var/www/slave/config r,

今後のアクセスが許可されます。

それはすべて非常に簡単です。

AppAmorは、次のようなおおよそのネットワークルールをサポートしています。

network inet stream,

このルールがないと、インターネット(localhostを含む)にアクセスできません。このルールを使用しても、iptablesより細かいルール(スレーブuidベースなど)を使用できます。

別の文書フラグメントには、次の情報が含まれています。サブ構成ファイルPHPスクリプトの場合。

var.www.slave.slave 構成ファイルのスケルトンは次のとおりです。

#include <tunables/global>

/var/www/gapapp/gap.wt {

  #include <abstractions/base>

  network inet stream,

  /var/www/slave/config r,
  /var/www/slave/exehelper/foo ix,
  /var/www/slave/db/* rw,

  ...
}

これらの設定ファイルを使用すると、スレーブはもはやmail同じユーティリティを呼び出すことはできませんsendmail

おすすめ記事