我認識的一位系統管理員建議我在 chroot 監獄中執行 Apache,以提高安全性。
我有以下問題:
- 這是否可取(即是否有任何我需要注意的「陷阱」)?
- 在 chroot 監獄中運行 Apache 是否會影響其效能和可擴展性等能力問題?
他還建議我在單獨的 chroot 監獄中運行我的資料庫(mySQL 和 PostgreSQL)。
這是生產系統中常做的事情嗎
[編輯]
忘了說,伺服器運行在 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
我有兩個程序,其中一個是apache httpd,透過unix域套接字相互通訊。我已將它們切換到在 chroot 下運行,然後 %10 效能損失。我認為這取決於正在運行的應用程式。我之前沒有聽說 Apache 在 chroot 下有任何效能損失,所以看起來我的第二個應用程式在 chroot 下效能損失。