FreeBSD Jail

Поделись знанием:
(перенаправлено с «FreeBSD jail»)
Перейти к: навигация, поиск

FreeBSD Jail (англ. jail — «тюрьма») — механизм виртуализации в системе FreeBSD, позволяющий создавать внутри одной операционной системы FreeBSD несколько независимо работающих FreeBSD на том же ядре операционной системы, но совершенно независимо настраиваемых с независимым набором установленных приложений.

В основу FreeBSD Jail вошёл системный вызов chroot(2), при котором для текущего процесса и всех его потомков, корневой каталог переносится в определённое место на файловой системе. При этом это место для процесса становится корневым каталогом. Таким образом, изолированный процесс может иметь доступ только к низлежащему дереву каталогов.

Однако FreeBSD Jail также имеет поддержку на уровне ядра, что позволяет ограничивать доступ к сети, общей памяти, переменным ядра sysctl и ограничивать видимость процессов вне jail.

Процесс, заключённый в Jail, может иметь доступ только к определённым IP-адресам операционной системы и использовать определённый hostname. Такой процесс называется «изолированный процесс» или «Jailed-процесс».

Таким образом, создаётся безопасная «клетка», внутри которой можно исполнять даже потенциально опасное программное обеспечение, которое не сможет никак повредить основной системе или другим таким же «клеткам». До версии 9.0-RELEASE, FreeBSD Jail не имела средств контроля по использованию ресурсов (как это делает, например, OpenVZ под Linux). С версии 9.0-RELEASE, подобные механизмы были введены через утилиту rctl(8) и фреймворк RACCT.

На уровне sysctl системы настраиваются привилегии Jailed-процессов:

Идентификатор sysctl Контролируемая функциональность
security.jail.chflags_allowed Возможность менять системные флаги файлов
security.jail.allow_raw_sockets Возможность создавать низкоуровневые сокеты
security.jail.sysvipc_allowed Возможность использовать System V IPC
security.jail.set_hostname_allowed Возможность задавать собственные hostname внутри Jailed-процессов (обычно hostname задаётся при вызове jail)
security.jail.enforce_statfs Возможность видеть все монтированные файловые системы внутри Jailed-процессов
security.jail.socket_unixiproute_only Ограничение по возможности создания UNIX/IPv4/route сокетов
security.jail.list Список запущеных JAIL'ов




Использование

Наиболее частое использование FreeBSD Jail — создание изолированных безопасных виртуальных машин. В этом случае с помощью jail(8) запускается инициализирующий скрипт /etc/rc<tt>, который инициализирует запуск отдельной изолированной виртуальной системы. В случае даже самого деструктивного взлома виртуальной системы и вывода её функциональности из строя, остальных запущенных виртуальных систем это не коснется.

В практической деятельности хостинг-провайдеров механизм jail может быть использован для построения администрируемых (managed) систем на выделенных серверах. В таком варианте клиенту предоставляется доступ только к jail, а техническому персоналу компании-провайдера к мастер-системе.

Особенности использования виртуальных машин

FreeBSD Jail, при использовании в качестве виртуальной машины для запуска произвольного программного обеспечения, потребует полной эмуляции окружения системы, включая:

  • Системное окружение утилит (создаётся с помощью <tt>make world DESTDIR=/path/to/jail)
  • Настроенная конфигурация системы в /etc (временная зона, база данных пользователей и пр.)
  • Примонтированный DevFS (mount_devfs devfs /path/to/jail/dev)

Каждая виртуальная машина на хостовой системе (до версии FreeBSD 7.2) обязательно потребует выделения одного IP-адреса для своего запуска. Также можно использовать один IP-адрес для нескольких машин, но при этом службы на этих виртуальных машинах не должны использовать одинаковые TCP/UDP порты.

Начиная с FreeBSD 8.0 каждой виртуальной машине можно присваивать несколько IP-адресов.

Более подробно об установке и использовании FreeBSD Jail можно прочитать в страницах man jail(8) или в официальной документации.[1]

Недостатки реализации Jail (во FreeBSD 7.2 и более ранних версиях)

  • Невозможно использовать несколько IP-адресов для одного JAIL (без использования стороннего патча);
  • Отсутствие разграничения системных лимитов между родительской и гостевой системой (без использования стороннего патча);
  • Использование прямого доступа к устройствам (tcpdump и пр) возможно только через devfs.rules добавлением записи типа:

add path 'bpf*' unhide

Напишите отзыв о статье "FreeBSD Jail"

Примечания

  1. [www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails.html FreeBSD Handbook]  (англ.)

См. также

Ссылки

  • [erdgeist.org/arts/software/ezjail/ ezjail] — Средство для упрощения работы с jail
  • [www.homeunix7.org/ru/unix/jail jail step by step] — Настройка FreeBSD jail шаг за шагом

