我被一个我认识的系统pipe理员build议,在一个chroot监狱里运行Apache,以提高安全性。
我有以下问题:
他还build议我在独立的chroot监狱里运行我的数据库(mySQL和PostgreSQL)。
这是经常在生产系统中完成的吗?
[编辑]
忘了说,服务器在Ubuntu 8.04 LTS上运行
Chrooting是一个很好的安全措施,它限制了在成功利用的情况下妥协系统的可能性,但是在某些情况下也有逃避chroot的方法,所以它不是保护系统的明确方法。
我没有意识到性能和可扩展性方面的缺点。 关于数据库访问,通常在chroot里面有一个连接到套接字的链接,这样你就不必打开任何数据库连接的networking端口。
编辑:下面是从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
希望这可以帮助。
我有两个程序,其中之一是Apache httpd,通过unix域套接字互相沟通。 我把它们切换到chroot下运行,然后%10性能下降。 这取决于我认为正在运行的应用程序。 我之前没有听说过在chroot下Apache的任何性能损失,所以看起来我的第二个应用程序在chroot下丢失了性能。