安全强化的Linux

SElinux简介

        SELinux是security-Enhanced Linux的缩写,意思是安全强化的linux

        SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。传统的访问控制在我们开启权限后,系统进程可以直接访问

             当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞

在开启SElinux后

             会对进程本身部署安全上下文

             会对文件部署安全上下文

             会对服务使用端口进行限制

             会对程序本身的不安全功能做限制

selinux的工作原理

SElinux的工作方式

SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源

        主体(subject):就是进程

        目标(object):被主体访问的资源,可以是文件、目录、端口等。

        策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全策略

               otargeted:针对网络服务限制较多,针对本机限制较少,是默认的策略;ostrict:完整的SELinux限制,限制方面较为严格。

SELinux的安全上下文

安全上下文(securitycontext):

        主体能不能访问目标除策略指定外,主体与目标的安全上下文必须一致才能够顺利访问。

        最终文件的成功访问还是与文件系统的rwx权限设置有关

安全上下文的查看

# ls -Z

进程安全上下文查看

# ps axZ | grep vsftpd

安全上下文用冒号分为四个字段:ldentify:role:type:

        身份标识(Identify):相当于账号方面的身份标识,主要有以下三种常见的类型:root:表示root的账号身份;

                systemU:表示程序方面的标识,通常就是进程;

                unconfinedu:代表的是一般用户账号相关的身份。

        角色(role):通过角色字段,可知这个数据是属于程序、文件资源还是代表用户。

                一般角色有:objectr:代表的是文件或目录等文件资源;    systemr:代表的是进程。

        类型(type):在默认的targeted策略中,ldentify与role字段基本上是不重要的,重要的在于这个类型字段。而类型字段在文件与进程的定义不太相同。

                分别是:type:在文件资源上面称为类型。   domain:在主体程序中则称为域

        odomain需要与type搭配,则该程序才能够顺利读取文件资源。

        代表灵敏度,一般用SO、S1、S2来命名,数字代表灵敏度的分级。数值越大、灵敏度越高

对于SElinux的管理及优化

SElinux的工作模式SElinux有三种工作模式:

        oenforcing:强制模式,开始限制domain/type.

        opermissive:宽容模式,仅会有警告信息并不会实际限制domain/type的访问。

        odisabled:关闭,SELinux并没有实际运行。

对于SElinux状态管理查看SElinux当前状态查看

# setsebool -P ftpd_full_access off

# getenforce          【查看工作模式,1   Enforcing强制模式,0   Permissive警告模式】

临时更改SElinux的工作模式

# setenforce 0/1)     【0表示警告模式(警告但可运行),1表示强制模式(不可运行)】

永久更改SElinux状态

在RHEL9之前的版本中通过文件来永久更改SElinux的状态

# viM/etc/se1inux/config

在RHEL9中需要通过修改内核启动参数来永久更改SElinux的状态

# grubby --update-kernel ALL --args selinux=1    —开

# grubby --update-kernel ALL --args selinux=0    —关

如何开启selinux

# grubby --update-kernel ALL --args selinux=1

# reboot

管理文件的安全上下文

# dnf install nginx -y                       【下载】

# systemctl enable --now nginx              【开火墙】

# systemctl disable --now firewalld

# cd /usr/share/nginx/html/

# rm -fr index.html

# echo /mnt/index.html > /mnt/index.html       【输入内容】

# mv /mnt/index.html /usr/share/nginx/html/index.html     【移动文件】

# ls -Z /usr/share/nginx/html/   运行结果:

临时更改文件的安全上下文

chcon  [-R]  [-t type]  [-u user]  [-r role]  文件

        -R:连同该目录下的子目录也同时修改

        -t:后面接安全上下文的类型字段

# chcon -Rt httpd_sys_content_t index.html

# ls -Z /usr/share/nginx/html/   运行结果:

        -U:后面接身份识别

        -r:后面接角色

永久修改安全上下文

semanager fcontext  [-a|-d]  [-t type]  [-s user]  [-r range]  文件

        -l:列出所有记录

        -a:添加记录

        -t:添加的类型

# semanage fcontext  -a -t httpd_sys_content_t '/lee(/.*)?'    【添加文件】

# semanage fcontext -l | grep /lee       【查看安全上下文】

# restorecon -RvvF /lee/                 【刷新安全上下文】

# ls -Zd /lee 查看结果:

        -M:修改记录

        -d:删除记录

        -P:指定添加的端口是tcp或udp协议的,port子命令下使用

        -e:目标路径参考原路径的上下文类型,fcontext子命令下使用

        -S:后面接身份识别

        -r:后面接角色

服务的端口影响

在系统SElinux开启后会规定服务使用端口

查看服务被允许使用的端口

# semanage port -l | grep ssh

根据需求更改被允许使用的端口

# semanage port -a -t ssh_port_t -p tcp 6666        【更改端口】

# semanage port -l | grep ssh

selinux对linux服务的影响

服务的功能影响

在系统SElinux开启后会为服务添加新的功能开关,我们把这个开关叫做sebool

临时修改bool值

# getsebool  -a | grep http            【查看sebool值】

# setsebool  httpd_anon_write 1            【修改sebool值】

# getsebool  -a | grep http   查看结果:

重启# reboot后查看结果:

永久修改

# setsebool -P httpd_anon_write off

查看结果:

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

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

相关文章

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 K-me…

spring中yml配置上下文与tomcat等外部容器不一致问题

结论:外部优先级大于内部 在 application.yml 中配置了: server:port: 8080servlet:context-path: /demo这表示你的 Spring Boot 应用的上下文路径(context-path)是 /demo,即访问你的服务时,URL 必须以 /d…

