Dan Walsh не рекомендует - "audit2allow -M"

Dan продолжает рассказывать о тонкостях настройки SELinux.

Можно выделить несколько уровней для пользователей SELinux. В самом низу, конечно, уровень "волосатый дикарь-троглодит" - это тот, кто всерьез использует дистрибутив без SELinux, либо отключает его. Потом идет "полуграмотный варвар" - тот, кто переводит в permissive. Затем средневековый крестоносец - тот, кто осилил cat /var/log/messages | audit2allow -M myrule && semodule -i myrule.pp, и вот только потом начинается Великая индустриальная революция. Как раз встать на путь к индустриальной революции и помогает нам Dan.

В своей заметке Dan вновь рассматривает типичную ситуацию - SELinux блокирует процессу доступ к файлу. Эта задача имеет три варианта решения:

  1. Изменить метку SELinux у файла.
  2. Выставить с помощью setsebool флаг для процесса, если этот флаг есть в правилах.
  3. Воспользоваться приведенным выше однострочником с audit2allow.


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

Проблема с трюком audit2allow состоит в том, что мы разрешаем некоему процессу доступ к файлам, маркированным базовыми метками SELinux, например etc_t или usr_t,. А это значит, что взломанный процесс, имеющий доступ к таким файлам, может воздействовать на другие процессы, которым нужно читать данные из /etc или запускать что-то из /usr.

В Fedora и RHEL7 была добавлена возможность просматривать списки базовых типов. Например, с помощью команды seinfo -abase_ro_file_type -x и seinfo -abase_file_type -x (утилита из пакета setools-console). Если вы используете audit2allow, чтобы позволить процессу иметь доступ к файл/файдам, маркированным одним из этих типов, то скорее всего вы что-то делаете не то.


Использовал audit2allow, и сначала всё было хорошо.


В данном случае лучше использовать первые два варианта решения, например сменить тип файла/файлов. Довольно трудный вопрос, это то, на какой тип поменять то? Были добавлены ряд новых типов, которые перечисляются, например в man httpd_selinux. Так же был разработан новый графический интерфейс, sepolicy gui.

Конечно, Dan всегда готов выслушать любые конструктивные предложения, как по добавлению новых типов, так и по модификации существующих. У него богатый опыт оптимизации SELinux для конкретного поля задач. Например, совсем недавно он занимался оптимизацией и созданием правил SELinux для Docker, о чем вкратце рассказал в своем интервью.

И напоследок хотелось бы рассказать об интересном выступлении. Успех SELinux на фоне конкурирующих решений, закономерно привел к его включению в Android, о чем мы, разумеется, с радостью сообщали. О том, как идут дела за последний год рассказал на Linux Security Summit 2014 инженер NSA, Stephen Smalley.


Типичный американский ФСБшник, Stephen Smalley