Мар 13 2009

Строим jail

Jail — встроенная система виртуализации во FreeBSD, с ее помощью с успехом можно делать виртуальные сервера FreeBSD, не применяя програмное обеспечение сторонних производителей.
Начнем создание виртуального сервера с установки IP адреса, на котором будет располагаться jail. Первый адрес который уже есть у сервера на интерфейсе em0 89.252.34.107, добавим второй 89.252.34.110:

ifconfig em0 alias 89.252.34.110/32

И пропишем его в /etc/rc.conf, для того что бы он появился при перезагрузке:

ifconfig_em0_alias0="inet 89.252.34.110/32"

Теперь можно перейти к созданию jail. Физически jail будет находится в /home/jail.

cd /usr/src
mkdir -p /home/jail
make world DESTDIR=/home/jail
make distribution DESTDIR=/home/jail
mount -t devfs devfs /home/jail/dev

Пропишем выполненый нами mount в fstab хост машины:

devfs                   /home/jail/dev  devfs   rw 0 0

Теперь необходимо подготовить сервисы Jail и хост машины к запуску jaila, то есть необходимо что бы sshd у хост машины отвечал только на ее ip адресах, то же самое касается inetd и других сервисов которые должны работать и в jail и в хост машине независимо.
Пропишем на хост машине привязку ssh к ее ip адресам, к примеру если ее адреса это 89.252.34.107 и 192.168.0.10, то в настройках sshd(/etc/ssh/sshd_config) нужно указать такую строку:

ListenAddress 89.252.34.107
ListenAddress 192.168.0.15

После этого перезапустим sshd:

/etc/rc.d/sshd restart

Можно проверить проверить правильность настройки так:

sockstat -l |grep sshd

вы должны увидеть примерно такое:

root     sshd       74047 4  tcp4   192.168.0.10:22       *:*
root     sshd       74047 5  tcp4   89.252.34.107:22      *:*

Все настроено правильно. И точно так же можно сделать для inetd, для этого в /etc/rc.conf указать такие флаги запуска inetd:

inetd_flags="-wW -a 192.168.0.10 -a 89.252.34.107"

Если вы пользуетесь sendmail, то тут все будет немного сложнее, необходимо перейти в каталог /etc/mail и изменить файл имя которого совпадает с хостнеймом вашего сервера(у меня это sh.hilik.org.ua) и расширение mc, то есть у меня этот файл называется sh.hilik.org.ua.mc и в нем найти строку:

DAEMON_OPTIONS(`Name=IPv4, Family=inet')

и добавить вместо нее несколько модифицированные строки для каждого адреса на котором sendmail должен слушать соединения, 127.0.0.1 нужно добавлять обязательно:

DAEMON_OPTIONS(`Name=IPv4, Addr=192.168.0.10, Family=inet')
DAEMON_OPTIONS(`Name=IPv4, Addr=89.25.34.107, Family=inet')
DAEMON_OPTIONS(`Name=IPv4, Addr=127.0.0.1, Family=inet')

И теперь можно пересобрать конфигурацию сендмайл(все команды надо выполнять в /etc/mail):

make
make install
make restart

Теперь перейдем в /home/jail/etc/ и пропишем в /home/jail/etc/rc.conf запуск sshd и отключим запуск sendmail такими строками:

sshd_enable="YES"
sendmail_enable="NONE"

Теперь вернемся к настройке хост машине под jail, пропишем запуск jail в /etc/rc.conf, назовем наш jail first:

#Разрешаем запуск jail
jail_enable="YES"
#Тут перечисляются через пробел все jail которые должны #запускаться
jail_list="first"
#Настройки нашего jail, здесь first - имя jailа
#Устанавливаем место где находится корень
jail_first_rootdir="/home/jail"
#Хостнейм для jail
jail_first_hostname="jail.hilik.org.ua"
#IP адрес на котором будет находится наш jail
jail_first_ip="89.252.34.110"

После внесения этих настроек, можно запускать jail:

/etc/rc.d/jail start first

Проверяем как он запустился:

jls

Мы увидим что то типа такого:

   JID  IP Address      Hostname                      Path
     2  89.252.34.110    jail.hilik.org.ua             /home/jail

Теперь имея JID, мы можем выполнять(от рута) с хост машины команды в jail используя jexec.
Добавим пользователя, который сможет по ssh соединится с jail и администрировать систему:

jexec 2 adduser

2 — это JID джайла.
Дальше добавление происходит как будто вы это делаете на локальной машине, не забудте только добавить пользователя в группу wheel, что бы он мог suпнуться.
Теперь нужно подключить дерево портов в jail, воспользуемся для этого файловой системой nullfs, предварительно создав директорию для портов:

mkdir /home/jail/usr/ports

И примонтируем к этой директории каталог портов с хост машины:

mount_nullfs /usr/ports/ /home/jail/usr/ports/

На этом основная настройка jail окончена, можно заходить по ssh и устанавливать и настраивать весь софт который вам нужен в jail.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By tov_jukov, 06.08.2009 @ 12:55

    А система контроля ezjail как в работе? Сам еще не пробовал, но хочу освоить.

Other Links to this Post


Украинская Баннерная Сеть