selinux讲解
Selinux讲解
1、selinux的概述
Selinux的历史
- Linux安全性与windows在不开启防御措施的时候是一样的;
- 同样是C2级别的安全防护
- 安全级别评定:
- D–>C1–>C2–>B1–>B2–>B3–>A1
- D级,最低安全性
- C1级,主存取控制
- C2级,较完善的自主存取控制(DAC)
- B1级,强制存取控制(MAC)
- B2级,良好的结构化设计、形式化安全模型
- B3级,全面的访问控制、可信恢复
- A1级,形式化认证
- D–>C1–>C2–>B1–>B2–>B3–>A1
selinux的实现模型:
Selinux创造者:美国国家安全局(NationalSecurityAgency,简写为NSA)
- 主题:一个进程访问一个文件
- 相当于这个进程就是主题
- 客体:被进程访问的文件
- 规则体系:
- 强制访问规则
- 要求:防篡改、无旁路、可验证
Selinux在Linux中的地位变化
- 需要手动加载的一个外部模块
- 直接写到内核的一个模块
- 成为一部分Linux发行版本的内核中的一部分
- 特性:
- 提高了 Linux 系统内部的安全等级,对于进程和用户只赋予最小权限,并且防止了权限升级即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响
selinux的原理理解
- 类型强制访问控制:
- 主体和客体是存在一定的联系的
- 例如–>猫吃猫粮,狗吃狗粮–>不能互吃
- 多类型强制
- 如果规则库允许上面的例子是可以互吃的;
2、安全上下文介绍
安全上下文的定义
- 所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的;
- 在SELiux中访问控制属性叫做安全上下文;
- 所有客体(文件、进程间通讯通道、套接字、网络主机等》和主体(进程》都有与其关联的安全上下文;
- 一个安全上下文由三部分组成:
- 用户;
- 角色;
- 类型标识符;
- 安全上下文的格式:用户:角色:类型
chcon命令
- 作用:配置安全上下文的命令
- 语法:chcon +选项 【-t 类型】 【-u 用户】 【-r 角色】+文件
- 选项:
- -R:连同该目录下的此目录也同时修改
- -t:指定安全性文本的类型字段
- -u:指定身份识别–>system_u
- -r:后面跟的是角色–>system_r
restorecon命令
- 作用:还原成原有的selinux type
- 语法: restorecon +【RV】 文件或者目录
- 选项:
- -R:连同此目录一起修改(递归修改)
- -v:显示过程;
setenforce命令
- 作用:设置selinux的开关
- 语法:selinux 0|1
- 0:代表关闭
- 1:代表开启
getenforce命令
- 作用:查看selinux的状态
- 语法:selinux
实验演示selinux
#永久修改selinux关闭的文件
[root@node1 ~]# vim /etc/selinux/config #这里就注意一个选项
SELINUX=enforcing#三种模式-->enforcing:打开模式-->permissive:可以调试的模式-->disabled:关闭模式
#selinux的开通与关闭和配置文件有关系-->如果打开了selinux的话,开机会明显变慢;#如果disabled的状态,命令是无法调用内核的selinux模块的;#安装一个httpd服务
[root@node1 ~]# echo 11111 > /var/www/html/index.html#然后修改主页
[root@node1 ~]# echo 11111 > /var/www/html/index.html#然后启动
[root@node1 ~]# service httpd start#开启selinux
[root@node1 ~]# setenforce 1
#这时候可以直接访问-->可以访问到自己看到的页面
http://192.168.75.11/#然后把httpd服务的默认页面修改到/www#创建一个/www-->创建默认页面
[root@node1 ~]# mkdir /www
[root@node1 ~]# echo 222222222 >/www/index.html
[root@node1 ~]# chmod 777 /www/index.html #直接关闭iptables
[root@node1 ~]# service iptables stop
#以上的配置足以说面正常的安全防护都已经全部开了-->为了看selinux的效果#然后直接修改httpd的配置文件-->直接让默认页面去到-->/www/index.html
[root@node1 ~]# vim /etc/httpd/conf/httpd.conf
................292 DocumentRoot "/www" #修改了默认路径.......317 <Directory "/www">
#重启-->然后访问
[root@node1 ~]# service httpd restart#访问会直接跳转到apache的默认页面
http://192.168.75.11/#从这里可以说明-->防火墙关了、权限关了;-->但是任然看不到就是selinux的问题#查看文件的角色和类型-->很明显不相同
[root@node1 ~]# ll -Z /var/www/html/index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html
[root@node1 ~]# ll -Z /www/index.html
-rwxrwxrwx. root root unconfined_u:object_r:default_t:s0 /www/index.html#修改文件的用户角色类型
[root@node1 ~]# chcon -t httpd_sys_content_t -R /www/#再次访问-->访问成功了#关闭selinux-->还原文件
[root@node1 ~]# setenforce 0
[root@node1 ~]# restorecon -Rv /www/
restorecon reset /www context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:default_t:s0
restorecon reset /www/index.html context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:default_t:s0
3、selinux的布尔值
Managing Boole(管理Selinux布尔值):
- Selinux布尔值就相当于一个开关;精确控制SElinux对某个服务的某个选项的保护;
#查看selinux对服务的文件的布尔值
[root@localhost ~]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
getsebool -a
- 作用:命令列出系统中可用的Selinux布尔值
- 语法:getsebool+选项
- 选项:
- -a:查看全部
setsebool命令 :
- 作用:用于改变selinux的布尔值
- 语法:sesebool+选项
#开启samba家目录是否能访问的控制#安装samba
[root@node1 ~]# yum -y install samba#创建两个用户
[root@node1 ~]# useradd zhangsan
useradd: user 'zhangsan' already exists
[root@node1 ~]# echo 123456 | passwd --stdin zhangsan
[root@node1 ~]# useradd lisi
useradd: user 'lisi' already exists
[root@node1 ~]# echo 123456 | passwd --stdin lisi
Changing password for user lisi.
passwd: all authentication tokens updated successfully.#把这两个用户转换到samba用户
[root@node1 ~]# pdbedit -a zhangsan
new password:
retype new password:
[root@node1 ~]# pdbedit -a lisi#创建samba的共享目录
[root@node1 ~]# mkdir /samba
[root@node1 ~]# chmod 777 /samba/#修改samba的配置文件
[root@node1 ~]# vim /etc/samba/smb.conf#指定认证的等级security = userpassdb backend = tdbsam#在末行添加共享规则
[public]
comment = Public Stuff
path = /samba
public = yes
writable = yes#启动samba-->创建文件
[root@node1 ~]# service smb start
Starting SMB services: [ OK ]
[root@node1 ~]# touch /samba/{1..5}.txt
[root@node1 ~]# chmod 777 -R /samba/*
#开启selinux
[root@node1 ~]# setenforce 1#这里使用-->另外一台主机登陆samba
[root@node2 ~]# smbclient -U zhangsan //192.168.75.11/public
Enter zhangsan's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]#这里查看发现没有文件
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*#如果想看的话还是得修改samba的文件类型修改
[root@node1 ~]# ll -Z /samba/
-rwxrwxrwx. root root unconfined_u:object_r:default_t:s0 1.txt
..........#直接开启
[root@node1 ~]# chcon -t samba_share_t -R /samba/#再次访问就成功了
[root@node2 ~]# smbclient -U zhangsan //192.168.75.11/public
Enter zhangsan's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \> ls. D 0 Tue Feb 7 04:53:23 2023.. DR 0 Tue Feb 7 04:48:30 2023#查看selinux的布尔值
[root@node1 ~]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off#这里可以实现上传和下载隔离需求
#设置布尔值:
[root@node1 ~]# setsebool -P samba_export_all_ro on
相关文章:
selinux讲解
Selinux讲解 1、selinux的概述 Selinux的历史 Linux安全性与windows在不开启防御措施的时候是一样的;同样是C2级别的安全防护安全级别评定: D–>C1–>C2–>B1–>B2–>B3–>A1 D级,最低安全性C1级,主存取控制…...

【计算机网络】TCP底层设计交互原理
文章目录1.TCP底层三次握手详细流程2.TCP洪水攻击介绍和ss命令浅析3.Linux服务器TCP洪水攻击入侵案例4.TCP洪水攻击结果分析和解决方案5.TCP底层四次挥手详细流程1.TCP底层三次握手详细流程 TCP的可靠性传输机制:TCP三次我手的流程 一次握手:客户端发送一…...

Kotlin1.8新特性
Kotlin1.8.0新特性 新特性概述 JVM 的新实验性功能:递归复制或删除目录内容提升了 kotlin-reflect 性能新的 -Xdebug 编译器选项,提供更出色的调试体验kotlin-stdlib-jdk7 与 kotlin-stdlib-jdk8 合并为 kotlin-stdlib提升了 Objective-C/Swift 互操作…...

【Java8】
1、接口中默认方法修饰为普通方法 在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的。 接口定义方法: public抽象方法需要子类实现 接口定…...

阿里 Java 程序员面试经验分享,附带个人学习笔记、路线大纲
背景经历 当时我工作近5年,明显感觉到了瓶颈期。说句不好听的成了老油条,可以每天舒服的混日子(这也有好处,有时间准备面试)。这对于个人成长不利,长此以往可能面临大龄失业。所以我觉得需要痛下决心改变一…...

十大算法基础——上(共有20道例题,大多数为简单题)
一、枚举(Enumerate)算法 定义:就是一个个举例出来,然后看看符不符合条件。 举例:一个数组中的数互不相同,求其中和为0的数对的个数。 for (int i 0; i < n; i)for (int j 0; j < i; j)if (a[i] …...
【PAT甲级题解记录】1018 Public Bike Management (30 分)
【PAT甲级题解记录】1018 Public Bike Management (30 分) 前言 Problem:1018 Public Bike Management (30 分) Tags:dijkstra最短路径 DFS Difficulty:剧情模式 想流点汗 想流点血 死而无憾 Address:1018 Public Bike Managemen…...

SpringCloud————Eureka概述及单机注册中心搭建
Spring Cloud Eureka是Netflix开发的注册发现组件,本身是一个基于REST的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力。 Eureka组件的三个角色 服务中心服务提供者服务消费者 Eureka Server:服务器端。提供服务的注册和发现…...
原生django raw() 分页
def change_obj_to_dict(self,temp):dict {}dict["wxh_name"] temp.wxh_namedict["types"] temp.typesdict["subject"] temp.subjectdict["ids"] temp.ids# 虽然产品表里没有替代型号,但是通过sql语句的raw()查询可以…...
Android 9.0 Settings 搜索功能屏蔽某个app
1.概述 在9.0的系统rom产品定制化开发过程中,在系统Settings的开发功能中,最近产品需求要求去掉搜索中屏蔽某个app的搜索,就是根据包名,不让搜索出某个app., 在系统setting中,搜索功能中,根据包名过滤掉某个app的搜索功能,所以需要熟悉系统Settings中的搜索的相关功能,…...

SQL性能优化的47个小技巧,果断收藏!
1、先了解MySQL的执行过程 了解了MySQL的执行过程,我们才知道如何进行sql优化。 客户端发送一条查询语句到服务器; 服务器先查询缓存,如果命中缓存,则立即返回存储在缓存中的数据; 未命中缓存后,MySQL通…...

SE | 哇哦!让人不断感叹真香的数据格式!~
1写在前面 最近在用的包经常涉及到SummarizedExperiment格式的文件,不知道大家有没有遇到过。🤒 一开始觉得这种格式真麻烦,后面搞懂了之后发现真是香啊,爱不释手!~😜 2什么是SummarizedExperiment 这种cla…...
运行Qt后出现无法显示字库问题的解决方案
问题描述:运行后字体出现问题QFontDatabase: Cannot find font directory解决前提: 其实就是移植后字体库中是空的,字没办法进行显示本质就是我们只需要通过某种手段将QT界面中的字母所调用的库进行填充即可此处需要注意的是,必须…...

数据库浅谈之共识算法
数据库浅谈之共识算法 HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是数据库浅谈系列,收录在专栏 DATABASE 中 😜😜😜 本系列阿呆将记录一些数据库领域相关的知识 …...
代码随想录算法训练营 || 贪心算法 455 376 53
Day27贪心算法基础贪心的本质是选择每一阶段的局部最优,从而达到全局最优。刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。做题的时候,只要想清楚 局部最优 是什么&…...
PMP考前冲刺2.25 | 2023新征程,一举拿证
题目1-2:1.项目经理正在进行挣值分析,计算出了当前的成本偏差和进度偏差。发起人想要知道基于当前的绩效水平,完成所有工作所需的成本。项目经理应该提供以下哪一项数据?A.完工预算(BAC)B.完工估算(EAC)C.完工尚需估算(ETC)D.完工偏差(VAC)2…...

【自然语言处理】Topic Coherence You Need to Know(主题连贯度详解)
Topic Coherence You Need to Know皮皮,京哥皮皮,京哥皮皮,京哥CommunicationUniversityofChinaCommunication\ University\ of\ ChinaCommunication University of China 在大多数关于主题建模的文章中,常用主题连贯度ÿ…...
C++入门:模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,…...

【MySQL】索引常见面试题
文章目录索引常见面试题什么是索引索引的分类什么时候需要 / 不需要创建索引?有什么优化索引的方法?从数据页的角度看B 树InnoDB是如何存储数据的?B 树是如何进行查询的?为什么MySQL采用B 树作为索引?怎样的索引的数…...

【Web逆向】万方数据平台正文的逆向分析(上篇--加密发送请求)—— 逆向protobuf
【Web逆向】万方数据平台正文的逆向分析(上篇--加密发送请求)—— 逆向protobuf声明一、了解protobuf协议:二、前期准备:二、目标网站:三、开始分析:我们一句句分析:先for循环部分:后…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...