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

RHCE: SELinux

一.SELinux

1.SELinux概述

SELinux Security-Enhanced Linux 的缩写,意思是安全强化的 linux.
SELinux 主要由美国国家安全局( NSA )开发,当初开发的目的是为了避免资源的误用
现在主要是通常用于实现强制访问控制(MAC),以增强系统的安全性

 2.SELinux的工作原理

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

1).SELinux的组成部分

主体( subject ):就是进程
目标( object ):被主体访问的资源,可以是文件、目录、端口等。
策略( policy): 由于进程与文件数量庞大,因此 SELinux 会依据某些服务来制定访问安全策略。
安全上下文( security context):主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须 一致才能够顺利访问。
注: 最终文件的成功访问还是与文件系统的 rwx 权限设置有关 。

2) 策略

目前主要的策略有:
targeted :针对网络服务限制较多,针对本机限制较少,是默认的策略;
strict :完整的 SELinux 限制,限制方面较为严格。

3) .查看文件的安全上下文

[root@server SELinux]# ll -Z

4). 安全上下文的组成部分

安全上下文用冒号分为四个字段:
Identify:role:type:
身份标识(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来命名,数字代表灵敏 度的分级。数值越大、灵敏度越高。

5) 启动关闭SELinux 

方法一:

setenforce + 0/1     :     1 (打开) / 0(修改为宽容模式,暂时关闭)

方法二:

[root@server SELinux]# vim /etc/selinux/config

 

可以将enforcing 修改为:

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

 

6). 修改安全上下文

1. 修改

chcon [-R] [-t type] [-u user] [-r role] 文件
-R :连同该目录下的子目录也同时修改;
-t :后面接安全上下文的类型字段;
-u :后面接身份识别;
-r :后面接角色
chcon [-R] --reference = 范例文件 --> 将文件的安全上下文按照范例文件修改

2.恢复默认安全上下文

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

3. 查看与修改默认的安全上下文

查看:

semanage login|user|port|interface|fcontext|translation -l
修改:
semanage fcontext - {a|d|m} [-frst] file_spec
-l 为查询;
-a :增加一些目录的默认安全上下文的设置;
-m :修改;
-d :删除。

 


http://www.kler.cn/a/420729.html

相关文章:

  • 为什么编程语言会设计不可变的对象?字符串不可变?NSString *s = @“hello“变量s是不可变的吗?Rust内部可变性的意义?
  • HTML5系列(9)-- Web Components
  • 人机交互中的状态交互、趋势交互
  • 面试题-RocketMQ的基本架构、支持的消息模式、如何保证消息的可靠传输
  • Ubuntu WiFi检测
  • rest-assured multiPart上传中文名称文件,文件名乱码
  • 力扣第81题 搜索旋转排序数组 II
  • SHELL脚本2(Linux网络服务器 23)
  • 如何运用Java爬虫获得1688商品详情数据
  • 架构03-事务处理
  • YunSDR通信小课堂-10
  • 扩展欧几里得——acwing
  • dify接入ollama模型报错:max retries exceeded with url
  • Java的反射(Reflection)
  • AWTK fscript 中的 串口 扩展函数
  • Linux:systemd进程管理【1】
  • 如何在vue中禁用eslint检查?
  • Nextjs 前端设置正向代理 解决 跨域问题
  • GaussDB(类似PostgreSQL)常用命令和注意事项
  • springboot整合flowable工作流
  • 入门算法 二 递归
  • 用postgresql实现数组中的模糊字符串查询
  • 【C++】程序流程控制(中)
  • Linux系统 进程
  • 大模型开发和微调工具Llama-Factory-->安装
  • Unity下载文件断点续下