当前位置: 首页 > news >正文

深入理解 SELinux:架构、概念与基本操作

目录

1. 什么是 SELinux?

SELinux 解决的问题

2. SELinux 架构与核心概念

目标策略架构

基本概念解析

上下文标签

策略规则

3. SELinux 操作模式

强制模式 (Enforcing)

宽容模式 (Permissive)

禁用模式 (Disabled)

4. SELinux 基本操作命令

查看当前模式

临时更改模式

查看 SELinux 上下文

启动时配置

持久化配置

5. SELinux 决策流程

总结


1. 什么是 SELinux?

安全增强型 Linux (SELinux) 是 Linux 系统的一项重要安全功能,它在传统的文件权限控制基础上提供了一个额外的安全层。与标准的用户、组和文件权限(自主访问控制 DAC)不同,SELinux 实现了强制访问控制 (MAC),这意味着安全策略适用于所有用户,无法通过自主配置来绕过。

SELinux 解决的问题

传统文件权限只能控制谁可以读取、写入或执行文件,但无法控制文件的使用方式。例如:

  • 具有写权限的用户可能使用不合适的编辑器修改结构化数据文件,导致数据损坏

  • 恶意用户可能利用应用程序漏洞访问非授权资源

SELinux 通过精细的访问控制解决了这些问题,即使应用程序本身存在安全漏洞,也能限制其破坏范围。

注:也能控制某一个进程能不能访问这个文件


2. SELinux 架构与核心概念

目标策略架构

SELinux 采用目标策略架构,特点包括:

  • 由应用开发人员定义应用相关策略

  • 策略声明了每个二进制文件、配置文件和数据的允许操作

  • 具有策略的应用在受限域中运行,没有策略的应用则不受限制运行

基本概念解析

上下文标签

每个资源(文件、进程、目录、端口)都有一个 SELinux 上下文标签,格式为:

user:role:type:level

在 RHEL 的默认目标策略中,主要使用 type 字段来定义规则,类型上下文通常以 _t 结尾。

策略规则

SELinux 策略是安全规则的集合,定义了进程如何访问资源。关键原则:

  • 默认拒绝所有访问

  • 必须有显式规则才能允许访问

  • 规则基于类型上下文匹配

示例场景:

  • Web 服务器进程:httpd_t 类型

  • Web 内容文件:httpd_sys_content_t 类型

  • 策略规则:允许 httpd_t 访问 httpd_sys_content_t

  • 结果:Web 服务器只能访问标记为 Web 内容的文件,无法访问 /tmp 目录(标记为 tmp_t),必须要进程的上下文和目标文件上下文一致才能访问


3. SELinux 操作模式

SELinux 有三种操作模式:

强制模式 (Enforcing)

  • SELinux 强制执行加载的策略

  • 违反策略的操作会被拒绝并记录

  • 红帽企业 Linux 中的默认模式

宽容模式 (Permissive)

  • SELinux 加载策略但不强制执行

  • 违反策略的操作会被记录但不会阻止

  • 用于测试和故障排除

禁用模式 (Disabled)

  • SELinux 完全关闭

  • 强烈不建议使用此模式

  • 在 RHEL 9+ 中,只能通过内核参数 selinux=0 禁用

重要提示:自 RHEL 9 起,在 /etc/selinux/config 中设置 SELINUX=disabled 会导致 SELinux 启动但不加载任何策略,从而拒绝所有操作。


4. SELinux 基本操作命令

查看当前模式

# 查看当前 SELinux 模式
getenforce# 示例输出
Enforcing

临时更改模式

# 切换到宽容模式
setenforce 0
# 或
setenforce Permissive# 切换回强制模式
setenforce 1
# 或
setenforce Enforcing

查看 SELinux 上下文

# 查看进程的 SELinux 上下文
ps -ZC httpd# 查看文件的 SELinux 上下文
ls -Z /var/www# 查看目录的 SELinux 上下文
ls -Zd /var/www/html

启动时配置

# 使用内核参数
# 宽容模式:enforcing=0
# 强制模式:enforcing=1
# 禁用 SELinux:selinux=0(不推荐)

持久化配置

编辑 /etc/selinux/config 文件:# 设置默认模式
SELINUX=enforcing
# 或
SELINUX=permissive

5. SELinux 决策流程

SELinux 的访问控制决策流程如下:

  1. 进程请求访问资源(如 Web 服务器写入文件)

  2. Linux 安全模块子系统 将决策转发给 SELinux

  3. SELinux 子系统 检查策略规则

  4. 上下文匹配:比较进程类型(如 httpd_t)和资源类型(如 httpd_sys_content_t

  5. 决策执行

    • 如果策略允许:操作继续进行

    • 如果策略拒绝:操作被阻止并记录


总结

SELinux 为 Linux 系统提供了强大的强制访问控制机制,通过类型强制策略和上下文标签,实现了细粒度的资源访问控制。虽然初始配置可能有些复杂,但一旦正确设置,它能显著提升系统的安全性,防止权限升级和横向移动攻击。

http://www.dtcms.com/a/577908.html

相关文章:

  • 用vs2010做网站论文深圳市专业制作网站公司
  • 国土资源局加强网站建设wordpress 栏目 伪静态化
  • XMAU7118_VC1:16通道PDM到I²S/TDM音频转换器产品介绍
  • 云手机 轻松畅玩云端游戏
  • 认证空间官方网站附子seo教程
  • 网络层协议 - ICMP
  • DINO系列粗读
  • Java设计模式精讲---03建造者模式
  • P3384 【模板】重链剖分/树链剖分
  • OpenCV(二十):位运算
  • 重组蛋白纯化标签科普:从His到SUMO、Avi的全面解析
  • 【QT第三章】常用控件1
  • 鱼台做网站多少钱wordpress 防黑
  • 南通网站建设排名公司网站怎么做图片放映效果
  • AI Agent:突破工作流局限,开启智能决策新时代
  • 自己动手写深度学习框架(神经网络的引入)
  • 西安专业网站建设服务好查询食品注册商标查询官网
  • ref对比reactive
  • 基于融智学双重形式化的汉字汉语数学建模方法
  • 手机wap网站多少钱wordpress页面简码
  • 嘉兴网嘉兴网站建设网址大全汽车之家官方网
  • 基于单片机的智能高温消毒与烘干系统设计
  • vue.js设计与实现(待续)
  • 2025 Vue UI 组件库选型
  • 网站内置字体法治网站的建设整改措施
  • 杭州高端网站设计南宁伯才网络建站如何
  • 面试题001
  • 【C#】NLog配置同时写入网络共享路径与本地路径日志
  • 用通俗易懂 + Android 开发实战的方式,详细讲解 Kotlin Flow 中的 retryWhen 操作符
  • Android 四大组件——BroadcastReceiver(广播)