Один из самых старых механизмов защиты UNIX построен на идее измененного корневого каталога (changed root), или chroot, согласно которой пользователь или программа ограничивается подразделом файловой системы, что защищает других пользователей и остальную часть файловой системы, chroot подходит для таких служб, как named(8), но ограничивает работу сложных программных комплексов, которым необходим доступ ко всей системе. Использование механизма chroot для организации веб-сервера или почтовой службы потребует приложить немалые усилия, направленные на добавление большого числа программ в chroot-окружение. Если вы работаете в компании, предоставляющей услуги веб-хостинга, вашим клиентам точно не понравится оказаться в chroot!
Клиенты, которые понимают мощь UNIX, нередко предъявляют запросы, усложняющие жизнь администратора. Например, хотят установить то или иное программное обеспечение или переконфигурировать веб-сервер, чтобы включить последний крутой модуль Apache. В двух словах, они хотят получить доступ с правами root, а в большинстве систем UNIX нельзя раздавать доступ root клиентам на сервере с множеством пользователей.
Нельзя, если у вас не FreeBSD. Администраторы FreeBSD столкнулись с этой проблемой довольно давно и решили ее, значительно улучшив механизм chroot. По сути, они решили ее так хорошо, что в системе
FreeBSD можно создавать на диске целые виртуальные машины и изолировать их от остальной части системы. Такая виртуальная машина называется клеткой (jail).
Клетку можно представить как среду клиент-сервер. Основной сервер – это хост, а каждая система-клетка – это клиент. Изменения, проводимые в хосте, можно отразить на всех системах, но изменения в клетке не затронут основную систему (если только не позволить клетке заполнить весь диск или что-либо подобное).
С точки зрения пользователя клетка очень похожа на полноценную систему FreeBSD, в которой отсутствует всего несколько устройств. Находясь в клетке, клиенты могут иметь доступ root и даже устанавливать любые программы по своему желанию. Это не окажет влияния на основную систему. Все процессы, запускаемые в клетке, ограничены ее средой. Ядро не предоставляет им доступ к информации, лежащей за пределами клетки. Поскольку программы и процессы в клетке ничего не знают о «внешнем мире» и не могут читать или получить к чему-либо доступ за его пределами, пользователь заблокирован. Мало того, что клиент не может вырваться из клетки, – если в клетку проник злоумышленник, дальше нее он не пройдет. Такой механизм позволяет обезопасить систему и удовлетворить потребности клиентов.
На современном оборудовании, с недорогими (но не дешевыми!) дисками и избытком памяти, система FreeBSD может обслуживать десятки клеток с веб-серверами. С точки зрения продвижения машина-клетка представляет собой хороший промежуточный вариант между виртуальным доменом на общем сервере и собственным локальным сервером.
Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

November 10th, 2011
admin
Опубликовано в рубрике