我想阻止所有用户(包括 root)通过 SELinux 或任何其他 Linux 工具在特定目标(例如 /tmp)下安装任何内容,这可能吗?又该如何做呢?
关于拟议的副本: 如何拒绝安装权限?——这不是我想要的。
首先,在谈论 root 用户时,它完全忽略了 SELinux。其次,它谈到删除“安装权限”。这不是我想要实现的目标。实际上,我更多地谈论“拒绝文件夹权限”而不是安装权限。最接近我正在尝试的是神话还是现实:SELinux 可以限制 root 用户吗?它只是不讨论文件夹访问,特别是拒绝“安装”到该文件夹。
如果我选择一个可能的解决方案而不是一个问题,我会问:“是否有 SELinux 域来限制安装?”
答案1
在启用 SELinux 的系统上,每个对象(进程、文件等)都有一个安全标签。 SELinux 策略包含描述这些标签允许的操作的规则。默认策略相当复杂和广泛。配置策略可能已经足以防止安装在大多数位置(基于标签)。
该策略不对不受限制的用户施加限制。此外 allow_mount_anyfile
布尔值控制mount
命令是否可以使用(几乎)任何文件作为安装点。使用受限用户将对用户访问系统的方式设置许多限制。 SELinux基于角色的访问控制 (RBAC)将受限用户置于受限角色中。角色限制角色允许哪些域(进程安全标签)。此外,受限用户user_r
无法切换到其他角色。
我们可以检查已安装的策略,以确定具有受限角色的用户是否可以使用标记的文件/目录作为安装点(直接或通过滥用另一个允许的域)。
首先,检查user_r
可以使用以下命令转换到哪些域seinfo
:
seinfo -r user_t -x
SELinux 策略语言有mounton
允许域使用目标文件/目录作为安装点的权限。要查询已安装的策略以查找允许域使用目标对象作为挂载点:
sesearch --allow -t <target file/directory type> -p mounton
如果域中没有user_r
允许的规则,则 中的用户user_r
无法使用目标作为安装点(即使他们是 中的 root user_r
)。此外,还应验证不存在可用于规避该策略的relabelfrom
(重新标记)或权限。unlink
限制管理员(root 中的sysadm_r
)并非易事。它需要具有新自定义类型的策略模块和/或自定义基本策略,可能sysadm_t
具有前面提到的权限。自定义策略需要具有仅允许的域可访问的类型。此外,策略需要拒绝任何可能允许规避策略的行为,从而导致 root 用户比 root 用户更接近受限用户。