RHCE【SELinux】

目录

一、SElinux的说明:

二、SELinux的工作原理

三、SELinux的启动、关闭与查看

(1)SELinux三种模式

(2)修改安全上下文的几个命令

四、SELinux对Linux服务的影响实验

实验一:使用web服务演示安全上下文值的设定

实验二:使用web服务端口的改变来演示端口的设定


一、SElinux的说明:

SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)开发的一种安全强化的Linux内核模块,旨在通过强制访问控制(MAC)机制来增强系统的安全性。传统的Linux文件权限是基于自主访问控制(DAC),即根据文件所有者和用户组的权限设置来决定进程对文件的访问权限,而SELinux引入了强制访问控制,可以根据策略规则来限制特定进程对特定文件资源的访问,即使这些进程是以root用户身份运行。

在SELinux中,每个文件和进程都被赋予了一个安全上下文(security context),包括类型(type)、角色(role)和用户(user)。这些安全上下文定义了进程可以对文件执行的操作,以及文件可以被哪些进程访问。SELinux的策略规则集定义了这些安全上下文之间的关系,以及它们如何相互作用。

例如,如果一个Web服务器进程想要读取一个文件,但该文件的安全上下文不允许Web服务器进程这样做,那么即使Web服务器进程以root身份运行,它也无法读取该文件。这种机制可以防止恶意软件或误操作导致的数据泄露或系统破坏。

SELinux还提供了一种称为“布尔值”(boolean)的机制,允许管理员启用或禁用特定的策略规则,以便在不影响整体安全性的前提下进行灵活的配置。例如,管理员可以通过设置特定的布尔值来允许或禁止某个服务访问网络。

总之,SELinux通过为系统资源和进程提供细粒度的访问控制,增强了Linux系统的安全性,使得即使是高权限的用户或进程也不能随意访问或修改系统资源。

二、SELinux的工作原理

SELinux(Security-Enhanced Linux)通过强制访问控制(MAC)来管理进程对系统资源的访问。在SELinux中,每个进程和文件都被赋予了一个安全上下文(security context),这些上下文定义了进程可以对文件执行的操作以及文件可以被哪些进程访问。

主体(Subject)
主体是指试图访问目标资源的进程。在SELinux中,主体通常是一个运行中的进程,它可能代表用户、服务或其他实体。

目标(Object)
目标是被主体访问的资源,可以是文件、目录、端口等。每个目标也有一个安全上下文,定义了允许哪些主体访问它以及如何访问。

策略(Policy)
由于系统中的进程和文件数量庞大,SELinux使用策略来定义主体和目标之间的访问规则。策略由多个规则组成,这些规则指定了不同类型主体对不同类型目标的访问权限。

安全上下文(security context)

在SELinux中扮演着至关重要的角色,它决定了主体(通常是进程)能否访问特定的目标(如文件、目录、端口等)。安全上下文由冒号分隔的四个字段组成:身份标识(Identify)、角色(role)、类型(type)和灵敏度级别。这些字段共同定义了主体和目标的安全属性,从而控制访问权限。

#查看当前目录下的所有文件和目录的安全上下文:
[root@server ~]# ls -Zsystem_u:object_r:admin_home_t:s0 anaconda-ks.cfg
unconfined_u:object_r:admin_home_t:s0 Desktop
unconfined_u:object_r:admin_home_t:s0 Documents
unconfined_u:object_r:admin_home_t:s0 Downloads
unconfined_u:object_r:admin_home_t:s0 Music
unconfined_u:object_r:admin_home_t:s0 Pictures
unconfined_u:object_r:admin_home_t:s0 Public
unconfined_u:object_r:admin_home_t:s0 Templates
unconfined_u:object_r:admin_home_t:s0 Videos

身份标识(Identify)
身份标识用于区分不同的用户或进程。常见的身份标识包括:
 root:表示超级用户的身份。
system_u:通常代表系统进程。
unconfined_u:代表普通用户进程。

 角色(Role)
角色字段指示数据属于程序、文件资源还是用户。常见的角色包括:
-object_r:表示文件或目录等资源。
system_r:表示进程。

 类型(Type)
类型字段是SELinux策略中最重要的部分之一。对于文件资源,这个字段称为类型;对于主体程序,则称为域(domain)。域需要与类型相匹配,以便程序能够顺利读取文件资源。例如,一个Web服务器进程可能有一个域类型为`httpd_t`,而它需要访问的文件类型可能是`httpd_sys_content_t`。只有当这两个类型匹配时,访问才会被允许。

灵敏度级别(MLS/MCS)
最后一个字段与多级安全(MLS)和多类安全(MCS)相关,表示数据的灵敏度级别。常见的灵敏度级别有s0、s1、s2等,其中数字越大表示灵敏度越高。这种机制允许更细粒度的控制,例如,可以限制某些高灵敏度的数据只能被特定类型的进程访问。

