Ограничения тюрьмы

В существующем виде код тюрьмы предоставляет окружению тюрьмы точное подмножество системных ресурсов, основываясь на доступе к процессам, файлам, сетевым ресурсам и привилегированным службам. Представление окружения тюрьмы в виде полнофункциональной системы FreeBSD предоставляет максимальную поддержку приложениям и возможность предложить широкий диапазон служб в рамках окружения тюрьмы.

Однако в текущей реализации есть ограничения. Устранение этих ограничений увеличит возможности по предложению служб в окружении тюрьмы. Тремя областями, заслуживающими большего внимания, являются набор доступных сетевых ресурсов, управление планированием ресурсов и поддержка упорядоченного отключения тюрьмы.

В настоящее время каждой тюрьме может быть выделен лишь один адрес IP версии 4, и вся коммуникация из тюрьмы ограничена этим IP-адресом. Была бы желательной поддержка для каждой тюрьмы множества адресов или возможно различных семейств адресов. Доступ к непосредственным сокетам в настоящее время запрещен, поскольку текущая реализация непосредственных сокетов позволяет прямой доступ к пакетам IP, связанным со всеми интерфейсами. Ограничение области действия непосредственного сокета позволило бы безопасно использовать его внутри тюрьмы, позволяя таким образом использовать ping и другие сетевые отладочные и диагностические инструменты.

Другой областью, представляющей большой интерес для текущих пользователей кода тюрьмы, является возможность ограничить влияние одной тюрьмы на ресурсы процессора, доступные для других тюрем. Конкретнее, они требуют, чтобы у системы были способы распределять планирование ресурсов между группами процессов в каждой из тюрем. Можно было бы воспользоваться работой в области лотерейного планирования, чтобы допустить некоторую степень разделения между окружениями тюрем [Petrou & Milford, 1997].

Управление окружениями тюрем в настоящий момент представляет собой нечто специальное. Создание и запуск тюрем - хорошо документированная процедура, но остановка тюрьмы требует идентификации и завершения всех процессов, работающих в пределах тюрьмы. Одним из подходов к очистке этого интерфейса было бы назначение уникального идентификатора тюрьмы во время ее создания. Новый системный вызов jailkill дал бы возможность направить сигналы определенным идентификаторам тюрем, давая возможность эффективно завершать все процессы в тюрьме. FreeBSD использует процесс init для запуска системы в процессе загрузки и для содействия при ее выключении. Действующий сходным образом процесс jailinit, действующий в каждой тюрьме, представил бы основное местоположение для доставки запросов управления своей тюрьме от окружения хоста или изнутри тюрьмы. Процесс jailinit координировал бы корректное выключение тюрьмы перед обращением к завершающимся процессам в таком же стиле, как выключение окружения хоста перед уничтожением всех процессов и остановкой ядра.

 

Еще материалы

  • Процедуры вычисления приоритета потока -

    Вычисления приоритета, использованные в алгоритме кратковременного планирования, разбросаны в различных частях системы. Периодически запускаются две процедуры, schedcpuQ и roundrobinQ. SchedcpuQ пересчитывает приоритеты потоков раз в секунду, используя формулу 4.2, и обновляет значение kg_slptime для потоков, заблокированных вызовом sleepQ. Процедура roundrobinQ запускается 10 раз в секунду и заставляет систе­му перепланировать потоки в (непустой) очереди с самым высоким приоритетом в режиме карусели, что дает каждому потоку квант времени в 100 миллисекунд.

  • Учет использования ресурсов -

    Система поддерживает простую форму учета использования ресурсов. По завершении каждого процесса учетная запись, описывающая использованные этим процессом ре­сурсы, записывается в системный файл учета.

  • Идентификаторы и SETID -

    FreeBSD реализует возможность setgid путем установки в нулевом элементе мас­сива дополнительных групп процесса, который выполняет программу setgid, значения группы этого файла. После этого можно проверять права доступа, как если бы это был обычный процесс. Из-за дополнительной группы программа setgid может иметь воз­можность доступа к большему количеству файлов, чем процесс пользователя, запус­кающий программу без этой особой привилегии.

  • Идентификаторы (Часть 2) -

    Часто пользователю нужно предоставить дополнительные ограниченные привиле­гии. Например, пользователь, который хочет отправить сообщение, должен иметь воз­можность добавить сообщение в почтовый ящик другого пользователя. Разрешение записи в почтовый ящик назначения для всех пользователей дало бы возможность пользователю, не являющемуся владельцем ящика, изменять в нем сообщения (злона­меренно или неумышленно). Чтобы решить эту проблему, ядро допускает создание программ, которым предоставляются при их выполнении дополнительные привиле­гии.

  • Корректировка времени и интервальное время -

    Часто желательно на всех машинах сети поддерживать одно и то же время. Можно также поддерживать более точное время, чем возможно от базовых часов процессора. Например, без труда доступно оборудование, прослушивающее ряд радиостанций, рассылающих в Соединенных Штатах синхронизирующие сигналы UTC. Когда про­цессы на различных машинах приходят к соглашению относительно общего времени, им нужно изменить часы процессора своего хоста, чтобы согласовать их с сетевым значением времени.