Сергей Супрунов
Безопасность FreeBSD всегда была на должном уровне. Но когда в Интернет
нужно «выставить» один или несколько сервисов, надеяться приходится уже не
только на разработчиков системы.
Обычно, когда речь заходит о безопасности, наверняка упоминается совет
поместить потенциально опасные процессы в chroot-окружение. Но вызов chroot
никогда не разрабатывался с оглядкой на безопасность – его создавали как
средство для компиляции системы в альтернативном каталоге. В дальнейшем
приспособили для нужд ftp, ограничивая с его помощью доступ к файловой системе
отдельных пользователей. А потом понеслось... Безусловно, chroot не позволяет
(теоретически; исключения были описаны в статье Василия Озерова «Как увеличить
безопасность процессов с помощью chroot и jail», №7 за 2006 г.) процессу
покинуть свой новый корневой каталог, но всё же он не обеспечивает полную
изоляцию процессов. Запущенные в chroot программы сохраняют возможность
использовать почти любые системные вызовы, что позволяет им наблюдать за
системой (например, с помощью ps) и даже влиять на её работу (монтировать
файловые системы, модифицировать ядро и т. д., вплоть до остановки системы).
Конечно, всё это возможно только в случае, если в chroot-каталоге будут доступны
нужные средства, хотя при наличии shell-доступа «протащить» их туда не составит
особого труда. Поэтому для повышения безопасности во FreeBSD появилось
специальное средство – jail (англ. «тюрьма»).
Но так уж «исторически сложилось», что для
повышения безопасности всё же чаще используется chroot-окружение, а jail
упоминается по большей части как средство виртуализации. Скорее всего, причина
здесь в большей распространённости и универсальности вызова chroot, который
реализован практически во всех UNIX-подобных системах. К тому же появился он
намного раньше. Возможно, свою роль играет и несколько большая сложность
организации jail-среды по сравнению с chroot, так что помимо всего прочего,
постараемся в деталях разобраться и во всех тонкостях практического применения jail.
Для начала рассмотрим некоторые теоретические
вопросы.