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, который инициализирует запуск отдельной изолированной виртуальной системы. В случае даже самого деструктивного взлома виртуальной системы и вывода её функциональности из строя, остальных запущенных виртуальных систем это не коснется.

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

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

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

  • Системное окружение утилит (создаётся с помощью 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.1 и более ранних версиях)

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

add path 'bpf*' unhide

Преимущества и недостатки реализации Jail (во FreeBSD 7.2)

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

add path 'bpf*' unhide

Примечания

  1. FreeBSD Handbook  (англ.)

См. также

Ссылки

  • ezjail — Cредство для упрощения работы с jail
  • jail step by step — Настройка FreeBSD jail шаг за шагом

Wikimedia Foundation. 2010.

Поможем студентам с решением задачи

Смотреть что такое "FreeBSD Jail" в других словарях:

  • FreeBSD jail — The FreeBSD jail mechanism is an implementation of operating system level virtualization that allows administrators to partition a FreeBSD based computer system into several independent mini systems called jails .The need for the FreeBSD jails… …   Wikipedia

  • FreeBSD — FreeBSD …   Википедия

  • FreeBSD — welcome screen Company / developer The FreeBSD Project …   Wikipedia

  • Jail (disambiguation) — Jail, also spelled gaol , is a place for confinement. Other uses:* Jail (computer security), program resources sandbox mechanism * Chroot jail, a command on Unix operating systems * FreeBSD jail, a FreeBSD environment * Jail (TV series), a… …   Wikipedia

  • FreeBSD Ports — У этого термина существуют и другие значения, см. Порт (значения). Порты (англ. Ports) программное решение во FreeBSD для установки сторонних программ, распространяемых как в исходных кодах (обычный способ в мире UNIX) так и в бинарных файлах… …   Википедия

  • Jail — («тюрьма») механизм отделения процессов в операционных системах Unix. Jail позволяет разделить выполнение различных процессов. Например, вы можете держать любой сервис (apache, sshd, и т.д.) в jail и не бояться, что потеряете всю систему целиком… …   Википедия

  • Jail — Als Host (engl. Wirt, Gastgeber) wird ein in einem Rechnernetz eingebundenes Betriebssystem bezeichnet, das Server oder Clients beherbergt. Neben komplexen Betriebssystemen von Computern können auch spezialisierte Betriebssysteme von… …   Deutsch Wikipedia

  • List of commercial products based on FreeBSD — There are a number of commercial products based on FreeBSD. Information about these products and the version of FreeBSD they are based on is often difficult to come by, since this fact is not widely publicised. Examples Apple Inc. s Darwin, the… …   Wikipedia

  • Порты FreeBSD — Коллекция портов FreeBSD (англ. FreeBSD Ports Collection), как и бинарные пакеты (англ. package)  технология установки программного обеспечения сторонних разработчиков в операционной системе FreeBSD. Порт FreeBSD для любого… …   Википедия

  • Gentoo/FreeBSD — это юникс подобная операционная система, разрабатываемая создателями Gentoo Linux, чтобы привнести Gentoo Linux дизайн, структуру и инструментарий, такой как система Portage и архитектура Gentoo Linux, в операционную систему FreeBSD.… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»