第 8 章 编写自定义 SELinux 策略
要运行受 SELinux 约束的应用程序,您必须编写和使用自定义策略。
8.1. 自定义 SELinux 策略和相关工具
SELinux 安全策略是 SELinux 规则的集合。策略是 SELinux 的核心组件,它由 SELinux 用户空间工具载入内核。内核强制使用 SELinux 策略来评估系统中的访问请求。默认情况下,SELinux 拒绝所有请求,但与载入策略中指定的规则对应的请求除外。
每个 SELinux 策略规则都描述了进程和系统资源间的交互:
ALLOW apache_process apache_log:FILE READ;
您可以按如下所示读取此示例规则:Apache 进程可以读取其日志文件。在此规则中,apache_process
和 apache_log
是 labels。SELinux 安全策略为进程分配标签并定义与系统资源的关系。这样,策略可将操作系统实体映射到 SELinux 层。
SELinux 标签作为文件系统的扩展属性保存,如 ext2
。您可以使用 getfattr
实用程序或 ls -Z
命令列出它们,例如:
$ ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd
其中 system_u
是 SELinux 用户,object_r
是 SELinux 角色的示例,passwd_file_t
是 SELinux 域。
selinux-policy
软件包提供的默认 SELinux 策略包含作为 Red Hat Enterprise Linux 8 一部分的应用程序和守护进程的规则,由其存储库中的软件包提供。没有在此发布策略中描述的应用程序不受 SELinux 的约束。要更改它,您必须使用包含额外定义和规则的 policy 模块来修改策略。
在 Red Hat Enterprise Linux 8 中,您可以查询已安装的 SELinux 策略,并使用 sepolicy
工具生成新策略模块。sepolicy
生成的脚本以及 policy 模块始终包含一个使用 restorecon
实用程序的命令。这个工具是修复文件系统中所选部分问题的基本工具。
其他资源
-
您系统上的
sepolicy (8)
和getfattr (1)
手册页 - 快速编写自定义 SELinux 策略 知识库文章