SELinux

news2024/11/20 1:20:46

文章目录

  • SELinux说明
  • SELinux 的运行模式
  • SElinux命令

SELinux 是 Security-Enhanced Linux 缩写,安全强化的linux
系统资源都是通过程序进行访问的,如果将/var/www/html权限设置为777,代表所有程序均可以对该目录访问,如果已启动www服务软件,那么该软件触发的进程将可以写入该目录,而该进程是对整个internet提供服务的。
为了控制这方面的权限与进程问题,出现SELinux

SELinux说明

对程序、文件灯权限设置依据的一个内核模块。由于启动网络服务的也是程序,因此刚好也是能够控制网络服务能否访问系统资源的一道关卡。

1、传统的文件权限与账号的关系:

自主访问控制,DAC(Discretionary Access Control)----针对用户权限

当某个进程想要对文件进行访问时,系统就会根据该进程的所有者/用户组,并比较文件的权限,若通过权限检查,就可以访问该文件了。各种权限设置对root用户无效

2、以策略规则指定特定程序读取特定文件

强制访问控制,MAC(Mandatory Access Control)----针对程序进程的权限

MAC可以针对特定的进程与特定的文件资源来进行权限的控制

即使用root权限,使用不同进程,取得的权限并不一定是root,而要看当时该进程的设置

这个进程也不能任意使用系统资源,因为每个文件资源也有针对进程设置可取用的权限

SELinux 的运行模式

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

主体subject : 进程

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

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

这些策略还有详细规则(rule)来指定不同服务开放某些资源的访问与否

  • targeted : 针对网络服务限制多,针对本机限制少,是默认的策略
  • strict : 完整的SELinux限制, 限制方面严格

安全上下文(security context)

主体能否访问目标除了策略指定外,主体与目标的安全上下文必须相互匹配才能顺利访问

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

查看安全上下文
在这里插入图片描述

安全上下文用冒号分为四个字段

  • 身份标识 (Identify):相当于账号方面的身份标识,主要有以下三种常见的类型
root            表示root的账号身份;
system_u        表示程序方面的标识,通常就是进程;
unconfined_u    代表的是一般用户账号相关的身份
  • 角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有:
object_r:代表的是文件或目录等文件资源
system_r: 代表的进程
  • 类型(type):在默认的targeted 策略中, Identify 与 role字段基本上是不重要的,重要的在于这个类型字段。
type: 在文本资源上称为类型
domain:在主体程序中则成为域

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

在这里插入图片描述

  • MLS和MCS相关,代表灵敏度,一般用s0 s1 s2命名,数字代表灵敏度的分级。数值越大、灵敏度越高
    在这里插入图片描述例如:http服务已经给程序和文件设置了安全上下文
    在这里插入图片描述

/usr/sbin/httpd:type ——> httpd_exec_t
/var/www/html ——> httpd_sys_content_t

以上两个文件的角色字段都是object_r ,代表都是文件

/usr/sbin/httpd属于httpd_exec_t类型,代表它是一个可执行的文件
/var/www/html则属于httpd_sys_content_t类型

访问过程
(1)首先,触发具有httpd_exec_t这个类型的/usr/sbin/httpd这个可执行文件

(2)该文件的类型会让这个文件所造成的主体进程具有httpd这个域,我们的策略已经针对这个域指定了许多规则,其中包括这个域可以读取的目标资源类型

(3)由于httpd_domain被设置为可读取httpd_syscontent_t这个类型的目标文件,因此httpd进程就能够读取在/var/www/html目录下面的文件了

(4)最终能否读到/var/www/html目录下面的数据,还要看rwx是否符合linux权限的规范

进程安全上下文
在这里插入图片描述http进程——>system_u:system_r:httpd_t

system_r 代表进程

文件的type字段为httpd_exec_t ----- 执行之后type字段变成httpd_t

判断httpd进程是否可以访问/var/www/html-----通过httpd进程的type字段和/var/www/html的type字段 是否匹配

httpd_t 和 httpd_sys_content_t是否匹配

目前使用的模式是targeted , 忽略id和role字段,主要看type字段

SElinux命令

1、SELinux状态

在这里插入图片描述2、查看selinux策略

在这里插入图片描述

改变策略之后需要重新启动

如果由enforce或permissive改成disabled , 或由disabled 改为其他两个,也必须要重新启动

将selinux模式在enforce和permissive之间切换的方法为:

setenforce 0 转换成permissive  宽容模式
setenforce 1 转换成enforcing 强制模式

修改完后重启

3、查询安全上下文

getsebool -a  列出目前系统上面的所有布尔值条款

在这里插入图片描述4、SELinux的启动、关闭与查看

三种模式:

  • enforcing: 强制模式,代表SELinux正在运行中,开始限制domain/type
  • permissive: 宽容模式,代表SELinux正在运行中,不过仅会有告警信息并不会实际限制domain / type的访问
  • disabled : 关闭,SELinux并没有实际运行
