Redhat:如何使用 SELinux 创建新角色?

Redhat:如何使用 SELinux 创建新角色?

我可以弄清楚如何将 SELinux 用户映射到现有角色,但如何创建新角色?我想为我的盒子创建一个受限制的管理员角色。

答案1

除非你要重写几乎整个 refpolicy,我认为新角色毫无用处。请注意,创建角色后,您需要为角色创建自定义策略规则每个模块该角色应该能够使用。

我赋予用户受限管理员角色的想法是通过以下方式实现的:

  1. 将他/她映射到guest_u,它是一个受到严格限制的(并且已经存在的)SELinux 用户。
  2. 创建基于角色的访问控制 (RBAC) 规则,并结合sudo规则允许特定人员在特定 SELinux 角色和类型下在特定机器中运行特定命令。
  3. (当然,这是一个真正受限环境的有限版本,您需要添加例如正确配置的rbash、有限的PATH、2FA 身份验证、适当的授权......)

这里的关键点是授予非特权guest_u用户运行提升权限命令的能力无需离开其受限的 SELinux 用户映射

有关详细信息,请查看sudoers(5)手册页。

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 支持。

答案2

使用 RedHat 发行版上的 policycoreutils-devel 包中的 sepolicy。要实现您的要求,您需要使用以下内容:

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开始了 :)

相关内容