The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Виртуализация в FreeBSD с помощью Jail (freebsd croot virtual jail)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: freebsd, croot, virtual, jail,  (найти похожие документы)
From: Михаил Сгибнев <mixa(@).dreamcatcher.ru> Date: 2006-09-11 10:55:45 Subject: Виртуализация в FreeBSD с помощью Jail
by Dan Langille
03/09/2006
Original

Перевод: Сгибнев Михаил

Примечание: статья немного переработана и дополнена, так как в оригинале представляет собой мысли вслух разглядывающего man jail человека.

В этой статье я расскажу о том, как создавал jail в FreeBSD 5. Хотя, в настоящий момент, уже вышла 6-ая версия этой операционной системы, особых изменений механизм создания jail не претерпел. Если вдруг какие-либо отличия будут обнаружены, я с удовольствием дополню/исправлю статью.

Моя предыдущая статья касалась работы jail в FreeBSD 4 и смысл ее был в создании изолированного окружения для разрабатываемого мной приложения. До недавнего времени, для работы системы резервного копирования Bacula, я пользовался выделенной машиной. В процессе обновления парка машин, я заменил несколько старых одной новой, более мощной и захотел избавиться от компьютера, используемого проектом Bacula. Поскольку отдавать мощный компьютер под резервное копирование не хотелось, я решил совместить выполнение нескольких задач, при этом не пересекая их.

Разделяй и властвуй

Jail позволяют разделить выполнение различных процессов. Например, вы можете держать Apache в jail и не бояться, что потеряете всю систему целиком в случае его компрометации. Jail может быть как полнофункциональной системой, так и набором только необходимых файлов.

Я недавно приобрел машину Pentium 4 2.4GHz, это довольно мощная система, у нее много ресурсов и довольно высокое время простоя, так как я ее использую в личных целях. Вот на ней я и создам jail, в который помещу Bacula.

Находясь внутри jail невозможно попасть на уровень выше, что очень похоже на поведение chroot, но в тоже самое время, создается впечатление работы с собственной полноценной операционной системой.

Запуск виртуальной системы в jail является хорошим выбором при необходимости предоставить кому-либо ресурсы системы без права хозяйничать в ней. Jail может помочь вам решить проблему безопасного доступа пользователей и повысить КПД использования ресурсов системы.

Документация по Jail

Основным документом, описывающим механизм jail, является man jail. Далее я следовал инструкциям, описанным в разделе "Setting up a Jail Directory Tree". В процессе настройки вам понадобятся полные исходные тексты системы, в моем примере для сборки мира использовался каталог /usr/src/.

Был шаг, в котором я отступил от указаний man jail: я оставил Sendmail (в действительности Postfix) запущенным, указав, какие конкретно IP адреса прослушивать, в файле /usr/local/etc/postfix/main.cf: Таким образом мы обеспечим работу в jail собственного почтового сервера.

Я поместил свою jail в каталог /home/jail/192.168.0.155.bacula. Это значение, которое я присвоил переменной D, согласно инструкции по установке: После того, как вы установили jail, она выглядит точно так же как корневой каталог типичной системы FreeBSD:

Терминология: Host и Jail

Host - это та машина, на которой вы первоначально устнавливаете FreeBSD, именно в этом окружении вы устанавливаете jail. И Bacula, установленная в jail не будет иметь ни какого доступа к корневой системе.

Очень важно понимать различие в окружении корневой машины и окружении jail.

В нашем примере, корневая машина имеет IP адрес 192.168.0.100, а jail имеет адрес 192.168.0.155.

Модифицируем демоны

Большинство демонов будет слушать все, назначенные системе IP адреса. Например, если после установки jail вы попробуете войти на нее по ssh, то вы попадете на корневую машину. Для того, чтобы все работало как надо, необходимо: В файл конфигурации /etc/rc.conf поместите следущую строку: Она укажет демону syslogd корневой машины не открывать UDP порт для приема сообщений с удаленных систем, что позволит запустить syslogd в окружении jail.

Настройка inetd корневой системы заключается в том, чтобы прописать в /etc/rc.conf строку: Обратите внимание, что первая половина взята из /etc/defaults/rc.conf: Настройка sshd корневой системы потребует прописать в /etc/ssh/sshd_config такой параметр: Внеся изменения, необходимо перезапустить процесс: Для проверки того, что IP адрес jail не прослушивается в настоящий момент корневой системой, воспользуйтесь утилитой telnet: Если результат такой, как указано выше, то вы все сделали правильно.

Для запуска sshd в окружении jail необходимо отредактировать файл rc.conf обычным порядком: Для того, я изменил конфигурацию syslogd jail таким образом, чтобы он выводил сообщения не на консоль, а в /var/log/messages, добавив следущие строки:

Конфигурирование jail

Настала пора прочитать часть руководства man, озаглавленную "Configuring the Jail". В ней рассказано, как сконфигурировать несколько параметров, необходимых для функционирования jail. Я внес изменения с корневой машины, без запуска jail. Запустить оболочку в jail можно следующей командой: Если не появилось сообщение о ошибках, то вы попадете в оболочку jail. Вы можете запустить утилиту /usr/sbin/sysinstall для дальнейшего конфигурирования или вручную отредактировать /etc/rc.conf. Изменить можно такие параметры как:

Автоматический запуск и останов jail

Я нашел довольно интересный инструментарий для работы с jail - sysutils/jailutils и установил его в корневую систему. Используя этот инструмент, я создал следущий сценарий: Это довольно примитивный сценарий, например, он не проверяет, запущена ли в настоящий момент jail или нет.

В заключение, возможно вы захотите выставить эту переменную в /etc/sysctl.conf корневой машины: В версиях 4.* FreeBSD эта переменная имела несколько другое название.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Jet (??), 12:48, 21/02/2007 [ответить]  
  • +/
    статья перепечатывается как новая уже второй или третий раз, а ошибка которая есть в первой статье так и стается..
    jail /data/jail/192.168.11.100 testhostname 192.168.11.100 /bin/sh
    ip-адрес в данном случае неверно указан
     
  • 2, Jet (??), 13:00, 21/02/2007 [ответить]  
  • +/
    и путь тоже...
     
  • 3, Alex (??), 17:10, 12/11/2008 [ответить]  
  • +/
    Кстати сейчас процесс запуска джайла уже вынесен в /etc/rc скрипты. Настраивать его можно прямо в /etc/rc.conf
    для чего смотрим: /etc/defaults/rc.conf
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру