Linux安全访问控制模型应用及方案设计

zt371 发布于 2009/05/07 11:11
阅读 759
收藏 0

摘要:本文介绍了BLP、DTE和RBAC三种访问控制模型,并结合这三种安全策略模型,提出了一个安全系统的组成和功能的具体实现方案。
关键字:信息安全;访问控制模型;操作系统安全。
1.引言
本文通过研究安全操作系统的访问控制模型,结合国内、外的相关安全标准和已有的先进技术,将密码服务与高级别存取控制机制有机地结合起来,形成一个适应各类安全2级实用操作系统。该安全服务器将在Linux操作系统的基础上(目前Linux操作系统主要发行版本的安全性大致处于《TCSEC》标准[1,2] 的C2 级),参照GB/T 18336(等同采用CC标准)安全保证级别EAL4,开发符合GB 17859中规定的结构化保护级(相当于TCSEC中规定的B2级)功能要求的安全操作系统。
1. 安全策略访问控制模型
该类模型是从访问控制的角度描述安全系统,主要针对系统中主体对客体的访问及其安全控制。[2] 1.1 BLP模型
Bell&Lapadula(BLP)模型[3~5]­­­是由­­­­Bell和Lapadula于1973年提出并于1976年修定、整合和完善的安全模型,它是最典型的信息保密性多级安全模型,通常是处理多级安全信息系统的设计基础。
BLP模型的安全策略包括强制访问控制和自主访问控制两部分。强制访问控制中的安全特性,要求对给定安全级别的主体,仅被允许对同一安全级别和较低安全级别上的客体进行“读”,对给定安全级别上的主体,仅被允许向相同安全级别或较高安全级别上的客体进行“写”,任意访问控制允许用户自行定义是否让个人或组织存取数据。
BLP模型为通用的计算机系统定义了安全性属性,即以一组规则表示什么是一个安全的系统。其优点是这种基于规则的模型比较容易实现。但是它不能更一般地以语义的形式阐明安全性的含义。因此,这种模型不能解释主、客体框架以外的安全性问题,还不能较好的处理隐蔽通道的问题。
1.2 DTE模型
DTE (Domain and Type Enforcement)模型[5]是由O’Brien and Rogers于1991年提出的一种访问控制技术。它通过赋予文件不同的型(type)、赋予进程不同的域(domain)来进行访问控制,从一个域访问其他的域以及从一个域访问不同的型都要通过DTE策略的控制。
近年来DTE模型被较多的作为实现信息完整性保护的模型。该模型定义了多个域(Domain)和型(Type),并将系统中的主体分配到不同的域中,不同的客体分配到不同的型中,通过定义不同的域对不同的型的访问权限,以及主体在不同的域中进行转换的规则来达到保护信息完整性的目的。
DTE使域和每一个正在运行的进程相关联,型和每一个对象( e.g.文件、包)相关联。如果一个域不能以某种访问模式访问某个型,则这个域的进程不能以该种访问模式去访问那个型的对象。当一个进程试图访问一个文件时,DTE 系统的内核在做标准的系统许可检查之前,先做DTE许可检查。如果当前域拥有被访问文件所属的型所要求的访问权,那么这个访问得以批准,继续执行正常的系统检查。
1.3 RBAC模型
RBAC模型[5]是基于角色的访问控制模型。该模型主要用于管理特权,在基于权能的访问控制中实现职责隔离及极小特权原理。
RBAC包含以下基本要素:用户集(Users),主体进程集(Subjects),角色集(Roles),操作集(Operations),操作对象集(Objects),操作集和操作对象集形成一个特权集(Privileges);用户与主体进程的关系(subject_user),用户与角色的关系(user_role), 操作与角色的关系(role_operations), 操作与操作对象的关系(operation_object)。
通常subject_user是一个多对一的关系,它把多个主体进程映射到一个用户,这些进程都是替代该用户的主体进程;在本模型中它就是一个典型的多对一的关系。user_role可以是多对多的关系,但在本模型中它被简化为一对一的关系。role_operations是一个一对多的关系,它把一个角色映射到多个操作,是角色被授权使用的操作的集合;operation _object是一个一对多的关系,它把一个操作映射到多个操作对象,是操作被授权作用的操作对象集。
在本模型中,替代用户的主体进程可能只激活用户角色的被授权的操作的一部分,而且操作也可能仅作用在被授权作用的操作对象集的一个子集合上。在本系统中,将实现基于角色的授权和控制,支持角色互斥,不支持角色的继承,不支持同一个用户的多个角色。
2. 安全系统的设计
2.1 安全模型的设计
参照GB 17859中结构化保护级的安全功能特性要求,本系统中的安全服务器将遵循改进的BLP模型、DTE模型以及RBAC模型来实现系统的安全策略。其中,BLP模型是多级安全模型,保护信息的机密性;DTE模型是多域模型,保护信息的完整性;RBAC模型是基于角色的访问控制模型,是授权模型。通过三种模型的相互作用和制约,保证系统中的信息以及系统自身的安全性。
授权策略RBAC是整个系统的基础,它通过为用户设置特定角色,影响IA控制、特权控制、多域访问控制和强制访问控制等基本功能,达到控制系统中用户/主体对客体/对象的访问的目的。在本系统中,每个用户都有且只有一个角色。为某个用户给定一个角色,相当于给定该用户的最大特权集、安全标记范围、DTE域范围和最小审计掩码。该用户的上述属性只能够在给定角色的范围内指定。RBAC是通过最小特权、强制访问控制(包括MAC机密性保护和DTE完整性保护)和安全审计等功能组合实现的。
而多域策略DTE和多级安全策略BLP则是在授权策略授权的基础上,调用多域访问控制和强制访问控制功能,实现对客体/对象信息的完整性和机密性保护。
本系统在BLP模型的基础上进行了一些改动:
1. 对BLP模型“上写下读”的信息流规则进行了限制,将其中的“上写”改为:低安全等级的主体可以创建高安全等级的客体或向高安全等级的客体中添加信息,但是不能修改或删除高安全等级客体中的原有信息。例如,低安全等级的主体可以在高安全等级目录下(在通过了DAC和DTE检查的情况下)创建新的文件(包括子目录、命名管道等),但是不能删除原有的文件(包括子目录、命名管道等),也不能改写高安全等级文件的内容;
2. 引入可信主体的概念,即:所谓可信主体,就是拥有多个安全级或一个安全级范围的主体;
3. 引入可信客体的概念,即:所谓可信客体,就是拥有多个安全级或一个安全级范围的客体。
本系统中DTE实现采用为主体/客体指定域/型标识(统称为DTE标识)的方法,DTE策略将通过为主体赋“域”(Domain),为客体赋“型”(Type),并定义“域”和“型”之间的访问权限实现DTE完整性保护,并采用DTEL(DTE Language)语言进行描述,通过命令设置到系统核心。
核心中将为每个主体维护一个“域”标记,为每个文件维护一个“型”标记。当操作发生时,系统将根据主体“域”标记、文件“型”标记以及访问控制表判断是否允许操作发生。
原则上,构造一个安全系统必须同时兼顾用户应用系统、O/S服务系统、Linux 内核、硬件这四个子系统,使它们都获得有效的保护;但本系统主要关心用户应用系统和Linux 内核系统,因为它们与Linux 系统安全联系最直接。构筑安全Linux 系统的最终目标就是支持各种安全应用,如果系统在构造之初就没有区别地对待不同的应用,或者说不采取隔离的方式对待不同的应用,那么这样的系统是不实用的,因为不同的应用对系统安全可能造成的威胁是不同的。对用户应用系统的控制,我们主要采用角色模型与DTE技术的结合;而对Linux 内核的控制,则通过权能访问控制、增强的BLP模型及DTE策略来实现。
2.2 安全系统的结构设计
用户请求的系统操作进入核心后,首先经过安全策略执行点,调用相应的安全策略执行模块,安全策略执行模块读取相关的系统安全信息和主/客体安全属性,并调用安全策略判定模块进行安全判定,决定是否允许用户请求的操作继续执行;当用户请求的系统操作得到允许并执行结束后,再次通过安全策略执行点,进行相关安全信息/属性的设置和安全审计。
安全服务器中的功能模块与原有的系统操作是相对独立的,双方通过hook函数进行联系。通过改变hook函数的指向,可以启用不同的安全服务器。不同的安全服务器可以选择不同的安全策略,从而达到支持多安全策略的目的。

加载中
0
SsZyz
SsZyz
谢谢分享,受教了
0
yandong
yandong
好专业
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部