当前位置: 首页 > news >正文

selinux讲解

Selinux讲解

1、selinux的概述

Selinux的历史

  • Linux安全性与windows在不开启防御措施的时候是一样的;
  • 同样是C2级别的安全防护
  • 安全级别评定:
    • D–>C1–>C2–>B1–>B2–>B3–>A1
      • D级,最低安全性
      • C1级,主存取控制
      • C2级,较完善的自主存取控制(DAC)
      • B1级,强制存取控制(MAC)
      • 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在不开启防御措施的时候是一样的&#xff1b;同样是C2级别的安全防护安全级别评定&#xff1a; D–>C1–>C2–>B1–>B2–>B3–>A1 D级&#xff0c;最低安全性C1级&#xff0c;主存取控制…...

【计算机网络】TCP底层设计交互原理

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

Kotlin1.8新特性

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

【Java8】

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

阿里 Java 程序员面试经验分享,附带个人学习笔记、路线大纲

背景经历 当时我工作近5年&#xff0c;明显感觉到了瓶颈期。说句不好听的成了老油条&#xff0c;可以每天舒服的混日子&#xff08;这也有好处&#xff0c;有时间准备面试&#xff09;。这对于个人成长不利&#xff0c;长此以往可能面临大龄失业。所以我觉得需要痛下决心改变一…...

十大算法基础——上(共有20道例题,大多数为简单题)

一、枚举&#xff08;Enumerate&#xff09;算法 定义&#xff1a;就是一个个举例出来&#xff0c;然后看看符不符合条件。 举例&#xff1a;一个数组中的数互不相同&#xff0c;求其中和为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&#xff1a;1018 Public Bike Management (30 分) Tags&#xff1a;dijkstra最短路径 DFS Difficulty&#xff1a;剧情模式 想流点汗 想流点血 死而无憾 Address&#xff1a;1018 Public Bike Managemen…...

SpringCloud————Eureka概述及单机注册中心搭建

Spring Cloud Eureka是Netflix开发的注册发现组件&#xff0c;本身是一个基于REST的服务。提供注册与发现&#xff0c;同时还提供了负载均衡、故障转移等能力。 Eureka组件的三个角色 服务中心服务提供者服务消费者 Eureka Server&#xff1a;服务器端。提供服务的注册和发现…...

原生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# 虽然产品表里没有替代型号&#xff0c;但是通过sql语句的raw()查询可以…...

Android 9.0 Settings 搜索功能屏蔽某个app

1.概述 在9.0的系统rom产品定制化开发过程中,在系统Settings的开发功能中,最近产品需求要求去掉搜索中屏蔽某个app的搜索,就是根据包名,不让搜索出某个app., 在系统setting中,搜索功能中,根据包名过滤掉某个app的搜索功能,所以需要熟悉系统Settings中的搜索的相关功能,…...

SQL性能优化的47个小技巧,果断收藏!

1、先了解MySQL的执行过程 了解了MySQL的执行过程&#xff0c;我们才知道如何进行sql优化。 客户端发送一条查询语句到服务器&#xff1b; 服务器先查询缓存&#xff0c;如果命中缓存&#xff0c;则立即返回存储在缓存中的数据&#xff1b; 未命中缓存后&#xff0c;MySQL通…...

SE | 哇哦!让人不断感叹真香的数据格式!~

1写在前面 最近在用的包经常涉及到SummarizedExperiment格式的文件&#xff0c;不知道大家有没有遇到过。&#x1f912; 一开始觉得这种格式真麻烦&#xff0c;后面搞懂了之后发现真是香啊&#xff0c;爱不释手&#xff01;~&#x1f61c; 2什么是SummarizedExperiment 这种cla…...

运行Qt后出现无法显示字库问题的解决方案

问题描述&#xff1a;运行后字体出现问题QFontDatabase: Cannot find font directory解决前提&#xff1a; 其实就是移植后字体库中是空的&#xff0c;字没办法进行显示本质就是我们只需要通过某种手段将QT界面中的字母所调用的库进行填充即可此处需要注意的是&#xff0c;必须…...

数据库浅谈之共识算法

数据库浅谈之共识算法 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是数据库浅谈系列&#xff0c;收录在专栏 DATABASE 中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些数据库领域相关的知识 &#x1…...

代码随想录算法训练营 || 贪心算法 455 376 53

Day27贪心算法基础贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。刷题或者面试的时候&#xff0c;手动模拟一下感觉可以局部最优推出整体最优&#xff0c;而且想不到反例&#xff0c;那么就试一试贪心。做题的时候&#xff0c;只要想清楚 局部最优 是什么&…...

PMP考前冲刺2.25 | 2023新征程,一举拿证

题目1-2&#xff1a;1.项目经理正在进行挣值分析&#xff0c;计算出了当前的成本偏差和进度偏差。发起人想要知道基于当前的绩效水平&#xff0c;完成所有工作所需的成本。项目经理应该提供以下哪一项数据?A.完工预算(BAC)B.完工估算(EAC)C.完工尚需估算(ETC)D.完工偏差(VAC)2…...

【自然语言处理】Topic Coherence You Need to Know(主题连贯度详解)

Topic Coherence You Need to Know皮皮&#xff0c;京哥皮皮&#xff0c;京哥皮皮&#xff0c;京哥CommunicationUniversityofChinaCommunication\ University\ of\ ChinaCommunication University of China 在大多数关于主题建模的文章中&#xff0c;常用主题连贯度&#xff…...

C++入门:模板

模板是泛型编程的基础&#xff0c;泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器&#xff0c;比如迭代器和算法&#xff0c;都是泛型编程的例子&#xff0c;它们都使用了模板的概念。每个容器都有一个单一的定义&#xff0c;…...

【MySQL】索引常见面试题

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

【Web逆向】万方数据平台正文的逆向分析(上篇--加密发送请求)—— 逆向protobuf

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

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...