Один мой знакомый системный администратор посоветовал мне запустить Apache в chroot-тюрьме для повышения безопасности.
У меня есть следующие вопросы:
Он также посоветовал мне запускать свои базы данных (mySQL и PostgreSQL) в отдельных chroot-тюрьмах.
Часто ли это делается в производственных системах?
[Редактировать]
Забыл сказать, что сервер работает на Ubuntu 8.04 LTS
Chroot - хорошая мера безопасности, она ограничивает возможности компрометации системы в случае успешного эксплойта, но в некоторых случаях также есть способы уклониться от chroot, так что это не окончательный способ защиты системы.
Мне не известно о каких-либо недостатках производительности и масштабируемости. Что касается доступа к базе данных, это обычно делается с помощью ссылки на сокет внутри chroot, таким образом вам не нужно открывать какой-либо сетевой порт для подключения к базе данных.
РЕДАКТИРОВАТЬ: ниже приведен пример доступа к mysql, взятого из OpenBSD rc.local (OpenBSD chrooted httpd)
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. Думаю, это зависит от запущенных приложений. Раньше я не слышал потери производительности Apache под chroot, поэтому похоже, что мое второе приложение теряет производительность под chroot.