RH134-第二十一节-selinux对文件的控制

2023-12-28 08:58

本文主要是介绍RH134-第二十一节-selinux对文件的控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SELinux 的运作模式

    主体 (Subject):SELinux 主要想要管理的就是程序,因此你可以将『主体』跟 process 划上等号;

    目标 (Object): 主体程序能否存取的『目标资源』一般就是文件系统。因此这个目标项目可以等文件系统划上等号;

    政策 (Policy): 由于程序与档案数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。在目前的 CentOS 6.x 里面仅有提供两个主要的政策如下,一般来说,使用预设的 target 政策即可。
        targeted:针对网络服务限制较多,针对本机限制较少,是预设的政策;
        mls:完整的 SELinux 限制,限制方面较为严格。

   安全性本文 (security context): 我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了要符合政策指定之外,主体与目标的安全性本文必须一致才能够顺利存取。 这个安全性本文 (security context) 有点类似文件系统的 rwx 啦!安全性本文的内容与设定是非常重要的! 如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),当然就会一直出现『权限不符』的错误讯息了!

(1) 主体程序必须要通过 SELinux 政策内的规则放行后,就可以与目标资源进行安全性本文的比对
(2)若比对失败则无法存取目标,若比对成功则可以开始存取目标。


安全性本文 (Security Context)



身份识别 (Identify): 相当于账号方面的身份识别!主要的身份识别则有底下三种常见的类型:
 root:表示 root 的账号身份,如同上面的表格显示的是 root 家目录下的数据啊!
 system_u:表示系统程序方面的识别,通常就是程序啰;
  user_u:代表的是一般使用者账号相关的身份。

角色 (Role): 透过角色字段,我们可以知道这个数据是属于程序、档案资源还是代表使用者。一般的角色有:
 object_r:代表的是档案或目录等档案资源,这应该是最常见的啰;
  system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r 喔!

类型 (Type): 在预设的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型 (type) 字段! 基本上,一个主体程序能不能读取到这个档案资源,与类型字段有关!而类型字段在档案与程序的定义不太相同,分别是:
type:在档案资源 (Object) 上面称为类型 (Type);
domain:在主体程序 (Subject) 则称为领域 (domain) 了!
domain 需要与 type 搭配,则该程序才能够顺利的读取档案资源啦!


SELinux 的启动、关闭与观察

查看并永久修改selinux的启动和政策






  注:如果由 enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他两个,那也必须要重新启动。

SELinux type 的修改

注:单纯的复制文件时,SELinux 的 type 字段是会继承目标目录的(即会变成和所到的目录的一样); 如果是移动,那么连同 SELinux 的类型也会被移动过去。



    复原成原有的 SELinux type:


默认目录的安全性本文查询与修改

  semanage(需要安装:yum install policycoreutils-python):



    利用 semanage 设定 /srv/vbird 目录的默认安全性本文为 public_content_t(修改的就是默认值):



政策查询:seinfo(需要安装:yum install setools-console



政策为targeted时,针对httpd制定的规则为:


如果你想要找到有 httpd 字样的安全性本文类别时, 就可以使用『 seinfo -t | grep httpd 』来查询了!如果查询到相关的类别或者是布尔值后,想要知道详细的规则时, 就得要使用 sesearch 这个指令了!
    sesearch:



布尔值的查询与修改:(getsebool,setsebool)







整篇最重要的内容

setroubleshoot --> 错误讯息写入 /var/log/messages
需要软件:setroublshoot 与 setroubleshoot-server
原本的 SELinux 信息本来是以两个服务来记录的,分别是 auditd 与 setroubleshootd。既然是同样的信息, 因此 CentOS 6.x 将两者整合在 auditd 当中啦!所以,并没有 setroubleshootd 的服务存在了喔!因此, 当你安装好了 setroubleshoot-server 之后,请记得要 重新启动 auditd,否则 setroubleshootd 的功能不会被启动的。

演示:




让 setroubleshoot 主动的发送产生的信息到我们指定的 email:



SELinux 错误克服的总结:
1、在服务与 rwx 权限都没有问题,却无法成功的使用网络服务时;
2、先使用 setenforce 0 设定为宽容模式;
3、再次使用该网络服务,如果这样就能用,表示 SELinux 出问题,请往下继续处理。如果这样还不能用,那问题就不是在 SELinux 上面!请再找其他解决方法,底下的动作不适合你;
4、分析 /var/log/messages 内的信息,找到 sealert -l 相关的信息并且执行;
5、找到 Allow Access 的关键词,照里面的动作来进行 SELinux 的错误克服;
6、处理完毕重新 setenforce 1 ,再次测试网络服务吧!

##selinux:
selinux
是进程,文件等权限设置依据的一个内核模块。

   selinux
的启动关闭与查看:
   模式:vim/etc/sysconfig/selinux
     enforceing:强制模式

     permissive:警告模式
     diabled:关闭,selinux并没有实际运行

   查看:

     getenforce        ##显示selinux模式
     setenforce 0|1    ##更改selinux模式
     0:表示permissive警告模式
     1:表示enforceing强制模式
  

 显示进程的selinux的安全上下文:
     ps axuZ |  grep vsftpd   ##-Z参数可以查询进程的安全上下文

测试:

    touch file
    mv file /var/ftp/pub
   1)enforceing
