linux笔记(selinux)

一、概述

  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.mzph.cn/news/885553.shtml

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

相关文章

江西省补贴性线上职业技能培训管理平台(刷课系统)

江西省补贴性线上职业技能培训管理平台(刷课系统) 目的是为了刷这个网课 此系统有两个版本一个是脚本运行,另外一个是可视化界面运行 可视化运行 技术栈:flask、vue3 原理: 通过分析网站接口,对某些接口加密的参数进行逆向破解,从而修改请求…

Scala 中 set 的实战应用 :图书管理系统

1. 创建书籍集合 首先,我们创建一个可变的书籍集合,用于存储图书馆中的书籍信息。在Scala中,mutable.Set可以用来创建一个可变的集合。 val books mutable.Set("朝花惜拾", "活着") 2. 添加书籍 我们可以使用操作符…

简单介绍一下mvvm mvc mvp以及区别、历史

MVC(Model - View - Controller) 因MVC架构的灵活性,架构图形式很多,仅供参考 历史: MVC 是最早出现的软件架构模式之一,其历史可以追溯到 20 世纪 70 年代,最初被用于 Smalltalk - 80 环境。…

“高级Java编程复习指南:深入理解并发编程、JVM优化与分布式系统架构“

我的个人主页 接下来我将方享四道由易到难的编程题,进入我们的JavaSE复习之旅。 1:大小写转换------题目链接 解题思路: 在ASCII码表中,⼤写字⺟A-Z的Ascii码值为65- 90,⼩写字⺟a-z的Ascii码值为97-122。每个字 ⺟…

设备租借系统(源码+文档+部署+讲解)

本文将深入解析“设备租借系统”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 本项目名称为设备租借系统,是对企业内部设备进行信息化管理的系统,可以实现设备的借用、归还、状态跟踪等功能&#xff…

使用 PageHelper 在 Spring Boot 项目中实现分页查询

目录 前言1. 项目环境配置1.1 添加 PageHelper 依赖1.2 数据库和 MyBatis 配置 2. 统一的分页响应类3. 使用 PageHelper 实现分页查询3.1 Service 层分页查询实现3.2 PageHelper 分页注意事项 4. 控制层调用示例5. 常见问题与解决方案5.1 java.util.ArrayList cannot be cast t…

【C++】C++移动语义、左值右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符

二十五、C移动语义、左值和右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符 本部分讨论一些更高级的C特性:C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

【国内中间件厂商排名及四大中间件对比分析】

国内中间件厂商排名 随着新兴技术的涌入,一批国产中间件厂商破土而出,并在短时间内迅速发展,我国中间件市场迎来洗牌,根据市占率,当前我国中间件厂商排名依次为:东方通、宝兰德、中创股份、金蝶天燕、普元…

Android自启动管控

1. 自启动管控需求来源 自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外,还会导致占用过多的系统CPU和内存资源,造成系统卡顿、发热、电池消耗过快;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动&…

C++上机实验|多态性编程练习

1.实验目的 (1)理解多态性的概念。 (2)掌握如何用虚函数实现动态联编 (3)掌握如何利用虚基类。 2.实验内容 设计一个飞机类 plane,由它派生出歼击机类fighter和轰炸机类 bomber,歼击机类fighter 和轰炸机类bomber 又共同派生出歼轰机(多用途战斗机)。利用虚函数和虚基类描述…

ctfshow(328)--XSS漏洞--存储型XSS

Web328 简单阅读一下页面。 是一个登录系统,存在一个用户管理数据库。 那么我们注册一个账号,在账号或者密码中植入HTML恶意代码,当管理员访问用户管理数据库页面时,就会触发我们的恶意代码。 思路 我们向数据库中写入盗取管理员…

Kubernetes的概述与架构

Kubernetes 的概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于…

crond 任务调度 (Linux相关指令:crontab)

相关视频链接 crontab 进行 定时任务 的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序 任务调度的分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。 2.个别用户可能希望执行某些程序,比如…

408最后冲刺阶段,怎么做题才能考到120+?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重要性排序如下:真题占据首位,紧随其后的是王道模拟题,王道书与题目则紧随其后,而408统考配套习题(高教版)与之大致相当。 真题,无疑…

uniapp上拉刷新下拉加载

方法一: z-paging 的组件库: show-loading-more-no-more-view"false" 该属性控制是否显示 "加载更多" 或 "没有更多" 的提示。如果设为 false,则不会显示这些提示。如果设为 true,当数据加载完毕…

Java I/O(输入/输出)——针对实习面试

目录 Java I/O(输入/输出)什么是Java I/O流?字节流和字符流有什么区别?什么是缓冲流?为什么要使用缓冲流?Java I/O中的设计模式有哪些?什么是BIO?什么是NIO?什么是AIO&am…

AJAX 全面教程:从基础到高级

AJAX 全面教程:从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX(Asynchronous JavaScript and XML…

本地保存mysql凭据实现免密登录mysql

本地保存mysql凭据 mysql加密登录文件简介加密保存mysql用户的密码到本地凭据 mysql加密登录文件简介 要在 mysql客户端 上连接 MySQL 而无需在命令提示符上输入用户名和口令,下列三个位置可用于存储用户的mysql 凭证来满足此要求。 配置文件my.cnf或my.ini /etc…

图形几何之美系列:仿射变换矩阵(二)

“ 在几何计算、图形渲染、动画、游戏开发等领域,常需要进行元素的平移、旋转、缩放等操作,一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等,四元数在图形学中主要用于解决旋转问题,特别是在三维…

Jmeter的安装,设置中文,解决乱码问题

1.Jmeter安装 1-Jmeter如何下载 1---我这里提供一个下载快的方式 https://www.123684.com/s/lWZKVv-4jiav?提取码:4x4y 2---Jmeter官网下载地址 Apache JMeter - Download Apache JMeter 2-配置java环境 1---下载javaJDK 官方下载地址 https://www.oracle.com/java/techno…