Строим 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 adduser2 – это JID джайла.
Дальше добавление происходит как будто вы это делаете на локальной машине, не забудте только добавить пользователя в группу wheel, что бы он мог suпнуться.
Теперь нужно подключить дерево портов в jail, воспользуемся для этого файловой системой nullfs, предварительно создав директорию для портов:
mkdir /home/jail/usr/ports
И примонтируем к этой директории каталог портов с хост машины:
mount_nullfs /usr/ports/ /home/jail/usr/ports/
На этом основная настройка jail окончена, можно заходить по ssh и устанавливать и настраивать весь софт который вам нужен в jail.




By tov_jukov, 06.08.2009 @ 12:55
А система контроля ezjail как в работе? Сам еще не пробовал, но хочу освоить.