SELinux是什么

SELinux,Security Enhanced Linux 的缩写,也就是安全强化的 Linux,是由美国国家安全局(NSA)联合其他安全机构(比如 SCC 公司)共同开发的,旨在增强传统 Linux 操作系统的安全性,解决传统 Linux 系统中自主访问控制(DAC)系统中的各种权限问题(如 root 权限过高等) SELinux Wiki SELinux 项目在 2000 年以 GPL 协议的形式开源,Red Hat 在其 Linux 发行版本中包括了 SELinux,(部署在 Linux 上用于增强系统安全的功能模块) ,基本上所有的 Linux 内核 2.6 以上版本,都集成了 SELinux 功能。

SELinux的作用

  • 传统的 Linux 系统中,默认权限是对文件或目录的所有者、所属组和其他人的读、写和执行权限进行控制,这种控制方式称为自主访问控制(DAC)方式
  • 在 SELinux 中,采用的是强制访问控制(MAC)系统,即控制一个进程对具体文件系统上面的文件或目录是否拥有访问权限,而判断进程是否可以访问文件或目录的依据,取决于 SELinux 中设定的很多策略规则。
自主访问控制系统(Discretionary Access Control)
- Linux 的默认访问控制方式 
- 依据用户的身份和该身份对文件及目录的 rwx 权限来判断是否可以访问
- root权限不合理分配易导致严重后果
强制访问控制(Mandatory Access Control)
- 默认已经集成or安装SELinux 
- root 用户如果进程不对,也无法访问
- 进程是否可以访问文件或目录的依据,取决于 SELinux 中设定的很多策略规则

安装SELinux

yum -y install setroubleshoot
yum -y install setools-console

SELinux 3种工作模式

Disable[关闭]工作模式

如果SELinux 被关闭(开启Disable 模式),就使用传统的 Linux 系统默认的自主访问控制(DAC)方式,不需要增强安全性的环境来说,该模式是很好用的。

如何关闭呢: sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config 编辑配置文件 /etc/selinux/config,把 SELINUX= 更改为 SELINUX=disabled ,然后重启系统,SELinux 就被禁用了。

Permissive[宽容]工作模式

在 Permissive 模式中,安全策略规则并没有被强制执行。当安全策略规则应该拒绝访问时,访问仍然被允许。然而,此时会向日志文件发送一条消息,表示该访问应该被拒绝。

SELinux Permissive 模式主要用于以下几种情况:

  • 审核当前的 SELinux 策略规则;
  • 测试新应用程序,看看将 SELinux 策略规则应用到这些程序时会有什么效果;
  • 解决某一特定服务或应用程序在 SELinux 下不再正常工作的故障。

Enforcing[强制]模式

Enforcing 模式, SELinux 被启动,并强制执行所有的安全策略规则。

SELinux 3种工作模式切换

#查询SELinux的运行模式
getenforce

setenforce 切换模式

#enforcing 和 permissive 两种模式之间进行切换
setenforce 0 #切换成宽容模式
setenforce 1 #切换成强制模式

除可以查询 SELinux 的运行模式之外,也可以修改 SELinux 的运行模式,即使用 setenforce 命令。不过需要注意,setenforce 命令只能让 SELinux 在 enforcing 和 permissive 两种模式之间进行切换。如果从启动切换到关闭,或从关闭切换到启动,则只能修改配置文件,setenforce 命令就无能为力了。

SELinux 的运行模式的开启和关闭

setenforce 命令只能切换enforcing 和 permissive 两种模式,如果启动和关闭的话需要修改配置文件。

关闭 SELinux sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config 编辑配置文件 /etc/selinux/config,把 SELINUX= 更改为 SELINUX=disabled ,然后重启系统,SELinux 就被禁用了。