首页 > 编程笔记

SELinux是什么(超级详细)

前面学习了 firewalld 防火墙(猛击《Linux firewalld防火墙使用教程》一文详细了解),本节了解一下 SELinux 控制机制。

SELinux是什么

SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)开发的一种强制访问控制机制。它主要整合在 Linux 内核当中,是针对特定的进程与指定的文件资源进行权限控制的系统。主要是增强传统 Linux 操作系统的安全性,并解决传统 Linux 系统中自主访问控制(DAC)系统中的各种权限问题(如 root 权限过高等)。

注意,root 用户需要遵守 SELinux 的规则才能正确地访问系统资源。另外,root 用户可以修改 SELinux 的规则。也就是说用户既要符合系统的读、写、执行权限,又要符合 SELinux 的规则,才能正确地访问系统资源。

传统的 Linux 系统中,默认权限是对文件或目录的所有者、所属组和其他人的读、写和执行权限进行控制,这种控制方式称为自主访问控制(DAC)方式;而在 SELinux 中,采用的是强制访问控制(MAC)系统,也就是控制一个进程对具体文件系统上面的文件或目录是否拥有访问权限,而判断进程是否可以访问文件或目录的依据,取决于 SELinux 中设定的很多策略规则。

接下来分别介绍这两种控制方式:

1、自主访问控制系统(Discretionary Access Control,DAC)

DAC 是 Linux 的默认访问控制方式,也就是依据用户的身份和该身份对文件及目录的 rwx 权限来判断是否可以访问。

但使用该方式通常会遇到以下问题:

2、强制访问控制(Mandatory Access Control,MAC)

MAC 是通过 SELinux 的默认策略规则来控制特定的进程对系统的文件资源的访问。也就是说,即使你是 root 用户,但是当你访问文件资源时,如果使用了错误的进程,那么也是不能访问的。

SELinux 的强制访问控制并不会完全取代自主访问控制。对于 Linux 系统的安全来说,强制访问控制是一个额外的安全层,当使用 SELinux 时,自主访问控制仍然被使用,且会首先被使用,如果允许访问,则再使用 SELinux 策略;反之,如果自主访问控制规则拒绝访问,则就不需要使用 SELinux 策略。

SELinux 的作用如下:
  1. SELinux 使用被认为是最强大的访问控制方式,即MAC控制方式。
  2. SELinux 赋予了用户或进程最小的访问权限。也就是说,每个用户或进程仅被赋予了完成相关任务所必须的一组有限的权限。通过赋予最小访问权限,可以防止对其他用户或进程产生不利的影响。
  3. SELinux 管理过程中,每个进程都有自己的运行区域,各个进程只运行在自己的区域内,无法访问其他进程和文件,除非被授予了特殊权限。

SELinux的3种工作模式

SELinux 提供了 3 种工作模式,分别是 Disabled 工作模式、Permissive 工作模式和 Enforcing 工作模式。它们的具体介绍如下:

1) Disabled工作模式(关闭模式)
在 Disable 模式中,SELinux 被关闭,使用 DAC 访问控制方式。该模式对于那些不需要增强安全性的环境来说是非常有用的。

注意,在禁用 SELinux 之前,需要考虑一下是否可能会在系统上再次使用SELinux,如果决定以后将其设置为Enforcing或Permissive,那么当下次重启系统时,系统将会通过一个自动SELinux文件重新进行标记。

关闭 SELinux 的方式,只需要编辑配置文件 /etc/seLinux/config,并将文本中“SELINUX=”更改为“SELINUX=disabled”即可,重新启动系统之后,SELinux 就被禁用了。


2) Permissive工作模式(宽容模式)
在 Permissive 模式中,SELinux 被启用,但安全策略规则并没有被强制执行。当安全策略规则应该拒绝访问时,访问仍然被允许。这时会向日志文件发送一条该访问应该被拒绝的消息。

SELinux Permissive 模式主要用于审核当前的 SELinux 策略规则;它还能用于测试新应用程序,将 SELinux 策略规则应用到程序时会有什么效果;以及用于解决某一特定服务或应用程序在 SELinux 下不再正常工作的故障。

3) Enforcing工作模式(强制模式)。
在 Enforcing 模式中,SELinux 被启动,并强制执行所有的安全策略规则。

优秀文章