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

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—1控制节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack离线Train版安装系列—10.控制节点-Heat服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack Victoria版——7.1控制节点-Neutron网络服务组件

7.1控制节点-Neutron网络服务组件 更多步骤:OpenStack Victoria版安装部署系列教程 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版 离线安装部署系列教程(全) OpenStack Train版 离线安装部署系列教程(全) 欢迎留言沟通,共同进步。 文章目录 一、创建n