Отрывок, характеризующий FreeBSD Jail

– Их сиятельство с ними в том же доме стоят.
«Стало быть, он жив», – подумала княжна и тихо спросила: что он?
– Люди сказывали, все в том же положении.
Что значило «все в том же положении», княжна не стала спрашивать и мельком только, незаметно взглянув на семилетнего Николушку, сидевшего перед нею и радовавшегося на город, опустила голову и не поднимала ее до тех пор, пока тяжелая карета, гремя, трясясь и колыхаясь, не остановилась где то. Загремели откидываемые подножки.
Отворились дверцы. Слева была вода – река большая, справа было крыльцо; на крыльце были люди, прислуга и какая то румяная, с большой черной косой, девушка, которая неприятно притворно улыбалась, как показалось княжне Марье (это была Соня). Княжна взбежала по лестнице, притворно улыбавшаяся девушка сказала: – Сюда, сюда! – и княжна очутилась в передней перед старой женщиной с восточным типом лица, которая с растроганным выражением быстро шла ей навстречу. Это была графиня. Она обняла княжну Марью и стала целовать ее.
– Mon enfant! – проговорила она, – je vous aime et vous connais depuis longtemps. [Дитя мое! я вас люблю и знаю давно.]
Несмотря на все свое волнение, княжна Марья поняла, что это была графиня и что надо было ей сказать что нибудь. Она, сама не зная как, проговорила какие то учтивые французские слова, в том же тоне, в котором были те, которые ей говорили, и спросила: что он?
– Доктор говорит, что нет опасности, – сказала графиня, но в то время, как она говорила это, она со вздохом подняла глаза кверху, и в этом жесте было выражение, противоречащее ее словам.
– Где он? Можно его видеть, можно? – спросила княжна.
– Сейчас, княжна, сейчас, мой дружок. Это его сын? – сказала она, обращаясь к Николушке, который входил с Десалем. – Мы все поместимся, дом большой. О, какой прелестный мальчик!
Графиня ввела княжну в гостиную. Соня разговаривала с m lle Bourienne. Графиня ласкала мальчика. Старый граф вошел в комнату, приветствуя княжну. Старый граф чрезвычайно переменился с тех пор, как его последний раз видела княжна. Тогда он был бойкий, веселый, самоуверенный старичок, теперь он казался жалким, затерянным человеком. Он, говоря с княжной, беспрестанно оглядывался, как бы спрашивая у всех, то ли он делает, что надобно. После разорения Москвы и его имения, выбитый из привычной колеи, он, видимо, потерял сознание своего значения и чувствовал, что ему уже нет места в жизни.
Несмотря на то волнение, в котором она находилась, несмотря на одно желание поскорее увидать брата и на досаду за то, что в эту минуту, когда ей одного хочется – увидать его, – ее занимают и притворно хвалят ее племянника, княжна замечала все, что делалось вокруг нее, и чувствовала необходимость на время подчиниться этому новому порядку, в который она вступала. Она знала, что все это необходимо, и ей было это трудно, но она не досадовала на них.
– Это моя племянница, – сказал граф, представляя Соню, – вы не знаете ее, княжна?
Княжна повернулась к ней и, стараясь затушить поднявшееся в ее душе враждебное чувство к этой девушке, поцеловала ее. Но ей становилось тяжело оттого, что настроение всех окружающих было так далеко от того, что было в ее душе.
– Где он? – спросила она еще раз, обращаясь ко всем.
– Он внизу, Наташа с ним, – отвечала Соня, краснея. – Пошли узнать. Вы, я думаю, устали, княжна?
У княжны выступили на глаза слезы досады. Она отвернулась и хотела опять спросить у графини, где пройти к нему, как в дверях послышались легкие, стремительные, как будто веселые шаги. Княжна оглянулась и увидела почти вбегающую Наташу, ту Наташу, которая в то давнишнее свидание в Москве так не понравилась ей.
Но не успела княжна взглянуть на лицо этой Наташи, как она поняла, что это был ее искренний товарищ по горю, и потому ее друг. Она бросилась ей навстречу и, обняв ее, заплакала на ее плече.
Как только Наташа, сидевшая у изголовья князя Андрея, узнала о приезде княжны Марьи, она тихо вышла из его комнаты теми быстрыми, как показалось княжне Марье, как будто веселыми шагами и побежала к ней.
На взволнованном лице ее, когда она вбежала в комнату, было только одно выражение – выражение любви, беспредельной любви к нему, к ней, ко всему тому, что было близко любимому человеку, выраженье жалости, страданья за других и страстного желанья отдать себя всю для того, чтобы помочь им. Видно было, что в эту минуту ни одной мысли о себе, о своих отношениях к нему не было в душе Наташи.