模式
     ls ##不能看到从别处转移过来的文件
  

2)permissive模式
     ls ##可以看到从别处转移过来的文件

     ls -Z ##查看文件selinux的安全上下文,本地文件和从别处转移过来的文件的selinux安全上下文是不一样的



    chcon -t public_content_t/var/ftp/pub/file    更改文件的selinux安全上下文,与本地文件一样,此时在enforcing模式下也可以看到从别处移过来的文件


  

1.selinux的永久设定:
selinux=Enforcing:
   mkdir /westos                 
   touch /westos/file{1..10}      
   ls /westos/
   vim /etc/vsftpd/vsftpd.conf          ##将匿名用户的家目录设置为/westos:
anon_root=/westos

   systemctl restart vsftpd.service     ##重启服务

  lftp 172.25.254.122                 ##匿名用户登陆的家目录/westos,用ls进行查看看不到之前新建的10个文件
   ps auxZ | grep vsftpd                ##显示vsftpd进程的安全上下文
   ls -lZ /var/ftp                      ##查看/var/ftp文件selinux的安全上下文
   ls -Zd /westos/                      ##查看/westos目录selinux的安全上下文
   semanage fcontext -l | grepwestos      ##查询/westos的默认安全上下文设置
   semanage fcontext -l | grep/var/ftp/   ##查看/var/ftp文件的默认安全上下文设置
   semanage fcontext -a -tpublic_content_t '/westos(/.*)?'  ##永久更改目/westos的selinux安全上下文和/var/ftp中的文件一样
  semanage fcontext -l | grep /var/ftp/   
   semanage fcontext -l | grepwestos
   ls -Zd /westos/
   restorecon -RvvF /westos/           ##
恢复更改后的/westos的selinux的安全上下文
   lftp 172.25.254.122         
   touch /westos/file11                ##
在目录中新建文件
   lftp 172.25.254.122                 ##用ls进行查看可以看到新建的file11文件,证明新建文件的安全上下文和目录保持一致
   ls -Z /westos/                      ##查询新建文件之后的目录中所有文件的安全上下文,
   ##目录的安全上下文被更改之后,目录下新建文件的安全上下文和目录保持一致



 



selinux=Permissive时:


  ##在selinux=Permissive时,不用修改/westos的安全上下文,用lftp连接之后直接可以看到/westos下建立的文件
.
 
selinux默认关闭服务开启:(selinux内核防火墙在enforcing状态下会自动关闭一些不安全的服务)

   getenforce                                 ##查询selinux状态
   vim /etc/vsftpd/vsftpd.conf                ##默认情况下本地用户具有写的权限

   lftp 172.25.254.122 -u student             ##student用户登陆,不能上传文件

   ls -ld /home/student/                      ##查询/home/student目录权限
   chmod u+w /home/student/                   ##给/home/student增加写的权限
   lftp 172.25.254.122 -u student             ##student用户登陆,增加权限后依然不能上传文件
   getsebool -a | grep ftp                    ##查看所有ftp服务设定状态
   setsebool -P ftp_home_dir 1                ##直接将设置 写入配置文件,修改之后会生效
   参数P必须是大写,否则命令无法执行
   getsebool -a | grep ftp                    ##检查是否开启
   lftp 172.25.254.122 -u student             ##student用户登陆,上传文件成功


   ##由于进程的文件数量庞大,因此selinux服务会依据某些服务来制定基本的访问安全性策略,这些策略里还会有详细的规则来制定不同的服务开放某些资源的访问与否。

这篇关于RH134-第二十一节-selinux对文件的控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/545472

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC