Redhat:如何用SELinux创build新的angular色?

我可以弄清楚如何将SELinux用户映射到现有angular色,但是如何创build新angular色? 我正在为我的盒子创build一个受限制的pipe理员angular色。

除非你想重写整个refpolicy , 否则我觉得没有什么用处。 请注意,在创build它之后,您需要为angular色应该能够使用的每个模块创build自定义策略规则。

我给用户一个受限的pipe理员angular色的想法是通过以下方式实现的:

  1. 将他/她映射到guest_u ,这是一个非常有限(并且已经存在)的SELinux用户。
  2. 创build基于angular色的访问控制(RBAC)规则以及sudo规则,以允许特定人员在特定的SELinuxangular色和types下在特定的计算机上运行特定的命令。
  3. (当然,这是一个真正受限制的环境的限制版本,您需要添加,例如,正确configuration的rbash ,有限的PATH ,2FA身份validation,适当的授权等)

这里的关键是能够授予非特权guest_u用户运行提升特权命令的能力, 而不必离开他/她的受限SELinux用户映射

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

 Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Tag_Spec* Cmnd 

SELinux_Spec在支持SELinux的系统上,sudoers条目可以select性地具有与命令关联的SELinuxangular色和/或types。 如果使用该命令指定angular色或types,它将覆盖sudoers中指定的任何默认值。 但是,在命令行中指定的angular色或types将取代sudoers中的值。

要检查sudo SELinux支持,请运行:

 # ldd $(which sudo) | grep selinux 

在RHEL上, sudo默认启用SELinux支持。

在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文件,然后调整它适合你。 还请注意,生成器默认情况下将允许域插入到策略中。 因此,一旦您对创build的策略感到满意 – 您需要删除许可域名,使用make -f /usr/share/selinux/devel/Makefile重新编译策略,然后closures