Назад | Перейти на главную страницу

Журнал / аудит всего, что разрешено SELinux

Я профилирую какое-то проприетарное программное обеспечение, чтобы создать набор требований к разрешениям и политик SELinux, которые позволят ему установить и запустить в Oracle Linux (или любой производной от RHEL).

Я запускаю SELinux в разрешающем режиме, я запустил semodule -DB, чтобы отключить «dontaudit», и я просматриваю /var/log/audit/audit.log, чтобы увидеть результаты.

Однако я также хотел бы видеть ВСЕ, что разрешено (не только отрицания или аудитлоу), которых, судя по этому, кажется большинство:

[root@aw-selinuxtest ~]# seinfo --stats

Statistics for policy file: /etc/selinux/targeted/policy/policy.24
Policy Version & Type: v.24 (binary, mls)

   Classes:            81    Permissions:       237
   Sensitivities:       1    Categories:       1024
   Types:            3852    Attributes:        291
   Users:               9    Roles:              12
   Booleans:          228    Cond. Expr.:       268
   Allow:          311381    Neverallow:          0
   Auditallow:        133    Dontaudit:           0
   Type_trans:      38576    Type_change:        38
   Type_member:        48    Role allow:         19
   Role_trans:        368    Range_trans:      5601
   Constraints:        90    Validatetrans:       0
   Initial SIDs:       27    Fs_use:             24
   Genfscon:           84    Portcon:           471
   Netifcon:            0    Nodecon:             0
   Permissives:        91    Polcap:              2

Кто-нибудь знает как это сделать? Я пока не могу найти ответ.

В отличие от обычной практики, установка SELinux на permissive режим и запись всех отказов AVC для разработки модуля политики может привести к тому, что в такую ​​политику будет включен неправильный набор разрешений.

Примером этого может быть следующее: предположим, что для нормальной работы этой проприетарной программы требуется переход домена, в разрешающем режиме переход не происходит, и похоже, что исходный домен требует всех разрешений, записанных как отказы AVC (Поваренная книга SELinux Свена Вермёлена содержит несколько ссылок на эту потенциальную проблему).

Лучшим подходом к созданию модуля политики для проприетарного программного обеспечения было бы в первую очередь поддерживать SELinux в принудительном режиме, чтобы гарантировать наименьшая привилегия возможно предоставляется.

Далее следовало бы изучить программное обеспечение как в Интернете (есть ли у него документация?), Так и в автономном режиме (ss, strace, ipcs, ...) для детального определения его архитектурного решения, а именно, но не ограничиваясь:

  • файлы, которые также следует разделить на подгруппы (конфигурация, транзакции, журналы, ...)

  • процессы, службы (есть ли в программе сценарий systemd / upstart / init?)

  • подключение к сети (входящий и исходящий трафик, порты, ...)

  • пользователи, группы

Имея всю эту информацию под рукой, вы сможете начать разработку политики для этого программного обеспечения.

Вам потребуется:

  • создать файл контекстов файла, определяющий контекст безопасности всех задействованных файлов

  • создайте файл интерфейсов, определяющий ваш домен с точки зрения всех взаимодействий между файлами, процессами, портами, пользователями, переходами между доменами, ...

  • создать файл принудительного применения типа, описывающий, каким пользователям предоставлен доступ к указанному выше домену, и фактические правила

Скомпилируйте и загрузите, проверьте отказы AVC, отладьте и улучшите свою политику. Промыть и повторить.

Последняя цитата из упомянутой выше книги:

Некоторым разработчикам политик нравится запускать разрешающий режим приложений (либо запускать всю систему в разрешающем режиме, либо отмечать этот конкретный домен как разрешающий домен), регистрировать все выполненные доступы (через отказы AVC) и улучшать политику на основе этой информации. Хотя это может обеспечить более быструю работу политики, эти разработчики также рискуют добавить к политике слишком много привилегий, что очень сложно оспорить и изменить позже. Вместо этого мы позволяем SELinux предотвращать доступ и смотрим, как реагирует приложение. Основываясь на регистрации ошибок приложения или поведения приложения, а также на отклонениях AVC, обнаруженных в журналах, мы можем получить хорошее представление о том, какие привилегии действительно необходимы.