linux笔记(selinux)

news2024/11/13 6:36:37

一、概述

  1. 定义
    SELinux(Security - Enhanced Linux)是一种基于 Linux 内核的强制访问控制(MAC)安全机制。它为 Linux 系统提供了更细粒度的安全策略,增强了系统的安全性。
  2. 目的
    主要目的是限制进程对系统资源(如文件、目录、网络端口等)的访问权限,防止恶意软件、非法用户或错误配置导致的安全漏洞,即使应用程序或用户权限被非法提升,也能有效控制其访问范围。

二、工作模式

  1. 强制模式(Enforcing)
    • 在这种模式下,SELinux 会强制执行安全策略。如果违反了安全策略,相应的操作将被阻止,并在系统日志(如/var/log/messages)中记录相关的审计信息。这是生产环境中最常用的模式,能最大程度保障系统安全。
  2. 宽容模式(Permissive)
    • 在宽容模式下,SELinux 不阻止违反安全策略的操作,但会记录审计信息。这种模式常用于调试和测试新的安全策略,以便在不影响系统正常运行的情况下检查策略的正确性。
  3. 禁用模式(Disabled)
    • SELinux 完全不工作,系统没有任何 SELinux 相关的安全保护。不建议在生产环境中使用此模式,因为会使系统面临较大安全风险。

 

三、安全上下文(Security Context)

  1. 组成部分
    安全上下文一般由四个部分组成
    用户(user)、角色(role)、类型(type)和级别(level),格式为user:role:type:level
    • 用户(user):SELinux 用户,不是传统 Linux 用户,如system_uuser_u等。不同的 SELinux 用户有不同的访问权限。
    • 角色(role):定义了用户在 SELinux 中的角色,如system_ruser_r等。角色用于控制对不同类型资源的访问。
    • 类型(type):这是安全上下文的核心部分,决定了对象(如文件、目录、进程)的主要分类和访问规则。例如httpd_sys_content_t表示与 HTTP 服务器相关的内容类型。
    • 级别(level):用于多级安全策略,如s0s1等。不同的安全级别可能允许或禁止不同的访问操作。
  2. 查看安全上下文
    • 可以使用ls -Z命令查看文件和目录的安全上下文。例如,ls -Z /etc会显示/etc目录下文件和目录的安全上下文信息。对于进程,可以使用ps -eZ命令查看进程的安全上下文。

    3.过程

  • 解释:

    • 当主体(进程)访问目标(文件)时,首先和 SELinux 中定义好的策略进行匹配

    • 若符合定义的规则,且主体的安全上下文和目标的安全上下文匹配则允许访问文件

    • 若安全上下文比较失败,则拒绝访问,并通过 AVC(Access Vector Cache,访问向量缓存,主要用于记录所有和 SELinux 相关的访问统计信息)生成拒绝访问信息

    • 注意:最终是否可以访问到目标文件,还要匹配产生进程(主体)的用户是否对目标文件拥有合理的rwx权限

四、策略类型

  1. 目标策略(Targeted Policy)
    • 这是最常用的策略类型。在目标策略中,SELinux 只对特定类型的进程和资源进行保护,而不是对整个系统进行全面控制。例如,它通常会保护网络服务(如 Apache、Nginx、SSH 等)、数据库服务器等关键应用相关的进程和资源,减少了系统的复杂性和管理难度。
  2. 严格策略(Strict Policy)
    • 严格策略对整个系统实施全面的强制访问控制,包括所有的进程、文件、网络等。这种策略提供了最高级别的安全保障,但需要更复杂的配置和管理,因为它可能会影响系统中许多正常的操作,一般用于对安全要求极高的环境。

五、SELinux 相关命令

  1. getenforce
    • 用于查看当前 SELinux 的工作模式,输出结果为EnforcingPermissiveDisabled
  2. setenforce
    • 用于临时改变 SELinux 的工作模式。例如,setenforce 0将 SELinux 设置为宽容模式,setenforce 1将其设置为强制模式。此命令的修改在系统重启后失效。
  3. semanage
    • 这是一个功能强大的 SELinux 管理工具。例如:
      • semanage port -a -t http_port_t -p tcp 8080:将 TCP 端口 8080 添加到http_port_t类型,使得相关的 HTTP 服务可以使用该端口(假设安全策略允许)。
      • semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?":为/var/www/html目录及其下所有文件设置安全上下文类型为httpd_sys_content_t
  4. restorecon
    • 用于恢复文件或目录的默认安全上下文。例如,如果文件的安全上下文被意外修改,可以使用restorecon -Rv /var/www/html来恢复/var/www/html目录及其子目录下所有文件的安全上下文到默认值。

