Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #91, ИЮЛЬ 2006 г.

Тотальный контроль над пингвином

Денис Колисниченко

Хакер, номер #091, стр. 091-112-2


Перейди в каталог /etc/selinux. Здесь ты найдешь файл config, управляющий настройками самой SELinux, а также каталог targeted, в котором будут находиться конфигурационные файлы политики targeted. В нем будут три подкаталога: contexts, policy, users (контексты, политика, пользователи), а также файл booleans, в котором установлены некоторые булевые (логические) параметры. Вообще, этот файл руками трогать не нужно - посмотрели и забыли. Во всяком случае, на данном этапе. Итак, что же находится в каталогах contexts, policy и users? Чтобы получить ответ на этот вопрос, нужно обратиться к скучной теории.

Скучная теория

Начнем с базового понятия - понятия сущности. Сущность (identity) формирует часть контекста безопасности, задающего домены, в которые можно войти. То есть сущность определяет, что можно сделать. Не нужно путать сущность с идентификатором пользователя (UID). Они параллельно существуют в системе, но их смысл абсолютно разный. Обычно сущность представляется в системе так же, как и имя пользователя. Если в системе есть пользователь den и есть сущность den, выполнение команды su не изменяет сущности SELinux. Предположим, у нас есть пользователь den. Зарегистрируемся под ним и выполним команду id (это команда SELinux). Вывод:

context=den:user_r:user_t

Теперь введем команду su, наберем пароль root и снова введем команду id:

context=den:user_r:user_t

Мы получили тот же самый вывод. Как видишь, контекст остался прежним и не изменился на контекст пользователя root. Правда, есть одно «но». Если сущности den разрешен доступ к роли sysadm_r (сейчас роль — user_r) и пользователь выполнит команду «newrole -r sysadm_r» (изменить свою роль), а потом снова наберет id, то получит вывод:

context=den:sysadm_r:sysadm_t

Сущность осталось такой же, но роль и домен (второе и третье поле) изменились. Сущность определяет, какие роли и домены могут быть использованы.

Домен (domain) предоставляет список операций, которые может выполнить процесс по разным типам, точно определяет его привилегии. Примеры доменов: sysadm_t - домен администратора системы, user_t - домен для непривилегированных пользователей. Процесс init выполняется в домене init_t, а named - в named_t.

Тип (type) задается для объекта и определяет доступ к этому объекту. Тип - это то же самое, что и домен, но если домен относится к процессам, то тип - к файлам, каталогам, сокетам и т.п.

Роль (role) определяет список доменов, которые могут быть использованы. Домены, разрешенные для пользовательской роли, определяются в файлах политики. Если у роли нет доступа к домену, то при попытке выполнения действия с доменом, доступ будет запрещен. Лучше всего это продемонстрировать на примере: если тебе нужно разрешить непривилегированным пользователям (домен user_t) выполнить команду passwd, то в конфигурационном файле нужно прописать:

Назад на стр. 091-112-1  Содержание  Вперед на стр. 091-112-3