Непрочитанное сообщение
ProFTP » 2008-07-02 1:13:09
VDS Freebsd. Jail - система виртуализации.
Freebsd Jail – это механизм разделения компьютерной системы на базе Freebsd на независимые самостоятельно работающие мини-системы, которые называются Jail’ами.
Конечно, JAIL - это еще один способ говорить о том же самом. Создание VDS на базе Freebsd.
Необходимость в разделении системы на jail’ы появилась, когда сервисные провайдеры захотели разнести служебные сервисы и клиентов, так сказать разделить функции, которые несут серверы. Это было сделано для безопасности и стабильности работы, а также для простоты управления этим хозяйством. Вместо того, чтобы добавлять еще один слой программного обеспечения и его настроек на работающую систему, происходило изначальное разделение чистой системы на несколько частей, каждая из которых обладала своей файловой системой, была оснащена определенным количеством выделенных ресурсов и выполняла свою собственную функцию.
Основные роли Freebsd Jail.
1. Виртуализация. Каждый jail – это виртуальная среда, которая работает на машине хосте и обладает собственной файловой системой, процессами, пользователями и суперпользователями. Если рассматривать процесс работы jail изнутри системы, то виртуальная среда практически ничем не отличается от реальной системы.
2. Безопасность. Каждый jail абсолютно изолирован от других, запущенных на одном хосте.
3. Простота делегирования. Благодаря изолированности jail’а администраторы могут безболезненно делегировать другим права суперпользователей на определенные сервисы без необходимости давать права на всю систему.
Тот, кто знаком с UNIX-системами, узнает комманду Chroot Jail, которая является методом делегирования админ-доступа на определенные директории. Механизм FreeBSD jail нечто большее. Каждый процесс функционирует таким образом, чтобы обеспечить ограничение во взаимодействиями с другими jail’ами и ограничить доступ к службам, которые исполняются в других jail’ах.
Виртуализация
Jail позволяет создавать различные виртуальные машины, каждая из которых имеет свой собственный набор утилит и свою собственную конфигурацию. Это позволяет в безопасном режиме тестировать программное обеспечение. Например, вы можете асболютно точно протестировать различные версии apache c разной конфигурацией, используя несколько jail’ов и сравнивая их работу. Поскольку изолированность каждого отдельного jail’a гарантирована, такое тестирование никак не скажется на работе общей системы. Вам даже не нужно восстанавливать «рабочие» настройки системы до тех пор пока тестирование происходит в рамках jail’a.
Виртуализация подходит сервис провайдерам, которые хотят предложить свои клиентам возможность самостоятельной настройки системы в соответствии со своими личным требованиями (custom configuration), в то же время имея стабильно работающую систему в рамках общего хоста. Например, два разных клиента нуждаются в установке одной программы с разной конфигурацией. Традиционный способ заключается в том, чтобы проинсталлировать программы в две разные директории и попытаться убедиться в том, что разные конфигурации одной и той же программы не мешают друг другу работать. Важно указать, что с одной стороны такое исполнение сложно осуществить, а с другой стороны в скором времени такая конфигурация может стать нестабильной. Так, как каждая программа в jail считает, что работает в рамках целой системы единолично, она «чувствует себе как дома». В такой системе даже возможно позволить простому пользователю конфигурировать новое программное обеспечение, делегируя ему доступ на уровне администратора в рамках jail.
В то же самое время, Freebsd Jail не является идеалом системы виртуализацииы, потому что не позволяет виртуальной машине запускать ядро, отличное от общесистемного.
Все виртуальные машины используют общее системное ядро и могут содержать в себе потенциальные ошибки и уязвимости. В Freebsd Jail нет кластеринга или миграция служб между jail’ами. Это является причиной того, что все Jail зависят от стабильности работы корневого компьютера и операционной системы. Нестабильность работы этих систем может стать причиной неработоспособности всех jail.
Безопасность
Freebsd Jail – это эффективный способ увеличить безопасность сервера, используя эффект разделения и полной изолированности между виртуальными средами. Такой эффект называется sandbox. Он позволяет запускать неоттестированные или незнакомые программы в отдельном изолированном пространстве, позволяя защитить основную систему от проблем, которые могут возникнуть вовремя или после инсталляции.
Например, допустим, что в системе запущен веб-сервер APACHE пользователем www и администратор, который несет ответственность за контент, инсталлирует в него PHP, включая некую уязвимость. Это конечно снижает безопасность общей системы. Злоумышленник, который имеет доступ на уровне пользователя www, может модифицировать файлы на веб-сервере, просматривать директории и получать много информации, такой как полный список пользователей, настройки их оболочек и домашних директорий из /etc/passwd. Если jail обслуживает другие задачи, то сути дела это не меняет.
Вообщем, если веб-сервер работает в рамках jail, права пользователя www распространяются только на этот самый jail, который может быть, в свою очередь, прекрасным минималистичным решением, позволяющим не давать доступ к большому количеству нужной и ненужной информации. Кроме обязательных аккаунтов, которые идут по умолчанию в системе, будут добавлены только www и ftp(обычно добавляется со службой ftp, чтобы делать обновления веб-сервера). Поэтому нарушитель будет иметь доступ только к веб-серверу, даже если он каким-то образом получит доступ на уровне суперпользователя.
Если root-аккаунт во Freebsd Jail используется злоумышленником, то доступ к остальной системе закрыт в любом случае по следующим причинам:
* Любая служба, процесс в рамках jail не может соединяться с процессами или службами в другом jail. Например, комманда ps выдаст список процессов запущенных только в рамках jail.
* Модификация работающего ядра с помощью прямого доступа или загрузка новых модулей запрещена. Модификация sysctls и уровня безопасности запрещена.
* Модификация сетевой конфигурации, включая интерфейсы, адреса и таблицы маршрутизации, запрещена. Доступ к raw, divert, сокетам маршрутизации запрещен. Например, jail привязан только к одному ip и правила фаервола не могут быть изменены.
* Подключение и отключение файловых систем запрещено. Jail не имеет доступа к файлам, которые распологаются выше по дереву, чем их корневые директории.
* Создание файлов устройств запрещено.
Простота делегирования
Проблема в управлении UNIX-системами в том, что есть права обычных пользователей и права суперпользователей, и нет ничего между ними. Поэтому так сложно выстроить стабильную политику безопасности функционирования системы. Во-первых, сложно дать обычным пользователям только часть прав root-пользователя, так как не имеет значение, как назначаются права, но пользователь получает доступ сразу и на все. Во-вторых, вещи, которые на первый взгляд не взаимосвязаны, могут в будущем влиять друг на друга. Например, позволяя пользователю модифицировать файлы, мы разрешаем пользователя использовать комманду su и получать роль другого пользователя, потому как он имеет право менять логины.
Jail позволяют инсталлировать различные сервисы в различные виртуальные среды и делегировать их управление другим людям, давая им супер доступ только в рамках одного jail.
Это безопасно по двум причинам:
1. Суперпользователь имеет полный доступ в рамках jail и только (и администратор знает, что он не имеет права, например, править правила фаервола).
2. Он работает только в рамках jail и ничего не знает об общей системе.
Системы виртуализации других производителей:
OpenVZ\Virtuozzo, Linux-VServer, Solaris Containers.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'