六、故障排除与日志分析

  1. auditd服务与日志
    • SELinux 的审计信息通常由auditd服务记录auditd服务的日志文件一般位于/var/log/audit/audit.log。当出现 SELinux 相关的访问拒绝问题时,可以通过分析此日志文件来查找原因。
  2. 常见问题解决步骤
    • 首先,查看/var/log/messages/var/log/audit/audit.log日志,确定是 SELinux 导致的问题(通常会有AVC(Access Vector Cache)拒绝信息)。
    • 然后,根据日志中的提示信息,确定是哪个进程、文件或端口受到了影响,以及违反了哪种安全策略。
    • 可以尝试使用setenforce 0临时关闭 SELinux(仅用于测试,不建议长期使用),如果问题消失,那么很可能是 SELinux 相关问题。
    • 通过seinfosesearch等工具进一步分析安全策略,或者使用semanage等命令调整相关的安全上下文和策略来解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2236579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter常用配置元件介绍总结之函数助手

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之函数助手 1.进入函数助手对话框2.常用函数的使用介绍2.1.RandomFromMultipleVars函数2.2.Random函数2.3.R…

Linux环境基础和基础开发工具使用

文章目录 一、yum软件管理器1、包管理器2、yum3、apt4、安装源 二、编辑器vim1、各种模式2、打开时直接让光标定位到指定号3、!加命令字符 三、命令模式1、i 进入插入模式2、**Shift :** 进入底行模式3、光标定位4、ZZ(大写)保存并退出vim5、…

如何使用Python管理环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 环境变量 📒📝 环境变量简介📝 Python 中的环境变量操作📝 获取环境变量📝 设置环境变量🔖 临时设置🔖 永久设置📝 删除环境变量📝 临时删除📝 永久删除📝 小结⚓️ 相关链接 ⚓️📖 介绍 📖 环境变量…

【国产MCU系列】-GD32F4通用GPIO操作

通用GPIO 文章目录 通用GPIO1、GD32F4的GPIO介绍2、GPIO的寄存器3、GPIO功能及配置3.1 GPIO固件库API介绍3.2 GPIO引脚配置为输出3.2 GPIO引脚配置为输入1、GD32F4的GPIO介绍 GD32F4最多可支持140个通用 I/O引脚( GPIO),分别为 PA0 ~ PA15 PB0 ~ PB15 PC0 ~ PC15 PD0 ~ PD1…

GitHub个人主页美化

效果展示 展示为静态效果,动态效果请查看我的GitHub页面 创建GitHub仓库 创建与GitHub用户名相同的仓库,当仓库名与用户名相同时,此仓库会被视作特殊仓库,其README.md(自述文件)会展示在GitHub个人主页…

【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0

目录 一、相关面试题 1. HTTP 与 HTTPS 有哪些区别? 2. HTTPS 的工作原理?(https 是怎么建立连接的) (1)ClientHello (2)SeverHello (3)客户端回应 &a…

视频播放相关的杂记

基于QT FFMPEG设计一款 RTMP协议推流、视频录制软件 实现的功能: (1)将摄像头视频流 麦克风音频流合并,并推到流媒体服务器 (2)将摄像头视频流 麦克风音频流保存到本地磁盘 基于QtFFMPEG设计一款RTM…

分组校验在Spring中的应用详解

目录 前言1. 什么是分组校验2. 分组校验的基本原理3. 分组校验的实现步骤3.1 定义分组接口3.2 在校验项中指定分组3.3 校验时指定要校验的分组3.4 默认分组和分组的继承 4. 分组校验的优势和适用场景4.1 优势4.2 适用场景 5. 常见问题与解决方案5.1 校验未生效5.2 无法识别默认…

交换机属性介绍-交换机持久化、交换机自动删除、备用交换机