查看目前的模式

getenforce

查看目前的selinux使用策略

sestatus

配置目前Selinux策略
vim /etc/selinux/config

在这里插入图片描述5、还原默认的安全上下文

系统默认的目录都有特殊的selinux安全上下文,/var/www/html原本就是httpd可以读取的目录。所以如果修改错误可以使用restorecon还原默认的安全上下文

restorecon -Rv 文件或目录
           -R  连通子目录一起修改
           -v  将过程显示到屏幕上

restorecon 怎么知道每个目录记载的默认selinux type类型呢?

因为系统将每个目录的默认selinux type类型记录在/etc/selinux/target/contexts/目录内

但是该目录内有很多不同的数据,所以可以用semanage这个命令的而功能来查询与修改

6、查询和修改安全上下文

semanage  

man semanage-port

semanage port -a -t http_port_t -p tcp 81
允许apache服务可以通过tcp port 81访问

-t SELinux type for the object (目标的类型)

在这里插入图片描述
例:如果现在是通过安全上下文实现8089端口去访问httpd这个服务

最开始的配置
在这里插入图片描述
关闭SElinux , 看到是自定义的页面

在这里插入图片描述
开启SElinux , 只能看到测试页面
在这里插入图片描述修改vhost文件

在这里插入图片描述启动时存在问题

在这里插入图片描述
执行journalctl -xe查看报错信息

SELinux is preventing httpd from name_bind access on the tcp_socket port 8089.

SELinux阻止了通过tcp的8089端口访问httpd
在这里插入图片描述
但是这里报错信息也告诉了应该怎么做

If you want to allow httpd to bind to network port 8089
Then you need to modify the port type.
在这里插入图片描述
semanage port -a -t PORT_TYPE -p tcp 8089

这里的PORT_TYPE也给出了相关可选类型

在这里插入图片描述
所以可以这样修改

[root@localhost www]# semanage port -a -t http_port_t -p tcp 8089

没有报错,且SElinux状态是开启的
在这里插入图片描述

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

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

相关文章

面试官狂问八股文?我已经被三家公司问到哑口无言……

秋招刚过去,整体的感受是:面试难度和拿 offer 的难度比往年难多了,而且互联网还有较大的裁员风险,网上各种消息不断,有时候真是焦虑到不行。 大家还是要早做准备,多面试积累经验,有些人总想准备…

WebDAV之葫芦儿·派盘+可乐记

可乐记 支持WebDAV方式连接葫芦儿派盘。 推荐一款小巧好用的便签类记事本软件,它能够帮助用户在手机上快捷的记录一些代办事项或者是当做一个日记本来记录心情,小容量设备的福音,它就是可乐记。 可乐记这款软件的界面非常的简单,用户在首页就能看到最近所创建的标签,用…

服务器远程端口怎么修改

服务器远程端口怎么修改 修改Windows系统实例默认远程端口 以Windows Server 2012为例介绍如何修改Windows系统实例默认远程端口。 远程连接进入服务器后修改注册表子项PortNumber的值。 按快捷键 Win(Windows 徽标键)R,启动运行窗口。输…

机器学习-模型评估与选择(待更新)

本章主要讲解机器学习的基础知识,有关一些专业术语的定义与解释。 文章目录2.1 经验误差与过拟合2.2 评估方法2.2.1 留出法2.2.2 交叉验证法2.2.3 自助法2.2.4 调参与最终模型2.3 性能度量2.3.1 错误率与精度2.3.2 查准率、查全率与F12.3.3 ROC与AUC2.1 经验误差与过…

诊断2F和14,19服务概述

关于2F 关于抑制位 关于14服务 关于19服务 在0x19服务中一般的使用顺序 1\0x19服务01子服务 通过状态掩码去查找与其相匹配的故障个数。 通过该服务诊断仪能够请求ECU中DTC状态与DTC状态掩码相匹配的故障码个数。如果某一个故障码的实际状态位为“1”,并且DTC状…

医院设置模块查询和删除功能的设计与实现

一、医院设置模块需求 医院设置主要是用来保存开通医院的一些基本信息,每个医院一条信息,保存了医院编号(平台分配,全局唯一)和接口调用相关的签名key等信息,是整个流程的第一步,只有开通了医院…

UGUI性能优化学习笔记(三)图片和图集

一、图片 1.1 纹理压缩 虽然我们可以将JPG、PNG之类的格式导入Unity作为纹理的源文件,但实际上,在导入Unity后,会自动对其进行纹理压缩。 为什么要进行纹理压缩? 每像素位数 (bpp) 表示单个纹理像素所需的存储量。bpp 值越低的…

简述供应链系统商品全生命周期管理价值,助力家用电器行业实现商品管理数字化

