FreeBSD jail по-быстрому

Итак, как следует из названия, сейчас мы будем в ускоренном темпе поднимать jail на FreeBSD 7.2. Почему в ускоренном? В сети есть масса статей на эту тему, там все разжевывается достаточно подробно и, как правило, с кучей лишних действий, которые в современной системе уже не обязательны. Потому мы обойдемся без лишних движений и сделаем так, чтоб все работало. Итак, начнем с обновления системных исходников:

# pkg_add -r cvsup-without-gui
# ee /usr/share/examples/cvsup/stable-supfile

Правим *default host=CHANGE_THIS.FreeBSD.org на хост, который нам подходит, в моем случае это ftp6.ua.freebsd.org. Потом подготовим структуру каталогов для джейла (мой джейл будет носить гордое имя mon) и запускаем сам процесс обновления:

# mkdir -p /usr/local/jails/mon
# cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile

Пока он идет,  добавим несколько строк в файл /etc/rc.conf :

# Говорим syslogd не логгировать ничего из сети, чтоб не мешать логи в кучу
syslogd_flags="-ss"

# Общие настройки для всех джейлов
jail_enable="YES"
jail_devfs_enable="YES"
jail_procfs_enable="YES"

# Тут список джейлов, которые надо запускать при старте системы, указываются через пробел
jail_list="mon"

# Интерфейс, на который система повесит алиасы для джейлов, на самих интерфейсах прописывать ничего не надо
jail_interface="lo0"

jail_exec_start="/bin/sh /etc/rc"
jail_exec_stop="/bin/sh /etc/rc.shutdown"

# Настройки для джейла mon
jail_mon_rootdir="/usr/local/jails/mon"
jail_mon_hostname="mon.jared.kiev.ua"
jail_mon_ip="192.168.10.1"

Заодно поправим /etc/ssh/sshd_config, чтоб при попытке попасть по SSH в джейл мы не попадали на хост-машину:

ListenAddress 192.168.23.1

Теперь, когда исходники обновили, можем собирать всю конструкцию воедино:

# cd /usr/src
# make buildworld
# make installworld DESTDIR=/usr/local/jails/mon
# cd /usr/src/etc
# make distribution DESTDIR=/usr/local/jails/mon

Все, взлетаем и проверяем наличие нашего джейла:

# /etc/rc.d/jail start
Configuring jails:.
Starting jails: mon.jared.kiev.ua.
# jls
   JID  IP Address      Hostname                      Path
     1  192.168.10.1    mon.jared.kiev.ua             /usr/local/jails/mon

Теперь, набрав на хост-машине jexec 1 tcsh, мы запустим в джейле с JID 1 оболочку tcsh и окажемся внутри нашей виртуальной машины.

Полезные sysctl-переменные для джейлов:
security.jail.set_hostname_allowed — если 1, то внутри jail можно поменять имя хоста;
security.jail.socket_unixiproute_only — если 1 , то сокет в jail можно создать только для доменов PF_LOCAL, PF_INET или PF_ROUTE, иначе, возвращается ошибка;
security.jail.sysvipc_allowed — если 1, то то в jail можно получить доступ к глобальному System V IPC;
security.jail.getfsstatroot_only — если 1, то в jail можно получить информацию (df)только о той файловой системе на которой создан jail;
security.jail.allow_raw_sockets — если 1, то в jail можно создавать raw sockets;
security.jail.chflags_allow — если 1, то процессы в jail могут модифицировать флаги ФС.

# ee /usr/share/examples/cvsup/stable-supfile
Там правим *default host=CHANGE_THIS.FreeBSD.org на хост, который нам подходит, в моем случае это был ftp2.ua.freebsd.org.

# cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile

Вам также может понравиться

Об авторе jared

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *