在 红帽企业 Linux下,可以使用两种方法来配置 SELinux:使用 安全级别配置工具 (system-config-securitylevel) 或手动编辑配置文件 (/etc/sysconfig/selinux)。
/etc/sysconfig/selinux 是启动或中止 SELinux 的主要配置文件,也可以用来设定哪些政策需要在系统上被强制执行,以及如何强制执行它们。
备注
/etc/sysconfig/selinux 包含一个连接到实际的配置文件(/etc/selinux/config)的符号链接。
以下解释一整套可供配置使用的子选项:
-
SELINUX=enforcing|permissive|disabled — 在一个系统上定义 SELinux 最高级别(top-level)的状态。
-
enforcing — SELinux 安全政策被强制执行。
-
permissive — SELinux 系统输出警告信息,但不强制执行安全政策。
这可以被用来进行故障排除。在容许模式中,系统会记录更多的拒绝信息。这是因为一些主观项在容许模式中可以继续进行的动作在强制模式中会被拒绝。例如,当在容许模式中访问一个目录树时,访问每一级目录时都会产生 avc: denied 信息。而在强制模式中,SELinux 早就起初阶段被中止,以至于避免了其它拒绝信息的产生。
-
disabled — SELinux 被完全中止。SELinux 挂机程序就从内核中脱离,那么伪文件系统就脱离注册。
小诀窍
在 SELinux 中止期间所运行的动作可能会导致文件系统不再拥有正确的安全上下文,即由该政策定义的安全上下文。重新标记文件系统的最好方法就是创建标识文件 /.autorelabel 并且重新启动机器。这会使重新标识的工作在引导进程的早期进行,也就是在任何其它进程运行前进行。使用这个方法可以防止在错误的安全上下文中创建文件;或在错误的上下文中启动。
在启用 SELinux 来重新标识这个文件系统之前使用 fixfiles relabel 命令是可能的。但是,这个方法并不是好方法,因为在此进程完成后,有些进程仍然有可能在错误的安全上下文中潜在运行,而这些进程也可能在错误的安全上下文中创建文件。
备注
在每个配置行最后添加不必要的空格,或在文件的最后添加额外的行都可能会导致无法预测的行为发生。为了保险,请删除不必要的空格。
-
-
SELINUXTYPE=targeted|strict — 指定哪个政策 SELinux 应该被强制执行。
-
targeted — 只有选定的网络守护进程会得到保护。
重要信息
在默认选定的政策下,以下守护进程得到保护:dhcpd, httpd (apache.te)、named、nscd、ntpd、portmap、snmpd、squid 和 syslogd。系统的其它守护进程在 unconfined_t 域中运行。这个域允许其安全上下文中的主观项和客观项使用标准的 Linux 安全系统来运作。
这些守护进程的政策文件位于 /etc/selinux/targeted/src/policy/domains/program 文件中。这些文件可能会在更新的 红帽企业 Linux 版本发行时有所改变。
这些守护进程的安全政策的强制执行可以通过使用由 安全级别配置工具 (system-config-securitylevel)控制的布尔值被开启或关闭。
把一个选定的守护进程布尔值设为 0(零)会中止对这个守护进程的安全政策变迁。例如,您可以把 dhcpd_disable_trans 设定为 0 来防止 init 把 dhcpd 从 unconfined_t 域转换到 dhcpd.te 中指定的域。
使用 getsebool -a 命令列出所有 SELinux 布尔值。以下是使用 setsebool 命令来设定 SELinux 布尔值的一个实例。-P 选项使这一改变成为永久效果。如果没有这个选项,布尔值会在重新启动时被重新设定为 1。
setsebool -P dhcpd_disable_trans=0
-
strict — 对所有守护进程进行完全的 SELinux 保护。安全上下文会为系统中的所有主客观项设定,并且每个动作都由安全政策强制服务器进行处理。
-
-
SETLOCALDEFS=0|1 — 控制本地定义(用户和布尔值)如何被设定。如果这个值设定为 1,这些定义被 来自 /etc/selinux/<policyname> 中文件的 load_policy 控制。如果这个值设定为 0,则由 semanage 控制。