Двумя важными целями реализации тюрьмы являются следующие.
Сохранение семантики существующего механизма избирательного контроля за доступом.
Возможность иметь для каждой тюрьмы своего собственного администратора суперпользователя, деятельность которого ограничена процессами, файлами и сетью, связанной с этой тюрьмой.
Первая цель поддерживает совместимость с большинством приложений. Вторая цель позволяет администратору компьютера с FreeBSD разделить хост на отдельные тюрьмы и предоставить доступ к учетной записи суперпользователя в каждой из этих тюрем без потери контроля над окружением хоста.
Говорят, что процесс в разделе находится «в тюрьме». Когда FreeBSD загружается впервые, ни один процесс не будет заключен в тюрьму. Тюрьмы создаются, когда привилегированный процесс осуществляет системный вызов с аргументами файловой системы, для которой он должен вызвать chroot, и IP-адресом и именем хоста, которые должны быть связаны с тюрьмой. Процесс, создающий тюрьму, будет первым и единственным процессом, помещенным в тюрьму. Все будущие потомки заключенного в тюрьму процесса будут находиться в его тюрьме. Процесс никогда не может покинуть тюрьму, которую он создал или в которой он был создан. Процесс может быть лишь в одной тюрьме. Единственным способом для нового процесса войти в тюрьму является наследование доступа к тюрьме из другого процесса, уже находящегося в этой тюрьме.
Каждая тюрьма привязана к одному IP-адресу. Процессы в тюрьме не могут использовать для исходящих или входящих соединений любые другие адреса. Тюрьма имеет возможность ограничить набор сетевых служб, которые она выберет для предложения по своему адресу. Запросы приложения по привязке всех IP-адресов перенаправляются по индивидуальным адресам, связанным с тюрьмой, в которой работает запрашивающий процесс.
Тюрьма использует преимущества существующего поведения chroot для ограничения доступа к пространству имен файловой системы для заключенных в тюрьму процессов.
При создании тюрьмы она привязывается к определенному корню файловой системы. Процессы не могут манипулировать файлами, к которым они не могут обращаться. Таким образом защищается целостность и конфиденциальность файлов вне корня файловой системы тюрьмы.
Процессы внутри тюрьмы обнаружат, что они не способны взаимодействовать или даже проверить существование процессов вне тюрьмы. Процессы внутри тюрьмы оберегаются от доставки сигналов процессам вне тюрьмы, от соединения с процессами вне тюрьмы с помощью отладчиков или даже от наблюдения за процессами вне тюрьмы с помощью обычных механизмов мониторинга системы. Тюрьмы не предотвращают и не должны предотвращать использование скрытых каналов или механизмов взаимодействия посредством общепринятых интерфейсов. Например, два процесса в различных тюрьмах могут взаимодействовать по сети через сокеты. Тюрьмы не пытаются предоставить службы планирования, основанные на разделении.
Заключенные в тюрьму процессы являются предметом обычных ограничений, имеющихся для любых процессов, включая ограничения ресурсов и ограничения, накладываемые сетевым кодом, включая правила брандмауэров (firewall). Определяя правила брандмауэра для IP-адресов, привязанных к тюрьме, можно наложить на эту тюрьму ограничения на возможности соединения и пропускной способности, ограничивая службы, которые она может использовать или предлагать.
Окружение тюрьмы является подмножеством окружения хоста. Файловая система тюрьмы выглядит как часть файловой системы хоста и может непосредственно изменяться процессами в среде хоста. Процессы внутри тюрьмы появляются в листингах процессов хоста, им могут посылаться сигналы, и их можно отлаживать.
Процессы, работающие без привилегий суперпользователя, заметят несколько отличий между заключенным и не заключенным в тюрьму окружением. Стандартные системные службы, такие, как удаленная регистрация и почтовые службы, ведут себя обычным способом, как большинство сторонних приложений, включая популярный веб-сервер Apache.
Процессы, работающие с привилегиями суперпользователя, обнаружат, что на привилегированные вызовы, которые они могут делать, накладывается множество ограничений. Большинство ограничений спроектировано для ограничения деятельности, которая повлияла бы на ресурсы вне тюрьмы. Эти ограничения включают следующие запреты на:
- изменение работающего ядра путем непосредственного доступа или загрузки модулей ядра;
- монтирование и демонтирование файловых систем; создание узлов устройств; изменение параметров ядра времени выполнения, таких, как большинство установок ssctl; изменение флагов уровня безопасности; изменение любых сетевых настроек, интерфейсов, адресов и элементов таблицы маршрутизации; доступ к непосредственным (сырым) (raw), переключающим (divert) или маршрутизирующим (routing) сокетам.
Эти ограничения предотвращают доступ к возможностям, которые дают возможность имитировать IP-номера или создавать «подрывной» трафик; доступ к сетевым ресурсам, не связанным с тюрьмой. Конкретнее, попытка привязать зарезервированный номер порта для всех доступных адресов приведет к привязке лишь адреса, связанного с тюрьмой, влияющие на систему хоста административные действия, такие, как перезагрузка.
Другие привилегированные действия разрешаются постольку, поскольку они ограничены пределами тюрьмы.
Разрешается отправка сигналов любому процессу в пределах тюрьмы.
Разрешается удаление или изменение владельца и режима любого файла внутри тюрьмы, пока флаги файла допускают запрошенное изменение.
Суперпользователь может читать файл владельца с любым UID, если он доступен через пространство имен файловой системы тюрьмы.
Разрешается привязка номеров портов TCP и UDP к IP-адресу тюрьмы.
Эти ограничения на доступ суперпользователя ограничивают область действия процессов, работающих с привилегиями суперпользователя, позволяя беспрепятственно выполняться большинству приложений, но предотвращая вызовы, которые могли бы позволить приложению получить доступ за пределами тюрьмы и повлиять на другие процессы или общесистемную конфигурацию.
- 26/10/2010 00:17 - Отладка процессов
- 17/10/2010 19:25 - Управление заданиями
- 17/10/2010 12:22 - Сеансы
- 14/10/2010 16:15 - Группы процессов и сеансы
- 12/10/2010 02:42 - Доставка сигнала
- 11/10/2010 07:30 - Отправка сигнала