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,一经查实,立即删除!

相关文章

GAT详解带例子

系列博客目录 文章目录 系列博客目录GAT 的核心概念GAT 工作原理举例:用 GAT 进行品牌与产品类型的共识推理1. 构建图结构2. 初始化节点特征3. 定义 GAT 模型4. 训练 GAT 模型5. 推理品牌-产品类型关系 示例代码解释 总结 图注意力网络(Graph Attention …

int socket(int domain,int type,int protocol);

本文内容产生自智谱清言 头文件&#xff1a; #include <sys/socket.h> int socket(int domain,int type,int protocol); 它是在C语言中使用的一个系统调用函数&#xff0c;用于创建一个新的套接字。套接字是支持TCP/IP协议的网络通信的端点&#xff0c;可以看作是不同…

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

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

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

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

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

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

线上问题排查的思路

线上问题排查的思路 线上问题的排查是一个很大的范围&#xff0c;其中包括服务器对应的硬件资源、软件资源、数据库使用情况等情况&#xff0c;下面将一一列举。一般情况下&#xff0c;系统出现事故&#xff0c;都会有事故报告&#xff0c;总结经验&#xff0c;避免下次出现类似…

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

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

结构体是否包含特定类型的成员变量

结构体是否包含特定类型的成员变量 在C中&#xff0c;可以使用模板元编程和类型特性&#xff08;type traits&#xff09;来判断一个结构体是否包含特定类型的成员变量。这通常通过std::is_member_object_pointer类型特性来实现&#xff0c;它可以用来检查给定的成员指针是否指…

Android基础知识整理一

1. Android基础知识&#xff08;第一行代码-第2版&#xff09; 1.1 Android开发特色 1.1.1 系统架构 Linux内核层&#xff0c;系统运行库层&#xff0c;应用框架层&#xff0c;应用层1.1.2 四大组件 活动Activity,服务Service&#xff0c;广播接收器Broadcast Receiver,内容…

shodan5(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…

前端 Flex 布局语法详解

文章目录 Flex 布局语法详解一、引言二、Flex布局基础1、Flex布局简介2、基本概念 三、容器属性1、flex-direction2、justify-content3、align-items 四、项目属性1、order2、flex3、align-self 五、总结 Flex 布局语法详解 一、引言 在现代网页设计中&#xff0c;布局是一个…

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

本文将深入解析“设备租借系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 本项目名称为设备租借系统&#xff0c;是对企业内部设备进行信息化管理的系统&#xff0c;可以实现设备的借用、归还、状态跟踪等功能&#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特性&#xff1a;C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

如何不封禁UDP协议同时防止UDP攻击

UDP&#xff08;User Datagram Protocol&#xff09;协议因其简单、高效的特点&#xff0c;广泛应用于各种网络服务中&#xff0c;如视频流、在线游戏和VoIP等。然而&#xff0c;UDP协议的无连接特性和缺乏内置的安全机制使其容易成为攻击者的靶标&#xff0c;常见的攻击类型包…

User是一个结构体,users := []User{} 和users := []User区别

这两种声明方式有重要的区别&#xff1a; users : []User{}&#xff1a; 创建了一个空的切片&#xff0c;已经初始化长度(len)为 0&#xff0c;容量(cap)为 0可以直接使用 append 操作不是 nil 切片内存已分配 func main() {users : []User{}fmt.Println(users nil) …

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

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

Android自启动管控

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

使用Python生成随机密码并保存到文件的详尽指南

使用Python生成随机密码并保存到文件的详尽指南 引言 在信息时代,密码安全是保护个人和企业数据的关键。为了确保密码的复杂性和安全性,随机生成密码是一种常见且有效的方法。本文将详细介绍如何使用Python编写一个程序,生成随机密码并将其保存到文件中。内容涵盖环境准备…

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

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