如今,随着数字化浪潮和消费升级叠加背景下,越来越多企业开始加速推进数字化的改造与升级,而家用电器行业作为我国经济发展不可或缺的中坚力量,现阶段许多家电企业的数字化管理水平还停留在初级阶段,难以适应变化多样的…

从弹性计算到数据处理——亚马逊云科技re:Invent

在2022亚马逊云科技re:Invent大会上,亚马逊云科技首席执行官Adam Selipsky说:“在今后的五年,我们创建了这些数据,可能会完全超过了数码时代一直到现在以来所有数据累加在一起的数量,这样同时也会告诉我们所有的组织都…

有哪些舆情监控方法,舆情监控工作机制?

一、舆情监控方法 1,组建新闻报道社会舆论舆情监控队伍 在言论高度自由的网络时代,人人都是自媒体,人人皆可表达意见。透过成立一队人才队伍的新闻报道社会舆论舆情监控各队能协助民营企业及时发现高度关注网络实时,迅速开展正面…

iphone13 ios 16.2降级15.6刷机教程

最近,更新了最新的ios16.2之后,系统经常出现卡屏卡死和异常耗电情况,最终决定对手机进行系统降级处理,下面是我的一个刷机过程。 目录 一、下载电脑版爱思助手 二、下载ios15.6版本固件 三、导入固件到爱思助手 四、刷机过程中…

Docker——自定义镜像

目录 一、镜像结构 二、Dockerfile 2.1 案例:基于Ubuntu镜像构建一个新镜像,运行一个java项目 2.1.1 新建文件夹docker-demo 2.1.2 拷贝docker-demo.jar到docker-demo 2.1.3 将jdk8.tar.gz文件放到docker-demo目录 2.1.4 将Dockerfile移动到docker-demo…

2023年IBDP大考计划安排

2023年5月IB考试时间已经公布。2023年5月IB考试时间表是以时区的不同分为A、B、C三个考区。具体安排如下: Zone A:UTC 12 至 UTC 3.5 Zone B:UTC 3 至 UTC 0 Zone C:UTC -1 至 UTC -10 中国属于东八区UTC8,属于Zone A考…

Linux学习:工程搭建

一、gcc main.c -o main 创建一个main.c文件 gedit main.c 在里边写进代码 #include <stdio.h>void main() {printf("hello world\n"); } 编译代码 gcc main.c -o main 输入ls&#xff0c;可以看到生成了一个可行性的main 执行main&#xff0c;即可执行…

2022年中科大分子生物学考试题、复习资料汇总(往年真题复习资料)

文章目录1.2022复习题2.2021复习题3.2020复习题4.2018复习题5.2015-2016复习题6.Key:复习重点7.随堂测验-平时成绩分子生物学复习资料及往年考题1.2022复习题 1.分子生物学复习资料及往年考题&#xff1a;&#xff08;已完结&#xff09; &#xff08;1&#xff09;资料完整版…

Tomcat的安装和运行

安装Tomcat 安装某一个软件,我们当然是要去官网.为了防止很多朋友找不到资源,我们这里直接放出官网路径. https://tomcat.apache.org/download-80.cgi 直接点击进入官网下载页面即可.选择Tomcat8,点击Core的zip包下载即可. 下载好以后,我们进入到下载的目录.选择到 我们下载…

js学习笔记

1.js代码要写在script标签中 <script type"text/javascript">for (let i0;i<5;i){document.write("<h1 stylecolor:red;>hello world</h1>")} </script>2.可以通过src的方式指定读取js文件进来&#xff0c;注意如果用这种方式…

[SECCON CTF 2022] crypto 部分复现

目录 janken vs kurenaif pqpq 以前写过了&#xff0c;官方方法一样 witches_symmetric_exam this is not lsb insufficient CVP BBB 当时仅pqpq差点完成&#xff0c;有个小错。其它都无从下手。终于看到wp一一试一下。原文 janken vs kurenaif 这个情况第一回见&#…

判断国际象棋棋盘中一个格子的颜色

题目链接 判断国际象棋棋盘中一个格子的颜色 题目描述 注意 coordinates.length 2‘a’ < coordinates[0] < ‘h’‘1’ < coordinates[1] < ‘8’ 解答思路 棋盘是不变的&#xff0c;只需要根据行列的奇偶性判断格子是否为白色即可 代码 方法一&#xff1…

爆火的OpenAi的ChatGPT聊天机器人注册和使用攻略

先来看看他的效果怎木样: 哇塞!是不是很奈斯!!! 一. 对OpenAi进行注册登录(需要翻墙) OpenAI APIAn API for accessing new AI models developed by OpenAIhttps://beta.openai.com/ 二. 购买一个虚拟号码用于手机号注册 nullReceive sms online on virtual numbers of SMS…