文章目录
- 前言
- 一、SELinux 概述
- 1.1 SELinux 简介
- 1.2 SELinux 特点
- 1.2.1 MAC(Mandatory Access Control)
- 1.2.2 RBAC(Role-Based Access Control)
- 1.2.3 TE(Type Enforcement)
- 1.3 SELinux 的执行模式
- 1.4 SELinux 工作原理
- 二、SELinux 状态切换
- 总结
前言
SELinux(Security-Enhanced Linux)是一种由美国国家安全局(NSA)开发的安全增强系统,集成于 Linux 内核中,旨在提供更强大的访问控制机制,显著提升系统的安全性。本文将对 SELinux 的基本概念、特点、执行模式及其状态切换方法进行系统梳理和介绍,帮助读者更好地理解和使用 SELinux。
一、SELinux 概述
1.1 SELinux 简介
SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)开发的内核级安全模块,采用灵活的强制访问控制机制,能够显著提升Linux系统的安全性。该系统提供强大的安全防护能力,可有效抵御未知威胁,其安全等级达到军事级B1标准(信息安全评估体系)。
信息安全评估标准共分为 4 类(D,C,B,A),7 个级别:D,C1,C2,B1,B2,B3,A。SELinux 已经整合到 2.6 及以上版本的 Kernel 中,可通过
uname -r
命令查看内核版本。
在没有 SELinux 保护的传统 Linux 系统中,若服务器被骇客攻陷,最高权限可能随之丧失。而有了 SELinux 的保护,即使服务被入侵,也仅限于该服务本身,整个服务器的最高权限仍然得以保持。
一句话概括 SELinux 的作用:增强 Linux 系统安全性。例如,若 Apache 服务器被入侵,仅会影响到 httpd 服务,系统整体权限仍保持正常。
1.2 SELinux 特点
1.2.1 MAC(Mandatory Access Control)
全面强化访问控制机制,对所有文件、目录和端口的访问权限实施策略化管理。这些访问策略由系统管理员统一配置,普通用户不具备修改权限。
1.2.2 RBAC(Role-Based Access Control)
对用户只赋予最小权限,将用户划分为不同角色(role)。即使拥有 root 权限,若未分配至 sysadm_r
角色,也无法执行 sysadm_t
相关的管理操作。
1.2.3 TE(Type Enforcement)
对进程只赋予最小运行权限。在 SELinux 安全机制中,类型强制(TE)机制发挥着关键作用,其实现方式是通过为文件分配type
类型标签,同时为进程分配domain
域标签。这种设计确保了特定域标签的进程只能访问与其匹配的文件资源类型,例如:
- 当进程 vim 被限制只能读取 T1 标签的文件时:
- a.txt 具有 T1 标签 → 可访问
- b.txt 具有 T2 标签 → 不可访问
1.3 SELinux 的执行模式
SELinux 有以下三种执行模式:
- enforcing:强制模式,只要 SELinux 不允许,操作就无法执行。
- permissive:警告模式,操作可以执行,但所有事件都会被记录。
- disabled:关闭 SELinux。
1.4 SELinux 工作原理
当进程(Subject)尝试执行操作时,需经过 SELinux 的检查。SELinux 会查询其策略数据库,根据规则判断是否允许执行该操作。
可通过以下命令查看 SELinux 相关软件包(默认已安装):
rpm -qa | grep selinux
配置文件位于 /etc/sysconfig/selinux
。可通过 getenforce
命令查看当前 SELinux 的运行状态。
getenforce
启用 SELinux 需编辑配置文件 /etc/sysconfig/selinux
,设置:
SELINUX=enforcing
初次启用 SELinux 后需重启系统,并更新文件标签,该过程可能耗时较长。
二、SELinux 状态切换
可通过以下命令在 enforcing 和 permissive 模式之间切换:
setenforce 0 # 从 enforcing 切换为 permissive
getenforce # 查看当前状态
setenforce 1 # 从 permissive 切换为 enforcing
getenforce # 查看当前状态
注意:从 disabled 状态启用 SELinux 需修改配置文件并重启系统。
总结
SELinux通过不同的执行模式来控制系统资源的访问权限。三种核心模式决定是否阻止违规行为和是否警告,并且是否记录在行为日志中。
- enforcing:阻止违规行为
- permissive:警告,并且是否记录在行为日志中
- disabled:关闭
SELinux 作为强制访问控制机制,显著提升了 Linux 系统的安全性。它通过 MAC、RBAC 和 TE 等多种机制,严格限制进程和用户的权限范围,有效防范权限扩散和未知威胁。理解 SELinux 的核心概念、运行模式及状态切换方法,是系统管理员必备的专业技能,也是构建安全稳定的 Linux 系统环境的重要基础。