06 января 2008

Basic about SELinux

En: Here is selinux(8) man page (from libselinux) translation to Russian with some comments.

Ru: Как я и обещал, приступаю к переводам man-страниц, входящих в пакет libselinux. Первая на очереди - selinux(8). Хотя то, что в ней написано, так или иначе уже попадало в этот блог (в частности, пост "SELinux. Максимальный уровень защиты – бесплатно"), а также обсуждалось в других статьях на русском языке, man selinux:

selinux(8) SELinux Command Line documentation selinux(8)

НАЗВАНИЕ
selinux - Linux с улучшенной безопасностью (NSA Security-Enhanced Linux, SELinux)

ОПИСАНИЕ
Linux с улучшенной безопасностью (NSA Security-Enhanced Linux, SELinux) является реализацией гибко настраиваемого мандатного контроля доступа для операционной системы Linux. Архитектура SELinux обеспечивает поддержку различных видов политик мандатного контроля доступа, включая основанные на Type Enforcement®, Ролевом контроле доступа (Role-Based Access Control) и Многоуровневой безопасности (Multi-Level Security). Подробная информация и техническая документация, посвященная SELinux доступна по ссылке http://www.nsa.gov/selinux.

В конфигурационном файле /etc/selinux/config указывается включена или выключена система SELinux, а в случае если включена, то в каком режиме функционирует: принудительном (enforcing) или разрешительном (permissive). Это можно определить путем присвоения переменной SELINUX одного из значений: disabled, permissive или enforcing. Значение disabled полностью отключает код SELinux в ядре и приложениях, оставляя систему работать без защиты, обеспечиваемой SELinux. Значение permissive включает SELinux, однако все операции, которые могли бы быть запрещены в политике, разрешаются. При этом они документируются. Опция enforcing также включает SELinux. При этом запреты и отрабатываются, и документируются. Разрешительный режим может привнести сообщения о запретах, которые не встречаются в принудительном режиме. Это связанно с тем, что в принудительном режиме будут предотвращены операции выполняемые после первого же запрета. Кроме того, некоторые приложения после запрета доступа начинают работать в режимах с меньшими привилегиями.

Конфигурационный файл /etc/selinux/config также определяет, какая политика будет активной. Хотя SELinux позволяет установить в системе несколько альтернативных политик, только одна из них может быть активной в каждый конкретный момент времени. В настоящий момент времени существует два вида политик: целевая (targeted) и строгая (strict). (*) Целевая политика спроектирована таким образом, что на большинство процессов не накладывается никаких ограничений, и только некоторые службы работают в выделенных доменах безопасности, описанных в политике. К примеру, пользователь будет работать в ничем не ограниченном домене, но в то же время демон named или apache будут функционировать в своих доменах, учитывающих операции, выполняемые каждым конкретным демоном. Строгая политика спроектирована для четкого разграничения всех процессов, которые, в свою очередь, разделяются на отдельные домены безопасности. В будущем предполагается создание других политик (например, политики с поддержкой многоуровневой системы безопасности). Вы можете задать политику, которую хотите использовать, при помощи переменной окружения SELINUXTYPE в файле /etc/selinux/config. Соответствующие каждой такой политике настройки должны располагаться в своих директориях /etc/selinux/SELINUXTYPE/.

Заданная политика SELinux в дальнейшем может настраиваться при помощи набора опций, указываемых при компиляции, и переключателей (booleans), устанавливаемых во время исполнения. Утилита system-config-securitylevel (**) позволяет настраивать эти переключатели и опции.

Для ряда доменов, защищенных при помощи SELinux, существуют man-страницы, поясняющие, как производить настройку соответствующей политики.

МЕТКИ ФАЙЛОВ
С каждым файлом, директорией и устройством ассоциирована метка/контекст безопасности. Контекст хранится в расширенных атрибутах файловой системы. С SELinux часто возникают проблемы, если эти метки отсутствуют на файловой системе. Такая ситуация может быть вызвана при загрузкt машины с ядром, не поддерживающим SELinux. Если вы видите сообщение об ошибке, содержащее file_t, то с большой долей вероятности можно сказать, что у вас возникли серьезные проблемы, связанные с метками файловой системы.

Наилучший способ обновить метки на файловой системе - создать файл-тригер /.autorelabel и перезагрузить систему. То же самое можно проделать при помощи утилиты system-config-securitylevel. Для обновления меток отдельных файлов можно воспользоваться утилитами restorcon и fixfiles.

АВТОРЫ
Эту страницу руководства написал Dan Walsh.
Перевод руководства - Андрей Маркелов, 2008 г.

СМОТРИ ТАКЖЕ (***)
booleans(8), setsebool(8), selinuxenabled(8), togglesebool(8), restorecon(8), setfiles(8), ftpd_selinux(8), named_selinux(8), rsync_selinux(8), httpd_selinux(8), nfs_selinux(8), samba_selinux(8), kerberos_selinux(8), nis_selinux(8), ypbind_selinux(8)

ФАЙЛЫ
/etc/selinux/config

dwalsh at redhat dotcom 29 Апр 2005 selinux(8)

Необходимые замечания к man-странице:
(*) Справедливо для старых версий. В дистрибутивах c Fedora Core 5 по Fedora 7 и RHEL 5 поставлялось три набора политик (targeted, strict и MLS). В последней версии - Fedora 8 - политики strict и targeted объединены. Таким образом, в настоящий момент времени существуют два вида политик: целевая (targeted) и политика с поддержкой многоуровневой системы безопасности (MLS).
(**) В последних версиях Fedora Core/Fedora, а также в RHEL 5 для этих целей используется новая GUI утилита system-config-selinux.
(***) Для всех упомянутых man-страниц существует перевод на русский язык.

3 комментария:

Andrey Markelov комментирует...

Поправил:
s/restorcon/restorecon (опечатка в англ. версии)
s/тригер/триггер
s/загрузкt/загрузке

Roman Sozinov комментирует...

Андрей, благодарю Вас за статьи, посвященные SELinux. Мне сейчас приходится знакомиться с данным "зверем", и Вы очень сильно помогли, сформировав первоначальный взгляд.
Хотелось бы узнать имели ли Вы "счастье" работать с Solaris Trusted Extensions (или Trusted Solaris). Если "да", то хотелось бы услышать от Вас какие-то соображения по поводу сравнения между SELinux и Solaris Trusted Extension.
Я немножко пробовал работать в системе Trusted Solaris 8 (в ИКС-ах), но это было давно и на уровне пользователя...

Andrey Markelov комментирует...

Спасибо за отзыв.
C Solaris Trusted Extensions не работал.
Адекватно сравнить не смогу.
Обратите внимание на http://www.press.redhat.com/2008/04/09/red-hat-welcomes-opensolaris-and-ubuntu-to-the-world-of-type-enforcement/