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

Redhat: Как создать новую роль с помощью SELinux?

Я могу понять, как сопоставить пользователя SELinux с существующей ролью, но как мне создать новые роли? Я хочу создать ограниченную роль администратора для своего ящика.

Используйте sepolicy из пакета policycoreutils-devel в вашем дистрибутиве RedHat. Чтобы добиться того, о чем вы просили, вам нужно будет использовать следующее:

sepolicy generate --confined_admin -n NAME [-a ADMIN_DOMAIN] [-u  USER]

Это сгенерирует политику, которую вы можете скомпилировать (make -f /usr/share/selinux/devel/Makefile) в модуль, который можно установить с помощью semodule -i, но сначала проверьте полученный файл .te и настройте его по своему усмотрению. Также обратите внимание, что генератор по умолчанию вставляет разрешающий домен в политику. Поэтому, как только вы довольны созданной политикой - вам нужно удалить разрешающий домен, перекомпилировать политику с make -f /usr/share/selinux/devel/Makefile и вперед :)

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

Моя идея предоставить пользователю ограниченную роль администратора реализована:

  1. сопоставление его / ее с guest_u, это строго ограниченный (и уже существующий) пользователь SELinux.
  2. создание правил управления доступом на основе ролей (RBAC) в сочетании с sudo правила, позволяющие конкретным людям запускать определенные команды на определенных машинах с определенной ролью и типом SELinux.
  3. (Конечно, это ограниченная версия того, как выглядит действительно замкнутая среда, вам нужно будет добавить, например, правильно настроенный rbash, ограниченный PATH, 2FA аутентификация, правильная авторизация, ...)

Ключевым моментом здесь является возможность предоставления непривилегированных guest_u пользователь может запускать команду с повышенными привилегиями никогда не покидая его / ее ограниченное сопоставление пользователей SELinux.

Проверить sudoers(5) manpage для получения подробной информации.

Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd

SELinux_Spec В системах с поддержкой SELinux записи sudoers могут дополнительно иметь роль и / или тип SELinux, связанные с командой. Если роль или тип указаны с помощью команды, они переопределят любые значения по умолчанию, указанные в sudoers. Однако роль или тип, указанные в командной строке, заменят значения в sudoers.

Чтобы проверить поддержку SELinux в sudo, бегать:

# ldd $(which sudo) | grep selinux

На RHEL, sudo по умолчанию включена поддержка SELinux.