论文研读——《AnomalyGPT:使用大型视觉语言模型检测工业异常》

这篇论文提出了 AnomalyGPT,一个基于大型视觉语言模型的工业异常检测框架,首次将通用多模态对话能力引入工业视觉场景,通过引入图像解码器增强像素级感知,设计 Prompt 学习器实现任务自适应控制,并利用合成异常样本解决…

供应链安全检测系列技术规范介绍之一|软件成分分析

软件成分分析的概念及意义 软件成分分析Software Compostition Analysis(SCA)是一种用于管理开源组件应用安全的方法。软件成分分析系统可以快速跟踪和分析应用软件的开源组件,发现相关组件、支持库以及它们之间直接和间接依赖关系&#xff0…

conda更换清华源

1、概览 anaconda更换速度更快、更稳定的下载源,在linux环境测试通过。 2、conda源查看 在修改之前可以查看下现有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源举例&am…

Docker配置容器开机自启或服务重启后自启

要将一个 Docker 容器设置为开机自启,你可以使用 docker update 命令或配置 Docker 服务来实现。以下是两种常见的方法: 方法 1:使用 docker update 设置容器自动重启 使用 docker update 设置容器为开机自启 你可以使用以下命令&#xff0c…

Flink 的水印机制

Apache Flink 的 水印机制(Watermark Mechanism) 主要用于解决 事件时间流中的乱序问题(Out-of-Order Events),确保窗口(Window)能够在合适的时间触发计算,从而提供准确、一致的处理…

【每天一个知识点】embedding与representation

“Embedding(嵌入)”与“Representation(表示)”在机器学习、自然语言处理(NLP)、图神经网络等领域常被使用,它们密切相关,但语义上有一定区别。 一、定义 1. Representation&#…

SpringBoot(二)--- SpringBoot基础(http协议、分层解耦)

目录 前言 一、SpringBoot入门 1.入门程序 2.解析 二、HTTP协议 1.HTTP概述 2.HTTP请求协议 2.1 GET方式的请求协议 2.2 POST方式的请求协议 2.3 两者的区别 2.4 获取请求数据 3.HTTP响应协议 三、分层解耦 1.三层架构 2.IOC&DI 2.1 入门 2.2 IOC详解 2.…

Please install it with pip install onnxruntime

无论怎么安装都是 Please install it with pip install onnxruntime 我python 版本是3.11 ,我换成3.10 解决了

【数据结构入门训练DAY-35】棋盘问题

本次训练聚焦于使用深度优先搜索(DFS)算法解决棋盘上的棋子摆放问题。题目要求在一个可能不规则的nn棋盘上摆放k个棋子,且任意两个棋子不能位于同一行或同一列。输入包括棋盘大小n和棋子数k,以及棋盘的形状(用#表示可放…

【日常笔记】wps如何将值转换成东西南北等风向汉字

在WPS表格中,若要将数值(如角度值)转换成“东、南、西、北”等风向汉字,可通过以下步骤结合自定义函数或条件判断实现: 一、wps如何将值转换 方法一:使用LOOKUP函数(简化公式)&…

Web性能优化的未来:边缘计算、AI与新型渲染架构

一、边缘计算与性能优化深度整合 1.1 边缘节点计算卸载策略 • 智能任务分割:将非关键路径计算卸载到边缘节点 // 客户端代码 const edgeTask = new EdgeTask(image-processing); edgeTask.postMessage(imageData, {transfer

spring中的EnvironmentPostProcessor接口详解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 EnvironmentPostProcessor 是 Spring Boot 提供的一个关键扩展接口,允许开发者在 Spring 应用环境初始化后、应用上下文创建前&…

Vue3知识点梳理

注:纯手打,如有错误欢迎评论区交流! 转载请注明出处:https://blog.csdn.net/testleaf/article/details/148056625 编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除! 本文章…

C++23 新增的查找算法详解:ranges::find_last 系列函数

文章目录 引言C Ranges 库简介ranges::find_last、ranges::find_last_if 和 ranges::find_last_if_not 概述ranges::find_last示例代码代码解释 ranges::find_last_if函数签名参数解释示例代码代码解释 ranges::find_last_if_not示例代码代码解释 使用场景总结 引言 在 C 的发…

DW_DMAC简介

基本概念: DMA:全称direct memory access,即直接存储器访问。dma可以在中央处理器CPU不参与的情况下,实现外设和内存之间的数据直接传输,从而提高数据传输效率 外设与计算机内存之间的数据传输,一般可通过…

信号量基础入门:并发控制的核心概念

问题的复杂性产生的根本原因在于,如 2.2 节所述,共享变量的访问始终是“单向信息流”。也就是说,一个进程可以分配新值或检查当前值,但这种检查不会为其他进程留下任何痕迹。结果是,当一个进程想要对共享变量的当前值作…

(十九)Java集合框架深度解析:从基础到高级应用

一、集合框架概述 1.1 什么是集合框架 Java集合框架(Java Collections Framework, JCF)是Java语言中用于表示和操作集合的一套标准化体系结构。它提供了一组接口、实现类和算法,用于存储和操作对象组,解决了数组在存储对象时的诸多限制。 集合框架的主…

Blender cycles烘焙贴图笔记

下载了一些枪模型,一个模型有七八个材质,一个扳机、准星还有单独的材质,用的贴图只有一小部分有内容,对Draw Call非常不友好。不得不学一下怎么用Blender减材质。 找到了这个视频如何在Blender中将多种材料多张贴图烘焙成一张贴图…