Ключевые слова:chroot, jail, freebsd, limit, (найти похожие документы)
From: Сгибнев Михаил <msgibnev(ого-го какая собака)gmail.com>
Date: Mon, 15 Jan 2010 17:02:14 +0000 (UTC)
Subject: Настройка Jail в FreeBSD с помощью ezjail
Оригинал: http://www.dreamcatcher.ru/bsd/027_jail.html
Оригинал на английском: Setup FreeBSD Jail With ezjail
Зададимся вопросом - как, используя сервер на базе FreeBSD, получить
несколько независимых окружений, в народе называемых jail? Например,
как использовать одну из jail для почтового сервера, а вторую для
web-сервера, при этом каждая jail должна иметь собственный IP-адрес?
Каждая jail на FreeBSD имеет собственные файлы, процессы и учетные
записи. Находясь внутри, практически невозможно отличить jail от
реальной системы. Самым простым способом определения, создания и
модифицирования jail является использование среды ezjail.
Внимание! Сетевые демоны, перед использованием jail, должны быть
сконфигурированы на использование адреса 127.0.0.1 или на работу с
адресом интерфейса. По крайней мере, это необходимо сделать со службами
sshd и syslogd.
Вводные данные
* server.nixcraft.net.in : FreeBSD host server running v7.2 with
202.54.1.2
* smtpd.nixcraft.net.in : Mail server jail with 202.54.1.3
* httpd.nixcraft.net.in : Web server jail with 202.54.1.4
Шаг 1: Обновляем корневую систему
Убедитесь в том, что ваша система достаточно актуальна. Руководство по
обновлению системы вы можете найти здесь.
Шаг 2: Устанавливаем ezjail
Для установки ezjail выполните нижеприведенные команды. Таким образом,
мы получим два скрипта, позволяющие нам более просто управлять
жизненным циклом jail.
# cd /usr/ports/sysutils/ezjail
# make install clean
Расположение файлов ezjail по умолчанию:
1. /usr/jails/ каталог размещения шаблонов jail.
2. /usr/jails/flavours/ настройка каждой jail может быть выполнена
через flavours. Служит для того чтобы, например, добавить значение
по умолчанию в файл /etc/resolv.conf или обновить существующий файл
/etc/make.conf
3. /usr/jails/basejail/ базовая система jail, которая монтируется в
режиме "read only" и является одинаковой для всех jail, что
позволяет сэкономить место на жестком диске.
4. /usr/local/etc/rc.d/ezjail.sh скрипты Stop/Start/Restart
5. /usr/local/etc/ezjail.conf конфигурационный файл ezjail, который
содержит настройки для rc скрипта. Таже данный файл может быть
просмотрен командой ezjail-admin.
6. /usr/local/etc/ezjail/ все файлы конфигурации ваших jail хранятся
здесь
Шаг 3: Создаем базовый шаблон jail
Для создания или обновления окружения ezjail (aka basejail) из
исходных текстов, выполните следующую команду:
# ezjail-admin update -p -i
Где:
* -p : Provide ports for jail.
* -i : не запускать "make world".
Если у вас нет /usr/src и вы никогда не запускали make world, вы
можете установить шаблон с ftp сервера, используя утилиту ezjail-admin:
# ezjail-admin install
Шаг 4: Создаем SMTPD Mail Server Jail
Для создания jail smtpd.nixcraft.net.in с адресом 202.54.1.3,
располагающейся в каталоге /jails/smtpd.nixcraft.net.in, выполните
следующую команду:
# ezjail-admin create -r /jails/smtpd.nixcraft.net.in smtpd.nixcraft.net.in 202.54.1.3
Обновление файла конфигурации SMTPD Jail
По умолчанию, файл конфигурации расположен в
/usr/local/etc/ezjail/smtpd_nixcraft_net_in. Откройте его и добавьте
следующие строки:
export jail_smtpd_nixcraft_net_in_hostname="smtpd.nixcraft.net.in"
export jail_smtpd_nixcraft_net_in_ip="202.54.1.3,10.21.51.12"
Шаг 5: Запускаем сервис jail
Добавим строку запуска в файл /etc/rc.conf:
# echo 'ezjail_enable="YES"' >> /etc/rc.conf
После чего можем запустить службу:
# /usr/local/etc/rc.d/ezjail.sh start
Для управления конкретным jail можно воспользоваться следующими
командами:
# /usr/local/etc/rc.d/ezjail.sh {start/stop/restart} jail-name
# /usr/local/etc/rc.d/ezjail.sh start httpd
# /usr/local/etc/rc.d/ezjail.sh stop smtpd.nixcraft.net.in
Просмотреть список jail можно командой:
# jls
Или, для получения дополнительной информации, воспользуйтесь
синтаксисом:
# jls -v
Дя того, чтобы подключиться к jail, воспользуйтесь командой:
# jexec jid csh
При этом jid можно получить из вывода команды jls. В данном примере мы
подключаемся к jail smtpd.nixcraft.net.in с jid # 2:
# jexec 2 csh
После подключения к jail мы можем устанавливать необходимое нам ПО,
например bash:
# pkg_add -r -v bash
Или сервер Apache 2.2:
# cd /usr/ports/www/apache22
# make install clean
Для того, чтобы подключаться к jail удаленно, необходимо внести
следующие изменения в ее файл /etc/rc.conf:
# echo 'sshd_enable="YES"' >> /etc/rc.conf
Затем откроем файл sshd_config и укажем в нем использовать только IP
адрес, назначенный данной jail. После чего запускаем сервер OpenSSH:
# /etc/rc.d/sshd start
# sockstat -4
Обновить FreeBSD Jail можно так:
# /usr/local/etc/rc.d/ezjail.sh stop
# ezjail-admin update -p -i
# /usr/local/etc/rc.d/ezjail.sh start
Для обновления дерева портов используйте команду:
# ezjail-admin update -P
Журнальные файлы jail по умолчанию хранятся в каталоге /var/log. Для
того чтобы, к примеру, просмотреть логи jail smtpd.nixcraft.net.in,
воспользуйтесь командой:
# tail -f jail_smtpd_nixcraft_net_in_console.log
# grep 'error' jail_smtpd_nixcraft_net_in_console.log
Для добавления httpd jail выполните следующие действия:
# ezjail-admin create -r /jails/httpd.nixcraft.net.in httpd.nixcraft.net.in 202.54.1.4
# vi /usr/local/etc/ezjail/httpd_nixcraft_net_in
# /usr/local/etc/rc.d/ezjail.sh start httpd.nixcraft.net.in
# jls -v
# jexec id csh
Для резервного копированя jail рекомендую воспользоваться командами
tar,rsync и dump.
Для сохранения данных на ленту, воспользуйтесь командой:
# tar -zcvf /dev/sa0 /jails/smtpd.nixcraft.net.in
Для сохранения всех jail, расположенных в каталоге /jails используйте:
# /sbin/dump -0uLf /dev/sa0 /jails/
А для инкрементных обновлений полученного архива:
# /sbin/dump -1uLf /dev/sa0 /jails/
Используемая литература:
Раздел FreeBSD Jail FreeBSD handbook.
man jexec, jls, jail, dump, restore