SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux 历史上最杰出的新安全子系统。NSA 是在 Linux 社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
SElinux 的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。所以它不是网络防火墙或 ACL 的替代品,在用途上也不重复。
使用 getenforce
命令可获取当前 SELinux 运行状态,可能返回结果有三种:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。
1 | getenforce |
使用 setenforce
命令可以立刻改变 SELinux 运行状态,在 Enforcing 和 Permissive 之间切换,结果会一直保持至关机。一个典型的用途是看看到底是不是 SELinux 导致某个服务或者程序无法运行。若是在 setenforce 0 之后服务或者程序依然无法运行,那么就可以肯定不是 SELinux 导致的。
1 | setenforce [ Enforcing | Permissive | 1 | 0 ] |
若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux
实现。注意当从 Disabled 切换到 Permissive 或者 Enforcing 模式后需要重启计算机。
SELinux 运行策略可在配置文件 /etc/sysconfig/selinux
进行配置 ,文件中还包含了 SELinux 运行策略的信息,通过改变变量 SELINUXTYPE 的值实现,该值有两种可能:targeted
代表仅针对预制的几种网络服务和访问请求使用 SELinux 保护,strict
代表所有网络服务和访问请求都要经过 SELinux