没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SELinux 概述
SELinux 使用了分级的强制访问控制,是Linux 内核的重要安全措
施 。 SELinux 的 安 全 策 略 工 具 可 从
http://www..com/doc/562590440.html,/projects 下载。本章分析
了 SELinux 的安全机制,介绍了安全策略配置语言、内核策略库的结
构,简述了 SELinux 内核模块的实现,还分析了用户空间的客体管理
器。
3.1 SELinux 概述
SELinux 是安全增强了的 Linux,是 Security-enhanced Linux的
简写,SELinux 改进了对内核对象和服务的访问控制,改进了对进程
初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文
件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的
访问控制。
早期的 Linux 内核只提供了经典的 UNIX 自主访问控制(root 用
户,用户 ID,模式位安全机制),以及部分地支持了 POSIX.1e 标准
草案中的 capabilities 安全机制,这对于 Linux 系统的安全性是不够
的 , NSA ( the National Security Agency ) 和 SCC ( Secure
Computing Corporation)共同开发了强大的基于类型加强( Type
Enforcement)的强制访问控制(mandatory access control,简称
MAC)机制,提供了动态的安全策略机制。
Linux 内核增加了一个通用的安全访问控制框架,它通过 hook 函
数来控制程序的执行,这个框架就是 Linux 安全模块( LSM),在
LSM 上可使用各种安全控制机制(如:Flask 机制)来实现对程序的控
制。
SELinux 应用了类型加强(Type Enforcement,TE)和基于角色
访问控制(role-based access control,RBAC)技术。
TE 给每个主体(进程)和系统中的客体定义了一个类型,这些类
型定义在 SELinux 的安全策略文件中,以安全标签形式存放在文件本
身的扩展属性(extended attributes,简称 xattrs)里。
当一个类型与一个进程相关时,这个类型称为域(domain),例
如:后台进程 httpd 的域为 httpd_t。
主体(subject)对客体(object)的操作在 SELinux 中默认下是
不允许的,而由策略定义允许的操作。TE 使用主体的域和客体类型从
策略文件中查找操作许可。例如:策略中的一条规则如下:
allow httpd_t net_conf_t:file { read getattr lock ioctl };
这条规则表示 httpd_t 域对 net_conf_t 类型客体的文件有―{}‖中
所表示的操作权限。 SELinux 的访问控制规则存放在安全策略文件中,
策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描
述,由编程者创建和维护。源代码经策略配置工具编译后生成二进制
文件。二进制策略被装载到内核空间,形成在内存中的策略库及缓存,
内核就可以使用访问控制规则了。
SELinux 可以实现非常小颗粒的访问控制,这些细小颗粒的访问
控制也造成了安全策略的复杂性。
Linux 内核的 SELinux 安全体系由 Flask 和 LSM 框架共同组成,
LSM 是由 hook 函数组成的安全控制框架,Flask 框架将 SElinux 的策
略规则转换成访问控制许可。
在安全策略配置语言中经常用到的名称术语说明如下。
subject 主体,常指一个进程
object 客体,常指一个文件
object class 客体的类
permission 许可
context 上下文
user 用户
role 角色
type 类型
Type Attributes 类型属性
Type Enforcement 类型增强
dormain 域,它是一个进程的类型
source type 源类型
target type 目标类型
labeling 标识
access vector cache (A VC) 访问向量缓存
access decision 访问决策
3.1.1 Linux 与 SELinux 在安全管理上的区别
在传统的 Linux 自由访问控制(Discretionary Access Controls,
DAC)之后,SELinux 在内核中使用强制访问控制机制(MAC)检查
允许的操作。
在 DAC 下,文件客体的所有者提供了客体上的潜在风险控制。用
户可以通过错误配置的 chmod 命令和一个非期望的访问权限传递,暴
露一个文件或目录给一个恶意信任者。这个用户启动的进程,如:CGI
脚本,可在这个用户拥有的文件做任何的操作。
DAC 实际上仅有两个主要的用户分类:管理者和非管理者。为了
解决权限分级,它使用了访问控制列表( access control lists,简称
ACL),给非管理者用户提供不同的权限。而 root 用户对文件系统有
完全自由的控制权。
MAC 访问控制框架可以定义所有的进程(称为主体)对系统的其
他部分(如:文件、设备、 socket、端口和其他进程,它们被称为客
体或目标对象)进行操作的权限或许可。这些许可由进程和客体的安
全策略来定义,通过内核实现控制。这种方式可给一个进程仅授予操
作所需要的权限,这遵循了最小权限原则。在 MAC 下,即使用户用
chmod 暴露了他们的数据,但进程还是无法修改在策略中没有许可的
文件。
DAC 和 MAC 分别使用自己的访问控制属性,两者独立,但都必
须通过权限检查。它们的区别有以下二个:
1.在主体的访问控制上:
DAC:真实有效的用户和组 ID
MAC:安全上下文(user:role:type)
DAC 和 MAC 的 UID 是独立的。
2.在客体的访问控制上:
DAC:(文件)访问模式(rwx r-x r-x)和用户及组 ID
MAC:安全上下文(user:role:type)
3.1.2 Flask 安全框架概述
1.Flask 框架对操作许可的判定过程
图 3-1 描述了 Flask 框架,图中,一个主体进程对系统中的客体
(如:设备文件)进行操作,如:读写文件。这个操作通过 DAC 权限
检查之后,再进行 SELinux 的权限检查。在 DAC 检查中,主体通过基
于 ACL 常规文件权限获得了对客体的操作许可。SELinux 权限检查的
过程如下:
策略强制服务器(policy enforcement server)从主体和客体收
集安全上下文,并发送安全上下文标签对给安全服务器( security
server),安全服务器负责产生策略的决策。
策略强制服务器首先检查 A VC,如果 A VC 有高速缓存的策略决
策,它返回决策给策略强制服务器。如果没有,它转向到安全服务器,
安全服务器使用系统初始化期间装载到内核的二进制策略作出决策,
将决策放到 A VC 的 cache 中进行缓存,并将决策返回给策略强制服
务
器。
如果决策为允许操作,则主体对客体进行操作,否则,操作被禁
止 , 禁 止 操 作 信 息 被 记 录 到 log 文 件 , log 文 件 一 般 为
/var/log/messages。
图 3-1 Flask 框架
安全服务器产生策略决策的同时,强制服务器处理任务的其他部
分。从这个角度来看,强制服务器部分可以看作客体管理器,客体管
理包括用安全上下文件标识客体、管理内存中的标签、管理客户端和
服务器的标识行为。
2.Flask 框架组成说明
Flask 安全体系结构由客体管理器和安全服务器组成。客体管理器
实施安全策略的判定结果,安全服务器作出安全策略的判定。
Flask 安全体系结构提供从安全服务器检索访问、标记和多例化判
定的接口。访问判定指主体对客体操作的一个权限是否得到批准。标
记指分配给一个客体的安全属性标签。多例化判定指一个特定的请求
应该从多例化资源中选取哪一个。
Flask 安全体系结构还提供一个访问向量缓存(A VC)模块,该模
块允许从客体管理器缓存中直接取出缓存的判定结果,以提高执行速
度。
Flask 框架的安全服务器的安全策略由四个子策略组成:多级安全
(MLS)策略、类型加强(TE)策略、基于标识的访问控制(IBAC)
策略和基于角色的访问控制(RBAC)策略。安全服务器提供的访问判
定必须满足每个子策略的要求。
安全服务器定义了一个由类型加强( TE)策略、基于角色的访问
控制(RBAC)策略和多级安全(MLS)策略组合成的策略决策系统。
其中,TE 和 RBAC 策略是安全策略的必要部分,MLS 策略是可选的,
当内核配置选项 CONFIG_FLASK_MLS 打开时,系统提供 MLS 策略支
持。
Flask 体系结构为安全标记定义了两个独立于策略的数据类型:安
全上下文(context)和安全标识符( SID)。安全上下文是由可变长
字符串表示的安全标记,存在于文件的扩展属性中。
SID 是被安全服务器映射到对应安全上下文的整数。Flask 客体管
理器负责将安全标签绑定到客体上、绑定 SID 到内核对象上。
一个安全上下文(或称为标签)由用户 ID、角色、类型和可选的
MLS 分级属性或分类属性组成。角色仅与进程相关,因而文件安全上
下文有一个通用的 object_r 的角色。安全服务器仅为安全上下文提供
SID。
SELinux 系统提供一个与安全服务器相配套的安全策略配置语言,
该语言用于对安全服务器中安全策略的配置进行描述。策略配置语言
描述的规则策略存于策略文件中,策略文件源代码由工具编译成二进
制策略文件,安全服务器在引导时读取二进制形式策略文件,形成策
略库。
3.MLS 分级机制
剩余32页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- springboot项目基于Java的美妆购物网站的设计与实现.zip
- 基于python+Django+Neo4j的中医药知识图谱与智能问答系统设计与实现(源码+论文报告+说明文档).zip
- springboot项目基于Java的企业OA管理系统的设计与实现.zip
- springboot项目基于JAVA的社团管理系统的设计与实现.zip
- springboot项目基于JAVA的民族婚纱预定系统的设计与实现.zip
- 基于蒙特卡洛模拟的大规模电动车充电模型 在matlab中用蒙特卡洛算法对电动汽车充电负荷进行模拟,可自己修改电动汽车数量,复现 动汽车大规模入网充电时会导致系统内负载峰值拔高的问题,和分布式电源一样
- springboot项目基于java的校园服务平台设计与开发.zip
- springboot项目基于Java的小区物业智能卡管理的设计与实现.zip
- springboot项目基于Java的医院急诊系统.zip
- springboot项目基于Java的银行账目账户管理系统的设计与实现.zip
- springboot项目基于JS的个人云盘管理系统的设计与实现.zip
- springboot项目基于java无人超市管理系统.zip
- springboot项目基于Mysql的商业辅助决策系统的设计与实现.zip
- springboot项目基于spring boot的小型诊疗预约平台的设计与开发.zip
- springboot项目基于springboot-vue的毕业论文管理系统.zip
- Java2025年最全面试题汇总
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功