Ярлыки

понедельник, 13 декабря 2010 г.

Создание JAIL

Для джайлов рекомендую использовать место на отдельном разделе
# mkdir /mnt/C/jail/jail1
Если еще не производилась сборка мира, то делаем :
# cd /usr/src
# make buildworld
После сборки системы ее нужно установить в подготовленный каталог : 
# make installworld DESTDIR=/mnt/C/jail/jail1
# make distribution DESTDIR=/mnt/C/jail/jail1
Для некоторых программ необходим доступ к некоторым устройствам (терминал, генератор случайных чисел и т.д.): 
# mount -t devfs devfs /mnt/C/jail/jail1/dev
Нужно не забыть сделать псевдоним IP-адреса(для каждой клетки свой).Итак, в /etc/rc.conf добавим следующее :
ifconfig_re0_alias0="192.168.1.101 netmask 255.255.255.0"
После всех этих процедур пробуем войти в клетку и подготовить ее к использованию :
# jail /mnt/C/jail/jail1/ jail.homecomp.by 192.168.1.101 /bin/csh
где 
  • /mnt/C/jail/jail1/ - расположение клетки
  • jail.homecomp.by - присвоение ей имя хоста
  • 192.168.1.101 - присвоение ей IP-адреса
  • /bin/csh - выполняемая команда(в данном случае нам нужен доступ к шелу)
При удачном соединении к клетке появится приглашение похожее на это:
jail#
Можно немного полазить по ней (cd, ls) и заметить, что мы только что установили FreeBSD в минимальном фарше )).
Дальше желательно создать /etc/fstab, т.к. некоторые программы будут расстроены, не найдя его(команда выполняется уже в клетке).
jail# touch /etc/fstab
А в /etc/rc.conf клетки напишем следующее:
network_interfaces=""
sshd_enable="YES"
Понятно, доступ к клетке будем получать по сети. А вот сетевой интерфейс настроить мы не сможем, но сценарии загрузки будут спокойны)).
Еще нужно установить пароль root'у :
jail# passwd
Changing local password for root
New Password:
Retype New Password:
Также лучше добавить необходимых юзеров:
jail# adduser
Username: erema15
Full name: Vasya Pupkin
Uid (Leave empty for default):
Login group [erema15]:
Login group is erema15. Invite erema15 into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: csh
Home directory [/home/erema15]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: ******
Enter password again: ******
Lock out the account after creation? [no]:
Username : erema15
Password : *****
Full Name : Vasya Pupkin
Uid : 1001
Class :
Groups : erema15 wheel
Home : /home/erema15
Home Mode :
Shell : /bin/csh
Locked : no
OK? (yes/no): y
adduser: INFO: Successfully added (erema15) to the user database.
Add another user? (yes/no): n
Goodbye!
С помощью tzsetup настраиваем часовой пояс, а с помощью date смотрим на результат
Все! Вроде клетка готова. Теперь в /etc/rc.conf хоста запишем:
jail_enable="YES"
jail_list="jail1"
jail_jail1_rootdir="/mnt/C/jail/jail1"
jail_jail1_hostname="jail.erema15.by"
jail_jail1_ip="192.168.1.101" #привязываем клетку к IP-адресу (необходимо добавить соответствующий алиас к сетевой карте
jail_jail1_devfs_enable="YES"                    #дает доступ к devfs
jail_jail1_devfs_ruleset="devfsrules_jail"       #применяет правила, обеспечивая доступ только к определенным устройствам
Тут какбе все понятно должно быть, только останется перенести правила [devfsrules_jail] из  /etc/defaults/devfs.rules в /etc/devfs.rules ... или написать свои )))
У меня были вот такие:
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
Запуск и останов клеток делается так:
# /etc/rc.d/jail start      - запуск всех клеток
# /etc/rc.d/jail start jail1 - запуск только jail1
# /etc/rc.d/jail stop - останов всех клеток
# /etc/rc.d/jail stop jail1 - останов только jail1

Еще пару слов о некоторых инструментах управления клетками. Существуют утилиты jls и jexec. Первая выводит список всех клеток, запущенных в системе, вторая - позволяет админу хоста выполнить команду в любой запущеной уже клетке, без входа в нее.
# jls
JID IP Address Hostname Path
1 10.1.1.1 erema15 /usr/jails/portjail
2 192.168.1.101 jail.erema15.by /mnt/C/jail/jail1
# jexec 2 uname -prns
FreeBSD jail.erema15.by 8.1-RELEASE i386

Комментариев нет: