Linux--seLinux的概述
文章目录
- 前言
- 一、SELinux 概述与状态切换
- 1. SELinux 概述
- 1.1 基本定义与背景
- 1.1.1 信息安全评估标准参考
- 1.1.2 内核整合情况
- 1.2 核心作用
- 1.3 关键特点
- 1.3.1 MAC(Mandatory Access Control,强制性访问控制)
- 1.3.2 RBAC(Role Base Access Control,基于角色的访问控制)
- 1.3.3 TE(Type Enforcement,类型强制)
- 1.4 执行模式
- 1.5 工作原理
- 1.5.1 核心交互流程
- 1.5.2 相关软件包
- 1.5.3 配置文件位置
- 1.6 状态查看命令
- 1.7 配置文件编辑(启用 SELinux)
- 2. SELinux 状态切换
- 2.1 从强制模式(enforcing)切换为警告模式(permissive)
- 2.2 从警告模式(permissive)切换为强制模式(enforcing)
- 2.3 说明
- 总结
前言
SELinux(Security Enhanced Linux,安全性增强的 Linux)由美国国家安全局(NSA,National Security Agency)开发,构建于 Linux 内核之上,具备灵活的强制性访问控制结构。
一、SELinux 概述与状态切换
1. SELinux 概述
1.1 基本定义与背景
其核心目标是提升 Linux 系统安全性,提供强健的安全保障,可防御未知攻击,安全级别据称相当于信息安全评估标准中的 B1 级。
1.1.1 信息安全评估标准参考
信息安全评估标准分为 4 类(D、C、B、A)共 7 个级别,
从低到高依次为:D、C1、C2、B1、B2、B3、A。
1.1.2 内核整合情况
SELinux 已整合到 Linux 2.6 及以上版本的内核中,可通过 uname -r
命令查看当前系统内核版本,确认是否支持 SELinux。
1.2 核心作用
传统 Linux 系统未启用 SELinux 时,若服务器上的服务被黑客攻陷,服务器最高权限可能随之丢失;而启用 SELinux 后,即使服务被入侵,攻击者也仅能获取该服务本身的权限,无法获取服务器整体最高权限,实现“权限禁锢”。
举例:若 Apache 服务器(进程为 httpd)被入侵,攻击者仅能操作 httpd 服务相关资源,无法突破限制获取系统全局权限,保障系统核心安全。
1.3 关键特点
SELinux 主要通过以下三类机制实现安全控制,三者相互配合构建完整的访问控制体系:
1.3.1 MAC(Mandatory Access Control,强制性访问控制)
- 对系统资源的访问控制彻底化,涵盖所有文件、目录、端口的访问行为。
- 访问规则均由管理员预先设定,普通用户无权限修改或管理策略,确保规则严肃性与安全性。
1.3.2 RBAC(Role Base Access Control,基于角色的访问控制)
- 遵循“最小权限原则”,为用户分配特定角色(Role),用户仅拥有其角色对应的权限。
- 即使是 root 用户,若未处于
sysadm_r
角色中,也无法执行sysadm_t
类型的管理操作,避免超权限操作风险。
1.3.3 TE(Type Enforcement,类型强制)
- 对进程仅赋予最小运行权限,是 SELinux 中核心且关键的概念。
- 实现逻辑:为文件赋予
type
(标签类型),为进程赋予domain
(标签),通过策略规定“特定domain
标签的进程仅能访问特定type
标签的文件”。 - 举例:进程
vim
仅可读取type
标签为 T1 的文件(如a.txt
),无法读取type
标签为 T2 的文件(如b.txt
)。
1.4 执行模式
SELinux 包含三种执行模式,不同模式对应不同的安全管控强度,可根据场景灵活切换:
模式(Mode) | 中文名称 | 核心逻辑 |
---|---|---|
enforcing | 强制模式 | 严格遵循 SELinux 策略,只要策略不允许的操作,均无法执行,直接阻断非法行为 |
permissive | 警告模式 | 允许所有操作执行,但会将不符合策略的行为记录到日志中,适用于策略测试或问题排查 |
disabled | 关闭模式 | 完全禁用 SELinux,不进行任何访问控制检查,系统恢复为传统 Linux 安全机制 |
1.5 工作原理
1.5.1 核心交互流程
- 发起请求:Subject(进程)发起对 Object(文件、端口等资源)的操作请求(如读、写、执行),请求类型为 Permission(权限)。
- 策略校验:SELinux 读取 Security Policy Database(安全策略数据库)中的预设规则,判断该进程是否有权限对目标资源执行对应操作。
- 结果反馈:
- 若符合规则,反馈“Granted(允许)”,进程正常执行操作;
- 若不符合规则,反馈“Denied(拒绝)”,并生成 AVC(Access Vector Cache)警告信息记录到日志中。
1.5.2 相关软件包
SELinux 相关软件包默认已在系统中安装,可通过 rpm -qa | grep selinux
命令查看,常见包如下:
1.5.3 配置文件位置
SELinux 核心配置文件路径为:/etc/sysconfig/selinux
,可通过 ls /etc/sysconfig/selinux
命令确认文件存在性。
1.6 状态查看命令
通过 getenforce
命令可快速查看当前 SELinux 的运行状态,执行示例如下:
[root@benet63 ~]# getenforce
- 执行结果若为
Enforcing
,表示当前处于强制模式; - 若为
Permissive
,表示当前处于警告模式; - 若为
Disabled
,表示当前处于关闭模式。
1.7 配置文件编辑(启用 SELinux)
若需启用 SELinux,需编辑核心配置文件并重启系统,操作步骤如下:
-
执行编辑命令:
[root@benet63 ~]# vim /etc/sysconfig/selinux
-
在文件中修改
SELINUX
字段值为enforcing
(启用强制模式),如下:SELINUX=enforcing
-
注意事项:
- 启用 SELinux 后必须重启系统,配置才能生效;
- 初次开启 SELinux 时,系统会自动更新文件标签,该过程耗时较长,需耐心等待。
2. SELinux 状态切换
SELinux 状态切换分为“临时切换”(无需重启,重启后失效)和“永久切换”(需修改配置文件并重启,长期生效),以下为临时切换的具体操作(基于 root
用户执行):
2.1 从强制模式(enforcing)切换为警告模式(permissive)
- 执行切换命令:
[root@benet63 ~]# setenforce 0
- 验证切换结果:
若输出[root@benet63 ~]# getenforce
Permissive
,表示切换成功。
2.2 从警告模式(permissive)切换为强制模式(enforcing)
- 执行切换命令:
[root@benet63 ~]# setenforce 1
- 验证切换结果:
若输出[root@benet63 ~]# getenforce
Enforcing
,表示切换成功。
2.3 说明
setenforce
命令仅支持在“强制模式”与“警告模式”之间切换,无法直接切换到“关闭模式”;- 若需从“关闭模式”切换为其他模式,或实现状态的永久切换,需修改
/etc/sysconfig/selinux
配置文件并重启系统(参考 1.7 节操作)。
总结
selinux的简单理解就是:增强Linux系统安全性,通过三种核心模式(强制模式enforcing、警告模式permissive和关闭模式disable)来控制对系统资源的访问权限。