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

3.2.用户空间客体管理器

SELinux体系结构的一个非常强大的特征就是,它不仅能应用到用户空间资源也能应用到内核资源。的确,他来源于对微内核的研究,在微内核中,大多数资源都是被用户空间服务器管理的。在Linux中能够对资源进行强制访问控制的用户空间服务器的例子有X服务和数据库服务。这些服务器都提供强制安全所能提供的抽象资源。这一节提到了两种SELinux体系结构支持的用户空间服务器。

3.2.1 内核对用户空间客体管理器的支持

SELinux对用户空间客体支持的一个简单的方式就是直接通过内核安全服务器,正如下面这个图表展示的:

这里写图片描述



在这种方法下,用户空间客体管理器和内核客体管理的行为是非常像的。内核安全服务包含整个安全策略,并且用户空间客体管理器一定要咨询内核来获取访问控制决定,两者主要的不同就是用户空间客体管理器不能使用内核的AVC(access vector cache)。每一个服务器都要有他们自己的,分离的AVC来存储他过去从内核请求来的决定。对于用户空间服务器来说,AVC的功能就是被包含在库libselinux中。

另外一个不同就是用户空间客体管理器没有LSM钩子,LSM钩子是内核空间的概念。然而,客体管理器在libselinux中的AVC有内核接口。AVC操纵缓存未命中并且代表客体管理器查询内核。

直白的说,这种支持用户空间客体管理器的方式有一些缺点。首先,为了使用类型强制策略,客体管理器必须要定义能够代表他们资源的客体类。例如,一个数据库服务器一定要定义包含数据库,表格,模式,实体等的客体类。对于内核资源,客体类是复杂的,并且和定义在SELinux的LSM模块头文件的硬编码类相符合。在策略中类定义的关系加上你这些内核编码导致了在用户空间策略和编码上不行的依赖关系。特别的,两个用户空间服务器一定要注意不要是用内核中的同一个客体类。内核没有为这种冲突提供解决办法。

这种方式的第二个缺点就是内核安全服务器为那些不在内核中的客体管理器中的客体类管理策略。这就增长了内核中和内核无关的抽象体的存储开销,并且会影响在AVC未命中的情况下,内核策略验证的开销。

3.2.2 策略服务器架构

为了解决用户空间客体服务器使用使用内核安全服务器的缺点和提高SELinux的安全性,一个正在进行的努力就是为用户空间客体管理器提供用户空间支持。这个项目有两个主要目标和一些第二目标。主要目标是:

  • 1:通过提供一个用户空间安全服务器来为用户空间客体管理器提供更好的支持,该安全服务器为用户的策略部分做出访问决定。
  • 2:通过构建一个策略管理服务器来为策略提供细粒度的访问控制,该策略管理服务器是一个用户空间客体管理器,他的客体类代表着策略部分。

全体上,这两个服务器和策略服务器是相关的。下面的这个图显示了策略服务器的架构。

这里写图片描述

在策略服务器架构中,整个系统策略的所有的操作和管理都是通过策略管理服务器(PMS)控制的。PMS是一个用户空间客体管理器,在PMS中,他创建了代表策略资源的客体类,并且对这些资源强制执行了一个更加细粒度的访问控制策略。这种特征为SELinux提供提供了非常重要的安全增强。在此之前,对策略的访问控制是一个要么有要么全无的议题。你要么可以写策略文件要么完全不能。伴随着PMS,你先在能够允许访问粗略部分并且限制对其他的访问。例如,SELinux策略能够允许用户管理工具添加用户和进行角色分配,但是,不能改变类型强制type规则。更好的是,你可以允许一个数据库服务器来改变和他的客体类和类型相关的TE策略,但不是内核中的那些。在内部,PMS被设计来使用SELinux最新的一个特征,可加载策略模块,这个会在后面的章节中描述。

PMS第二个主要的功能就是分离系统策略到内核和用户部分,并且分别将它们加载到内核安全服务器和用户空间安全服务器(USSS)。以这种方式,内核并不了解规则和客体类,仅仅对用户空间客体管理器具有重大意义。用户空间客体管理器咨询USSS而不是内核。为了策略更新和缓存相关性功能,在不同的用户空间客体管理器中的AVC向USSS注册(并不是内核)。

除了内核对用户空间资源的责任的去除和对策略管理更加细粒度的访问,策略服务器架构有更多优势。因为PMS是一个运行中的服务器,我们可以扩展他的接口来对分布式的策略管理允许远程的网络访问。PMS和USSS被设计来允许运行时客体类注册,打破了存在于内核中的用户空间客体管理器的编码依赖。两种方式的不同被libselinux对当前存在的工作提供向后兼容遮掩起来了。最终,PMS和USSS被设计成单独的服务,在没有另外一个的时候,运行一个或两个都被使用。例如,在一个细粒度策略访问控制是无用的系统中,USSS能够被单独使用来支持其他用户空间客体服务器。

转载于:https://www.cnblogs.com/bobo1223/p/7287547.html

相关文章:

  • Nginx的流媒体插件nginx-rtmp-module
  • iOS开发UITableView基本使用方法总结
  • centos6.5下postgres-XC集群安装与配置(有standby案例)
  • 最近用到Bootstrap Multiselect来详细了解一下
  • python特殊注释
  • MySql | 查询缓存笔记
  • 我的Android进阶之旅------FastJson的简介
  • WebX5 Data判断当前行的值是否改变,以及改变当前行的状态
  • AngularJS学习笔记
  • 前辈的Linux学习心得
  • mysql修改为utf8格式
  • python分析accesslog并排序
  • kali debian linux 的samba 共享设置
  • div如何居中
  • BestCoder Round #50 (div.1) 1001 Distribution money (HDU OJ 5364)
  • angular学习第一篇-----环境搭建
  • Python_OOP
  • Redis的resp协议
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 简单易用的leetcode开发测试工具(npm)
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 阿里云重庆大学大数据训练营落地分享
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #stm32驱动外设模块总结w5500模块
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)c52学习之旅-点亮LED灯
  • (十八)三元表达式和列表解析
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net MySql
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 受管制代码
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .考试倒计时43天!来提分啦!
  • @Autowired和@Resource装配
  • @Data注解的作用
  • @requestBody写与不写的情况
  • @Validated和@Valid校验参数区别
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [20171113]修改表结构删除列相关问题4.txt
  • [20180129]bash显示path环境变量.txt
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Google Guava] 2.1-不可变集合
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [iOS]让Xcode 4.2生成的app支持老的iOS设备(armv6)