基于SELinux用户角色管理机制的改进探讨
2016-09-07金京犬安徽邮电职业技术学院计算机系合肥3003淮北师范大学计算机科学与技术学院安徽淮北35000
金京犬,杨 忆(.安徽邮电职业技术学院 计算机系,合肥 3003;.淮北师范大学 计算机科学与技术学院,安徽 淮北 35000)
基于SELinux用户角色管理机制的改进探讨
金京犬1,杨忆2
(1.安徽邮电职业技术学院 计算机系,合肥 230031;2.淮北师范大学 计算机科学与技术学院,安徽 淮北 235000)
针对SELinux对用户身份管理功能存在安全隐患,将Linux组概念作为SELinux身份确定可选项,提出了解决不同用户之间不能灵活分配相同的角色集问题、用户在不同的角色之间设置转换模式不灵活问题及安全隐患问题的方法。
SELinux;RBAC;SELinux安全体系结构;用户角色管理
0 引言
SELinux(Security Enhanced Linux)由美国国家安全局(NSA)在2001研发的一个增强型安全模块,当时NSA的主席就建议SELinux加入到Linux2.5内核中,由于有很多关于Linux安全模块的机制正在构建中,Linux的创始人Linus Torvald并没有接受这个建议,只是决定做一个“统一可加载安全模块”。SELinux经过2 a的开发,到2003年12月,Linux安全模块(LSM)真正成为Linux2.6内核标准,到2006年为止,只有SELinux依旧遵守LSM所有标准,SELinux顺利成章的成为了Linux安全机制的代表。SELinux安全增强机制实现了基于用户角色访问的控制机制(RBAC)、类型增强模型(TE)和可选的多级访问控制机制(MLS)。TE模型为SELinux机制提供了最小特权机制,RBAC模型是在TE模型的基础上建立起来的,简化了用户的高层次管理[1-2]。
1 SELinux安全体系结构
SELinux是在Linux2.6内核中额外加入的一个系统安全层,其主要目标是防止已经遭泄露的系统服务访问用户数据。SELinux采用的安全体系结构是Flask结构,如图1所示,Flask结构由安全服务器、访问向量缓存(AVC)、对象管理器3个部分组成。安全服务器是一个独立逻辑单元的安全策略和通用接口封装在一起形成的,对象管理器是详细描述安全策略判定结果的单元,访问向量缓存位于安全服务器和对象管理器中间,主要是把安全服务器上的一些安全策略提供给对象管理器应用。
2 SELinux的用户角色控制模型
SELinux用户角色控制模型即 RBAC (Role-Based Access Control)模型[3-4],是由美国Ravis.sandhu教授提出的安全策略模型家族RBAC96,它由基本的RBAC0模型,等级RBAC1模型,约束RBAC2模型,组合RBAC模型组成。基本的RBAC模型主要有4个组成部分:用户,角色,权限,会话。RBAC控制模型如图2所示。
图1 Flask安全体系结构
图2 RBAC模型
RBAC模型的基本思想是授权用户的访问,通常起到一个组织中的用户确定的作用。RBAC授权授予角色,角色授权给用户,用户不直接与许可关联。RBAC权限的管理由管理员统一执行,RBAC根据用户在组织内的角色进行授权和访问控制、授权规则强加给用户,用户无法自主访问传递给其他人,这是一个非自治的集中访问控制模式。
在RBAC用户角色控制模型中,当每一个用户进入系统取得操作控制权时候,就会得到一个会话用户和角色之间的关系,如果用户想获得某个操作权限就必须通过会话机制激活。
3 Linux用户身份与SELinux用户身份
Linux操作系统中的用户身份有3类,第一类是特权用户root,它享有无限的权限;第二类是系统用户,改类系统是不能登录用来登录系统的;第三类就是普通用户,该类用户的权限有被约束。为了保证Linux操作系统的安全,Linux的用户,密码和组分别存放在/etc/passwd、/etc/shadow、/etc/group文件中。
在SELinux实现中,SELinux用户身份与原有的Linux用户身份是2个独立的个体,SELinux访问控制体系与原有的Linux访问控制体系不同,虽然他们共存于同一个系统中,但是差别也是非常大的,SELinux用户身份是一种安全上下文中的安全属性,它主要是对主体进入什么样的逻辑空间(域)产生影响。主要有3类SELinux的用户身份类型,第一种是用system_u表示的系统进程和客体的身份;第二种是user_u表示的尚未定义的SELinux身份;第三种是用Linux系统本身的用户名代表Linux 和SELinux对应的用户身份。
4 SELinux用户身份属性确定过程及存在问题
当登录Linux操作系统的时候,如果用户存在,用户(用户名)都会被设定成一个SELinux身份,该身份定义了它能使用的角色。根据角色用户被赋予默认的安全上下文,如果有多个安全上下文,则有用户自行确定选择哪种。如果在安全策略库中没有与用户名对应的用户申明规则,则使用缺省的SELinux身份(user_u)。SELinux用户身份属性确定过程如图3所示。
图3 SELinux身份确定过程
从现有的SELinux运行情况来看,SELinux用户身份属性确定过程存在一些问题
(1)在不同用户之间不能灵活分配相同的角色集[5]。大型系统中需要用户和角色数量非常多,按照目前的SELinux用户确定过程来看,如果不考虑默认规则的话,需要为每一个用户申请相应的用户申明规则,这样显得非常繁琐和麻烦。
(2)用户在不同的角色之间设置转换模式不灵活并且有安全隐患。完成一个工程项目,一个用户需要多个角色集,根据现有的方式,或在每次重写用户指定的规则和重新加载安全策略,或将用户所有的角色中都写入用户申明规则里。这样一来就不能遵循RBAC模型的最小特权原则,从而导致用户获取多余的权限,致系统不稳定不安全。
5 SELinux用户管理方式改进思路
针对上述可能存在的2个问题,通过引入组概念到SELinux身份确认过程,把用户所在的主组和附属组捆绑使之成为SELinux身份的选择项,改进的SELinux身份确认过程如图4所示。当加入Linux组作为SELinux用户身份验证时,可以为每个组指定相应的安全策略,即将组名和角色做一个映射关系,把相同的角色集集中加入到同一个组中,而不需要为每一个用户指定相应的用户申明规则,这就解决了在不同用户之间不能灵活分配相同的角色集问题。
图4 改进的SELinux身份确认过程
通过新建多个组,同时为它们把不同角色的用户申明规则写入到安全策略上下文中,当用户在不同角色集中切换身份时,不需要为不同角色集重写用户申明规则和重加载安全策略,只需要添加用户到主组或者附属组就可以了。如果不需要用户拥有某个角色集的时候,只需要从组中把用户删除即可。这就解决了用户在不同的角色之间设置转换模式不灵活并且有安全隐患的问题。
6 分析与实现
在SELinux的实现系统中,将用户名与SELinux用户身份关联并确定安全上下文的工作主要是由登录的login进程初始化完成的,由SELinux模块中的pam_selinux.so模块的pam_sm_open_session()等函数来实现的,并在此基础上修改进和扩展该函数。另外由于把组名作为SELinux身份确定的一个特点,需要新增一个组名选择函数selectAdd_group_context()。该函数的执行过程是:
第1步:根据列表*supgrouplist[]第一项的值获取用户所属的主组名。
第2步:询问用户是否显示其他的组名,如果是,则进入第3步,否则显示主组名。
第3步:根据提示选择组名,并把结果返回。
pam_sm_open_session函数伪代码如下:
pam_sm_open_session()
{
调用pam_get_item()函数获取会话的函数指针
{
if是根据有用户确定SELinux身份
调用get_order_context_list()函数,用户名和安全上下文关联
if根据组名确定SELinux身份
{
fopen组文件/etc/group,并从中读取记录
求用户的附属组的个数;
求对应该用户的主组名;
}
调用selectAdd_group_context()函数;
求该组名相对应的安全上下文;
}}
7 结语
SELinux用户管理其实就是SELinux强制访问控制方面的管理,其核心管理就是对SELinux用户身份的相关管理。SELinux支持的RBAC角色转换模型,灵活的实现了用户的强制访问机制,但是在大型企业用户和角色的数量很大的前提条件下,SELinux角色间的关系是非常复杂的,传统的RBAC角色管理模型不能够满足。本文在SELinux身份确认过程中引入了linux组的概念,实验表明,通过将Linux组名作为SELinux身份确定的可选项,解决了不同用户之间不能灵活分配相同的角色集问题以及用户在不同的角色之间设置转换模式不灵活并且有安全隐患的问题,更好的增进了Linux操作系统的安全性。
[1]SMALLEY S,VANCE C,SALMON W.Implementing SELinux as a Linux Security Module[R].NAI Labs Report.2006.
[2]SANDHURS,COYNEEJ,FEINSTEINHL,etal.RoIe-based Access Control Models[J].IEEE Computer,1996,29(2):38-47.
[3]黄易冬,沈廷芝,朱亚平.SELinux安全机制和安全目的研究[J].微计算机信息,2004(7):115-117.
[4]肖永康,纪翠玲,谢宝恂,等.SELinux的安全机制和安全模型[J].计算机应用,29(S1):66-68.
[5]刘岩.SELINUX的研究与改进[D].南京:南京航空航天大学,2010.
Discussion on the Improvement of User's Role Management Mechanism Based on SELinux
JIN Jing-quan1,YANG Yi2
(1.Anhui Post and Telecommunication College,Computer Departments,Hefei 230031,China;
2.School of Computer Science and Technology,Huaibei Normal University,Huaibei,Anhui 235000,China)
This paper discusses the security vulnerability in SELinux's role management.Taking the Linux's group concept as options for identification,the author comes up with relevant solutions to the inflexible assignment of role set and conversion modes among different users as well as to the security vulnerability and this paper have certain references.
SELinux;RBAC;SELinux security architecture;user's role management
TP316.81
A
1673-1891(2016)02-0039-04
10.16104/j.issn.1673-1891.2016.02.012
2016-03-22
安徽省高校自然科学基金项目“企业Linux服务器的安全应用研究”(KJ2016A382)。
金京犬(1982—),男,安徽安庆人,硕士,讲师,研究方向:嵌入式。