交换机属性-持久化和自动删除 1、交换机常用属性2、交换机(Exchange)的持久化属性2.1、RabbitConfig配置类(关键代码)2.2、发送消息2.3、启动类2.4、application.yml配置文件2.5、pom.xml配置文件2.6、测试 3、交换机(Exchange)的自动删除属性3.1、Rabbi…

探索PyAV:Python中的多媒体处理利器

文章目录 探索PyAV:Python中的多媒体处理利器第一部分:背景介绍第二部分:PyAV是什么?第三部分:如何安装PyAV?第四部分:简单的库函数使用方法1. 打开文件2. 查看流3. 遍历帧4. 编码帧5. 关闭输出…

MySql中索引为什么用B+树,他有什么特点?时间复杂度是多少?能存多少数据?是不是只能三层?他与B-树有什么不同?还有其它的树你是是否知道?

平衡二叉树 平衡二叉树又被称为AVL树平衡二叉树是一颗空树或者它的左右两个子树的高度差的绝对值不超过1,并且左右子树也是平衡树非叶子节点值大于左子节点值而小于右子节点值非叶子节点最多拥有两个子节点 平衡二叉树的不足之处及时间复杂度 如果每次插入的数据都…

纯前端实现在线预览excel文件(插件: LuckyExcel、Luckysheet)

概述 在实际开发中,遇到需要在线预览各种文件的需求,最近遇到在线预览excel文件的需求,在此记录一下!本文主要功能实现,用于插件 LuckyExcel ,Luckysheet!废话不多说,上代码&#xf…

关于我的编程语言——C/C++——第七篇(深入4)

(叠甲:如有侵权请联系,内容都是自己学习的总结,一定不全面,仅当互相交流(轻点骂)我也只是站在巨人肩膀上的一个小卡拉米,已老实,求放过) 什么是文件&#xf…

【深度学习遥感分割|论文解读7】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割

【深度学习遥感分割|论文解读7】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割 【深度学习遥感分割|论文解读7】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割 文章目录 【…

wget命令之Tomcat(三)

引言 Tomcat是一个开源的Java Web应用服务器,实现了多个关键的Java EE规范,包括Servlet、JSP(JavaServer Pages)、JavaWebSocket等。由于Tomcat技术先进、性能稳定且免费,它成为了许多企业和开发者的首选Web应用服务器…

如何在Linux中使用Cron定时执行SQL任务

文章目录 前言一、方案分析二、使用步骤1.准备脚本2.crontab脚本执行 踩坑 前言 演示数据需要每天更新监控数据,不想手动执行,想到以下解决方案 navicat 创建定时任务java服务定时执行linux crontab 定时执行sql脚本 一、方案分析 我选择了第三个方案…

CISCO产品介绍

思科防火墙是由全球领先的网络解决方案提供商思科(Cisco)公司研发和生产的一系列网络安全设备。 思科的产品和服务涵盖了多个领域,包括但不限于: 网络硬件:思科的路由器和交换机是其核心产品,广泛应用于企…

机器学习(一)——基本概念、模型的评估与选择

目录 1 关于2 概念2.1 基础概念2.2 学习过程2.3 预测与评估2.4 标记与分类2.4.1 标记2.4.2 分类 2.5 回归分析2.6 聚类分析2.7 学习类型2.8 泛化能力2.9 统计学概念 3 模型评估与选择3.1 经验误差与过拟合3.2 评估方法3.2.1 留出法3.2.2 交叉验证法3.2.3 自助法3.2.4 调参与最终…

第三十五章 Vue路由进阶之声明式导航(跳转传参)

目录 一、引言 二、查询参数传参 2.1. 使用方式 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.2.3. Search.vue 2.2.4. Home.vue 2.2.5. index.js 三、动态路由传参 3.1. 使用方式 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. Search.vue 3.2.4. Hom…

通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析

在 PyTorch 框架中,有一个看似简单的设置可以对模型性能产生重大影响: pin_memory。这个设置具体起到了什么作用,为什么需要关注它呢?如果你正在处理大规模数据集、实时推理或复杂的多 GPU 训练任务,将 pin_memory设为 True可以提高 CPU 与 GPU 之间的数据传输速度,有可能节…