Dan Walsh не рекомендует - "audit2allow -M"
Опубликовано 09.9.2014 14:29 пользователем Peter Lemenkov
Dan продолжает рассказывать о тонкостях настройки SELinux.
Можно выделить несколько уровней для пользователей SELinux. В самом низу, конечно, уровень "волосатый дикарь-троглодит" - это тот, кто всерьез использует дистрибутив без SELinux, либо отключает его. Потом идет "полуграмотный варвар" - тот, кто переводит в permissive. Затем средневековый крестоносец - тот, кто осилил cat /var/log/messages | audit2allow -M myrule && semodule -i myrule.pp, и вот только потом начинается Великая индустриальная революция. Как раз встать на путь к индустриальной революции и помогает нам Dan.
В своей заметке Dan вновь рассматривает типичную ситуацию - SELinux блокирует процессу доступ к файлу. Эта задача имеет три варианта решения:
Пользователи уровня средневекового крестоносца выбирают третий вариант, и, к сожалению, он наименее рекомендуемый. В 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
Можно выделить несколько уровней для пользователей SELinux. В самом низу, конечно, уровень "волосатый дикарь-троглодит" - это тот, кто всерьез использует дистрибутив без SELinux, либо отключает его. Потом идет "полуграмотный варвар" - тот, кто переводит в permissive. Затем средневековый крестоносец - тот, кто осилил cat /var/log/messages | audit2allow -M myrule && semodule -i myrule.pp, и вот только потом начинается Великая индустриальная революция. Как раз встать на путь к индустриальной революции и помогает нам Dan.
В своей заметке Dan вновь рассматривает типичную ситуацию - SELinux блокирует процессу доступ к файлу. Эта задача имеет три варианта решения:
- Изменить метку SELinux у файла.
- Выставить с помощью setsebool флаг для процесса, если этот флаг есть в правилах.
- Воспользоваться приведенным выше однострочником с 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