Apache を chroot jail で実行することは推奨されますか?

Apache を chroot jail で実行することは推奨されますか?

私が知っているシステム管理者から、セキュリティを強化するために Apache を chroot jail で実行するようにアドバイスを受けました。

以下の質問があります:

  1. これはお勧めですか (つまり、注意すべき点はありますか)?
  2. chroot jail で Apache を実行すると、パフォーマンスやスケーラビリティなどの機能上の問題に影響しますか?

彼はまた、データベース (mySQL と PostgreSQL) を別々の chroot jail で実行するようにアドバイスしました。

これは生産システムでよく行われることでしょうか

[編集]

言い忘れましたが、サーバーはUbuntu 8.04 LTSで動作しています

答え1

chroot は優れたセキュリティ対策であり、エクスプロイトが成功した場合にシステムが危険にさらされる可能性を制限しますが、場合によっては chroot を回避する方法もあるため、システムを保護する決定的な方法ではありません。

パフォーマンスとスケーラビリティに関するデメリットは認識していません。データベース アクセスに関しては、通常、chroot 内のソケットへのリンクを使用して行われるため、データベース接続のためにネットワーク ポートを開く必要はありません。

編集: 以下は、OpenBSD rc.local (OpenBSD chrooted httpd) から取得した mysql アクセスのサンプルです。

if [ X"${mysql_server_flags-NO}" != X"NO" -a -x /usr/local/bin/mysqld_safe ]; then
        rm -R /var/www/var/run/mysql
        mkdir -p /var/www/var/run/mysql
        chown _mysql:_mysql   /var/www/var/run/mysql
        echo -n 'MySQL server: '; /usr/local/bin/mysqld_safe --user=_mysql ${mysql_server_flags} &
        sleep 10
        ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
fi

お役に立てれば。

答え2

私には 2 つのプログラムがあり、そのうちの 1 つは apache httpd で、Unix ドメイン ソケットを介して相互に通信します。それらを chroot で実行するように切り替えたところ、パフォーマンスが 10% 低下しました。これは実行中のアプリケーションによって異なると思います。以前は chroot での Apache のパフォーマンス低下は聞いたことがなかったので、2 番目のアプリは chroot でパフォーマンスが低下しているようです。

関連情報