文件系统的rwx权限
尽管SELinux提供了强大的访问控制机制,但最终的文件访问仍然依赖于传统的文件系统权限设置(读、写、执行)。这意味着即使SELinux策略允许某个进程访问某个文件,但如果该文件的所有者或组没有相应的权限,那么进程仍然无法访问该文件。

总的来说SELinux通过为每个进程和文件分配安全上下文,并基于策略规则来控制访问,从而增强了系统的安全性。安全上下文由身份标识、角色、类型和灵敏度级别四个字段组成,它们共同决定了主体能否访问目标。最终的文件访问还需要考虑传统的文件系统权限设置。这种多层次的安全机制使得SELinux成为保护系统免受恶意攻击和误操作的重要工具。

三、SELinux的启动、关闭与查看

1SELinux三种模式

enforcing :强制模式,代表 SELinux 正在运行中,开始限制 domain/type
permissive :宽容模式,代表 SELinux 正在运行中,不过仅会有警告信息并不会实际限制
domain/type 的访问。
disabled :关闭, SELinux 并没有实际运行。
#查看SELinux当前的模式:
[root@server ~]# getenforce
Enforcing#查看SELinux当前的状态:
[root@server ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33#编辑SELinux 的配置文件
[root@server ~]# vim /etc/selinux/config
改变策略之后需要重新启动;
如果由 enforcing permissive 改成 disabled ,或由 disabled 改为其它两个,也必须要重新启动。
selinux 模式在 enforcing permissive 之间切换的方法为(临时更改,永久更改还需要修改配置文件):
setenforce 0 转换成 permissive 宽容模式
setenforce 1 转换成 enforcing 强制模式

(2)修改安全上下文的几个命令

[root@server ~]# man chcon
[root@server ~]# man restorecon
[root@server ~]# man semanage

四、SELinux对Linux服务的影响实验

实验一:使用web服务演示安全上下文值的设定

服务器端:

[root@server ~]# systemctl disable firewalld --now
[root@server ~]# getenforce
Enforcing
[root@server ~]# cat /etc/nginx/conf.d/test_ip.conf
server {listen 192.168.88.100:80;root /www/ip/100;location / {}
}
server {listen 192.168.88.200:80;root /www/ip/200;location / {}
}[root@server ~]# systemctl restart nginx.service
此时使用客户端测试或出现403状态码
然后我们进行安全上下文的修改:
方法1:直接修改自定义目录的安全上下文:
[root@server ~]# chcon -t httpd_sys_content_t /www/ -R方法2:将自定义目录的安全上下文的值按照按照指定文件进行修改:
[root@server ~]# chcon -R --reference=/usr/share/nginx/html/index.html /www

客户端测试:

 

[root@client ~]# curl 192.168.88.100
tish is 100
[root@client ~]# curl 192.168.88.200
tish is 200

 

测试成功!!!

实验二:使用web服务端口的改变来演示端口的设定

 

服务器端:

[root@server ~]# vim /etc/nginx/conf.d/test_port.conf
server {listen 192.168.88.120:80;root /www/port/80;location / {}
}
server {listen 192.168.88.120:10000;root /www/port/10000;location / {}
}#重启nginx服务出现错误,查看其状态日志信息,拒绝访问10000端口
[root@server ~]# systemctl restart nginx.service
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.#向 SELinux 策略中添加一条规则,将 http_port_t 类型分配给 TCP 端口 10000:
[root@server ~]# semanage port -a -t http_port_t -p tcp 10000
[root@server ~]# systemctl restart nginx.service

客户端测试:

[root@client ~]# curl 192.168.88.120:10000
this port is 10000
[root@client ~]# curl 192.168.88.120
this port is 80

测试成功!!!

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

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

相关文章

【深圳大学/大学物理实验2】霍尔效应及其应用实验预习参考

霍尔效应及其应用 总分:100 组卷人:系统管理员成绩:95 一、单选题 共 10 小题 共 50 分 1. (5分)测量霍尔电压的原理公式是: 学生答案:C √ A. B. C. D. 2. (5分)载流子浓度n的计算式…

[全网最完整最详细C++篇]第四篇:类和对象(上)

目录 1->面向过程和面向对象初步认识 2->类的引入 3->类的定义 4->类的访问限定符及封装 4.1 访问限定符 4.2封装 5->类的作用域 6->类的实例化 7->类的对象大小的计算 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规…

Linux 服务器使用指南:从入门到登录

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 🚩博主致力于用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 目录 一…

汇编语言:冒泡排序

在数据区定义一个字节型变量a1,a1中存放了若个字符,$字符是其最后一个字符。 编写子程序 a1中的所有字符输出显示,直到‘$’结束(需要用循环实现)输出回车换行符号和逗号用提示信息提示用户输入8个数,以非数…

Netty篇(核心组件 - Channel)

目录 一、简介 二、ChannelFuture 三、CloseFuture 四、💡 异步提升的是什么 一、简介 channel 的主要作用 close() 可以用来关闭 channelcloseFuture() 用来处理 channel 的关闭 sync 方法作用是同步等待 channel 关闭而 addListener 方法是异步等待 channel …

JavaScript void 运算符

void定义: void 运算符对给定的表达式进行求值,然后返回undefined。void是一个一元运算符,接受单个操作数,可以是任何类型,返回一个 undefined。 void语法: void 在表达式的左边,void 右边的…

Vue+Springboot 前后端分离的项目如何部署?

本文转载自:https://fangcaicoding.cn/course/11/58 大家好!我是方才,目前是8人后端研发团队的负责人,拥有6年后端经验&3年团队管理经验,截止目前面试过近200位候选人,主导过单表上10亿、累计上100亿数…

sls日志服务采集json格式日志

springboot统计的json数据 1. 配置 Logback 输出 JSON 格式日志1.1添加依赖:1.2配置 Logback 输出日志: 2. 使用 LinkedHashMap 日志数据3. 将日志推送到 SLS4. 在阿里云 SLS 中查看日志5.补充:关于 JSON 格式输出5.补充:关于 JSO…

Python | Leetcode Python题解之第538题把二叉搜索树转换为累加树

题目: 题解: class Solution:def convertBST(self, root: TreeNode) -> TreeNode:def getSuccessor(node: TreeNode) -> TreeNode:succ node.rightwhile succ.left and succ.left ! node:succ succ.leftreturn succtotal 0node rootwhile nod…

天命人开店日记之选址考察(上)

本次开店的品类是老年用品,前期与合作伙伴交流,按照新的线上与线下结合方式销售老年代步车和智能电动轮椅,线上占据70%销量,线下占据30%。线下门店可作为一个体验中心,对于本区域内的用户可以到线下门店体验&#xff0…

万字长文读懂RAG

目录 RAG的整体架构设计 一、概览 1-Overview 2-Indexing 3-Retrival 4-Generation 二、优化元素提问 5-Multi Query多查询策略 6-RAG-Fusion多查询结果融合策略 7-Decomposition问题分解策略 Answer recursively Answer individually 8-Step Back问答回退策略 9…

MySQL系列:一句SQL,MySQL是怎么工作的?

对于MySQL而言,其实分为客户端与服务端。 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端。客户端,负责发送请求到服务端并从服务端获取数据,客户端可以有多种…

【Mysql NDB Cluster 集群(CentOS 7)安装笔记一】

Mysql NDB Cluster 集群(CentOS 7)安装笔记 NDB集群核心概念 NDBCLUSTER(也称为NDB)是一个内存存储引擎,提供高可用性和数据保存功能。 NDBCLUSTER存储引擎可以配置一系列故障转移和负载平衡选项,但从集群级别的存储引擎开始是最容易的。NDB集群的NDB存储引擎包含一整套…

使用VS Code时如何切换Python版本?VS Code中如何在Python3与Python2之间自由切换?

1. 使用VS Code时如何切换Python版本?VS Code中如何在Python3与Python2之间自由切换? 2. 准备 2.1. 已添加Python2与Python3的安装目录到环境变量的Path所对应的值里 2.2. 已安装VSCode的Python插件 没安装的话,用VSCode打开Py文件就会提示让…

爱回收根关键字获取对应品牌的ID API 返回值深入解析

在数字化时代,二手商品交易市场日益繁荣,其中爱回收作为一个重要的平台,提供了一个便捷的接口,使得开发者能够通过API获取对应品牌的ID。本文将详细介绍如何使用爱回收的API,通过根关键字来获取品牌ID,并提…

给自己域名生成tls证书并在服务器进行配置

背景 自己搭建的服务器,使用https访问时会报不安全,给人一种不靠谱的赶脚,于是乎,决定使用个免费的方式来配置个证书解决这个问题 解决 首先需要有自己的公网域名,我的是某里云购买的,如何购买域名这里不聊 需要一…

java反序列化学习之CommonCollections3利用链的学习

一、前言 在前文中,我们学习了Java的类加载过程,类加载器以及Java中加载字节码的一些方法,其中介绍了TemplatesImpl,TemplatesImpl是一个可以加载字节码的类,通过调用其newTransformer()方法,即可执行这段字…

钨酸铵溶液净化除钾钠杂质

钨酸铵溶液的主要用途包括制造三氧化钨、蓝色氧化钨、偏钨酸铵及其他钨化合物,以及作为石油化工行业的添加剂‌‌ 制造其他钨化合物: 钨酸铵溶液可以用于制造三氧化钨或蓝色氧化钨,这些化合物进一步用于生产金属钨粉。金属钨粉是制造钨条、钨…

线程安全的单例模式

单列模式是校考中最常考的设计模式之一 啥是设计模式? 设计模式就好比好比向其中的“棋谱”,红方当头炮,黑方马来跳。针对红方的一些走法黑方有一些固定的套路。按照套路来走局势就不会吃亏。 软件开发中有很对常见的“问题场景‘&#xff1a…