Установка и настройка виртуальных серверов jail

Установка и настройка виртуальных серверов jail

Jail позволяет создавать и управлять виртуальными серверами. Причём каждый такой сервер будет работать независимо друг от друга и осуществить вход из такого виртуального сервера на внешний (корневой) сервер будет невозможным, что даёт абсолютную безопасность от взлома вашей основной системы.

Установка


Непосредственно для установки Jail сервера нам понадобятся исходные коды freebsd. Исходные коды FreeBSD можно найти на CD с которого устанавливается система. При установке или установленной системе в sysinstall ->configure->distributions отметить пункт src. Исходные коды FreeBSD В установленной системе /usr/src/
Либо скачать с многочисленных зеркал официального сервера freebsd.org


Для установки я выбрал директорию /usr/local/jails/

Итак выполняем команды естественно от пользователя root

Цитата
#mkdir -p /usr/local/jails/jail1
#cd /usr/src
#make world DESTDIR=/usr/local/jails/jail1
#cd /usr/src/etc
#make distribution DESTDIR=/usr/local/jails/jail1
#mount_devfs devfs /usr/local/jails/jail1/dev
#cd /usr/local/jails/jail1
#ln -sf dev/null kernel


После выполнения этих команд у вас получится готовый виртуальный сервер,
который выглядит точно так же как корневой каталог типичной системы FreeBSD.

/etc/rc.conf


Далее нужно настроить файл /etc/rc.conf корневого сервера.



добавим следующие строки в /etc/rc.conf:
Код
syslogd_flags="-ss"

# Она укажет демону syslogd корневой машины не открывать UDP порт для приема #сообщений с удаленных систем, что позволит запустить syslogd в окружении jail.


inetd_flags="-wW -a 193.19.14.3"

ifconfig_lo0_alias0="inet 193.19.14.52/32" # алиас на устройство lo0 для нашего jail

##определим общие настройки для jail серверов
jail_enable="YES"
jail_devfs_enable="YES"
jail_procfs_enable="YES"
jail_list="jail1" # если у вас есть несколько виртуальных серверов то этот список можно #писать таким образом jail_list="jail1 jail2 jail3 …."


# Далее определим параметры запуска самого jail сервера
# jail1
jail_jail1_rootdir="/usr/local/jails/jail1" #каталог где находится ваш сервер
jail_jail1_hostname="jail1" # имя сервер (должно совпадать с именем в списке jail_list
jail_jail1_ip="193.19.14.52" # ip адрес
jail_jail1_exec="/bin/sh /etc/rc" # параметры запуска
jail_jail1_devfs_enable="YES"

Это позволит запускать виртуальный сервер при загрузке основного сервера.



Далее рекомендую в файле /etc/sysctl.conf написать следующие строки
Код
security.jail.allow_raw_sockets=1
security.jail.socket_unixiproute_only=0
security.jail.enforce_statfs=0


Это понадобится для того что бы вы из виртуального сервера имели доступ к системным службам и сети.

Добавим адрес нашего виртуального сервера на устройство lo0 для первого запуска без перезагрузки сервера.

#ifconfig lo0 inet 193.19.14.52/32 alias

Запустить оболочку в jail можно следующей командой:

#jail /data/jail/jail1 jail1 193.19.14.52 /bin/sh

Далее вы можете настроить sshd для этого jail сервера, указав ему адрес на котором слушать подключения.

/etc/ssh/sshd.conf

Цитата
ListenAddress 193.19.14.52


Если вы в будущем установите демон ftp то задать статически адрес на котором слушать подключения по протоколу ftp тоже важно так как если этого не сделать вы можете набирая подключение к jail серверу попасть в корневую систему.

Также в файле /etc/rc.conf этого виртуального сервера нужно включить sshd добавлением строки:
Цитата
sshd_enable="YES"


Создайте нового пользователя в среде jail для проверки доступа по ssh.
Цитата
#adduser test


Далее выйдем из jail окружения и перезагрузим корневой сервер.

После перезарузки вы можете посмотреть список jail серверов командой jls
Цитата
# jls
JID IP Address Hostname Path
1 193.19.14.52 193.19.14.52 /usr/local/jails/jail1


И так мы видим что сервер запущен и работает на ip адресе который мы ему присвоили
Вы также можете протестировать работу sshd этого jail сервера

Цитата
#ssh test@193.19.14.52


Если соединение прошло успешно значит всё в порядке, демон работает и принимает подключения.

Вход в него можно осуществить командой:
jexec [JID] bash (или sh)

JID это номер jail сервера. При каждой перезагрузке он будет меняться (инкрементирваться)
(Такой вход возможен только от пользователя root)

Попадая таким образом в наш виртуальный сервер вы автоматически будете управлять консолью с привилегией системного пользователя.

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

#mount_nullfs /usr/ports /usr/local/jails/jail1/usr/ports


Теперь войдя вновь в jail окружение виртуального сервера, вы можете устанавливать программы использую систему портов.

Таким образом мы создали полностью функционирующий виртуальный сервер который готов к работе.


Все замечания и вопросы пишите на почту asad@online.ua Александр Туткевич.

< Назад к списку новостей