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

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 核心交互流程
  1. 发起请求:Subject(进程)发起对 Object(文件、端口等资源)的操作请求(如读、写、执行),请求类型为 Permission(权限)。
  2. 策略校验:SELinux 读取 Security Policy Database(安全策略数据库)中的预设规则,判断该进程是否有权限对目标资源执行对应操作。
  3. 结果反馈
    • 若符合规则,反馈“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,需编辑核心配置文件并重启系统,操作步骤如下:

  1. 执行编辑命令:

    [root@benet63 ~]# vim /etc/sysconfig/selinux
    

    在这里插入图片描述

  2. 在文件中修改 SELINUX 字段值为 enforcing(启用强制模式),如下:

    SELINUX=enforcing
    

    在这里插入图片描述

  3. 注意事项

    • 启用 SELinux 后必须重启系统,配置才能生效;
    • 初次开启 SELinux 时,系统会自动更新文件标签,该过程耗时较长,需耐心等待。

2. SELinux 状态切换

SELinux 状态切换分为“临时切换”(无需重启,重启后失效)和“永久切换”(需修改配置文件并重启,长期生效),以下为临时切换的具体操作(基于 root 用户执行):

2.1 从强制模式(enforcing)切换为警告模式(permissive)

  1. 执行切换命令:
    [root@benet63 ~]# setenforce 0
    
  2. 验证切换结果:
    [root@benet63 ~]# getenforce
    
    若输出 Permissive,表示切换成功。

2.2 从警告模式(permissive)切换为强制模式(enforcing)

  1. 执行切换命令:
    [root@benet63 ~]# setenforce 1
    
  2. 验证切换结果:
    [root@benet63 ~]# getenforce
    
    若输出 Enforcing,表示切换成功。

2.3 说明

  • setenforce 命令仅支持在“强制模式”与“警告模式”之间切换,无法直接切换到“关闭模式”;
  • 若需从“关闭模式”切换为其他模式,或实现状态的永久切换,需修改 /etc/sysconfig/selinux 配置文件并重启系统(参考 1.7 节操作)。

总结

selinux的简单理解就是:增强Linux系统安全性,通过三种核心模式(强制模式enforcing、警告模式permissive和关闭模式disable)来控制对系统资源的访问权限。

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

相关文章:

  • FRET、PLA、Co-IP和GST pull-down有何区别? 应该如何选择?
  • 原型模式系统开发中的原型分类全景:水平、垂直、抛弃式与演化式
  • nvm切换node版本之后报错,无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  • 嵌入式C语言进阶:结构体封装函数的艺术与实践
  • IUV5G专网排障(上)
  • 支持向量机(SVM)学习笔记
  • SOME/IP服务发现PRS_SOMEIPSD_00277的解析
  • 服务器数据恢复—热备盘上线失败如何恢复数据?
  • 【Android】webview强制Crash后再自恢复设计
  • 服务器初始化
  • 影响服务器托管费用的因素​
  • ROS2 Helloworld 入门——包含完整pdf手册
  • Linux驱动开发笔记(九)——内核定时器
  • CSS 优先级:公司组织架构模型
  • css3背景线性渐变:linear-gradient
  • 基于Python+MySQL实现物联网引论课程一个火警报警及应急处理系统
  • 面向 6G 网络的 LLM 赋能物联网:架构、挑战与解决方案
  • 相机激光安全等级和人眼安全
  • 第九届MathorCup高校数学建模挑战赛-D题:钢水“脱氧合金化”配料方案的优化
  • 五自由度磁悬浮轴承同频振动抑制:从机理拆解到传递函数验证的核心方案
  • 【图像算法 - 24】基于深度学习与 OpenCV 实现人员跌倒识别系统(目标检测方案 - 跌倒即目标)
  • Baumer高防护相机如何通过YoloV8深度学习模型实现形状检测器的使用(YOLOv8 Shape Detector)
  • 无人机航拍数据集|第32期 无人机采矿区作业目标检测YOLO数据集202张yolov11/yolov8/yolov5可训练
  • GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SPM
  • Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互
  • plantsimulation知识点 RGV小车前端与后端区别
  • 数字营销岗位需要具备的能力有哪些
  • 洛谷 P12332 题解
  • 图论入门与邻接表详解
  • 代码随想录Day62:图论(Floyd 算法精讲、A * 算法精讲、最短路算法总结、图论总结)