Инструменты пользователя

Инструменты сайта


freebsd:jail

Это старая версия документа!


Настройка jail во FreeBSD

Клетки буду создавать в в /usr/jails/

mkdir -p /usr/jails/jail_1
mkdir -p /usr/jails/jail_2
mkdir -p /usr/jails/jail_3

Создаю клетку

cd /usr/src
make world DESTDIR=/usr/jails/jail_1
cd /usr/src/etc
make distribution DESTDIR=/usr/jails/jail_1
mount -t devfs devfs /usr/jails/jail_1/dev

Настройка /etc/rc.conf корневого сервера.

syslogd_flags="-ss" # отключение прослушивания демоном syslogd сетевого интерфейса
inetd_flags="-wW -a 10.215.130.183"
ifconfig_alc0_alias0="10.215.130.20/24" # алиас на устройство lo0 для jail_1
ifconfig_alc0_alias1="10.215.130.21/24" # алиас на устройство lo0 для jail_2

jail_enable="YES" # запуск клеток разрешен
jail_list="jail_1 jail_2" # список клеток запускаемых автоматически

Настройка клеток. Создаю файл конфигурации клеток:

ee /etc/jail.conf
cat /etc/jail.conf
exec.start = "/bin/sh /etc/rc"; # Команда запуска
exec.stop = "/bin/sh /etc/rc.shutdown"; # Команда остановки
exec.clean;
allow.raw_sockets = 1;
allow.set_hostname = 0;
allow.sysvipc = 1;

#       allow.mount = TRUE;
#       allow.mount.nullfs = TRUE;
#       allow.mount.tmpfs = TRUE;

mount.devfs; #разрешить монтировать devfs к файловой системе клеток
mount += "dev /usr/jails/jail_1/dev devfs rw,ruleset=$devfs_ruleset";
mount.procfs;

jail_1 {
        host.hostname = "jail_1"; #имя клетки
        path = "/usr/jails/jail_1"; #путь до клетки
        interface = "alc0"; #интерфейс клетки
        ip4.addr = 10.215.130.20/24; #IP адрес клеки
}

jail_2 {
        host.hostname = "jail_2";
        path = "/usr/jails/jail_2";
        interface = "alc0";
        ip4.addr = 10.215.130.21/24;
}

Для запуска всех jail'ов вручную:

service jail start

или

/etc/rc.d/jail start

Для запуска конкретного jail'а (например jail_1):

service jail start jail_1

Посмотреть список запущеных jail'ов:

jls
   JID  IP Address      Hostname                      Path
     1  10.215.130.21   jail_2                        /usr/jails/jail_2

Остановить jail:

service jail stop jail_1

Перезагрузить выбранный jail:

service jail restart jail_1

В вновь созданный Jail по ssh подключиться пока нету возможности, так-как ssh отключен. Для подключения к jail выполняю:

jexec jail_1

Подключиться к консоли jail'а (нужно указать номер выбранного jail'а из списка jls):

jexec 1

или, подключиться под конкретным пользователем jail'а:

jexec 1 -u jailuser

1. Добавляю DNS сервера:

ee /etc/resolv.conf
nameserver 10.215.130.1

cat /etc/resolv.conf
nameserver 10.215.130.1

2. Добавляю пользователя и включаю в группу wheel

adduser

3. Запускаю sshd

sysrc sshd_enable="YES"
service sshd start

4. Устанавливаю пароль руту

passwd root

5. Отключаю настройку сетевых интерфейсов (они виртуальные)

sysrc network_interfaces=""

6. Настраиваю временную зону

tzsetup

7. Создаю пустой файл fstab, чтобы скрипты инициализации не сообщали о его отсутствии

touch /etc/fstab

8. В rc.conf добавляю строки

sysrc sendmail_enable="NO"
sysrc syslogd_flags="-ss"

Для удобства установки пакетов также можно примонтировать папку ports корневой системы во внутрь jail. Для этого на корневом сервере нужно выполнить следующую команду:

mkdir /usr/jails/jail_1/usr/ports
mount_nullfs /usr/ports /usr/jails/jail_1/usr/ports 

и добавляю в /etc/fstab корневой машины

/usr/ports   /usr/jails/jail_1/usr/ports nullfs rw 0 0

Для создания нескольких клеток делаю:

cd /usr/jails/jail_1
tar -zcvpf jail.tar *
cp jail.tar /usr/jails/jail_2
cp jail.tar /usr/jails/jail_3
cd /usr/jails/jail_2
tar -zxvpf jail.tar
cd /usr/jails/jail_3
tar -zxvpf jail.tar

Для удаления клетки, убираю со всех файлов «флаг» «неизменяемости»:

chflags -R noschg /jails
rm -rf /jails/

Проверка какие правила devfs применяются для jail

sysctl security.jail.devfs_ruleset
sysctl security.jail.sysvipc_allowed
devfs -m /path/to/jail/dev rule showsets
devfs rule -s 4 show

Ссылки:
https://alexei.bakush.ru/nastroika-jail-vo-freebsd
http://linux-bsd-adm.blogspot.com/2014/10/jail-freebsd-10.html
https://translate.google.ru/translate?hl=ru&sl=en&u=https://www.freebsd.org/doc/handbook/jails-build.html&prev=search
https://wiki.lissyara.su/wiki/FreeBSD_%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%9F%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F:_%D0%93%D0%BB%D0%B0%D0%B2%D0%B0_15_Jails_(%D0%9A%D0%BB%D0%B5%D1%82%D0%BA%D0%B8)
http://www.ignix.ru/book/freebsd/setup/jail
http://www.linuxshop.ru/articles/a241-installing_and_configuring_virtual_servers_jail
https://ru.bmstu.wiki/FreeBSD_Jail
https://xakep.ru/2009/05/22/48311
https://www.lissyara.su/articles/freebsd/tuning/jail
https://habr.com/post/342312
https://www.opennet.ru/tips/1546_freebsd_chroot_jail.shtml
http://devpit.org/wiki/FreeBSD/Jails
http://qaru.site/questions/3213328/freebsd-jail-and-ssh-devtty-no-such-file-or-directory
https://www.freebsd.org/cgi/man.cgi?query=jail&sektion=8&manpath=freebsd-release-ports

freebsd/jail.1572973704.txt.gz · Последние изменения: 2019/11/05 17:08 (внешнее изменение)