Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

RedHat Enterprise Linux 4新安全机制

来源: 作者: 时间:2007-04-11 点击: [收藏] [投稿]

一.前言

Security Enhanced Linux(以下简称为SELinux)是RedHat Enterprise Linux 4(以下简称为RHEL4)上新的安全机制,在以往的RHEL系统中从未使用,这使得很多资深的系统管理员已开始使用RHEL4时弄得一头雾水,出现了很多莫名其妙的错误,随后寻找帮助才发现原来是SELinux弄的。由于SELinux有着严格的安全控制和管理权使得系统管理员一时不知怎么样设定,索性就关闭了,很是可惜。究其原因,是当一个事物出现时,如果他给你带来了麻烦,增加了工作量,便对其产生了厌恶感,这是人之常情。本文暂不探讨SELinux 复杂的内部运作机制,只是先让读者对SELinux有个初步的认识和了解,希望能在您的心里对SELinux留下一个好的印象,并认识到尽管一开始时有些麻烦,但当你熟悉了它以后,系统的管理会变得更轻松。

二.认识DAC与MAC
在介绍SELinux之前,读者需要了解两个基本的系统访问控制机制:
DAC(Discretionary access control,自主访问控制):DAC机制就是指对象(比如程序、文件或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。例如传统Linux,Windows等。
MAC(Mandatory Access Control,强制访问控制):MAC机制是指系统不再允许对象(比如程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式为每个对象统一授予权限,例如SELinux。
图1 DAC与MAC的不同(引自 Security Features in Red Hat Enterprise Linux 4)
 
三.SELinux的出身
National Security Agency(美国国家安全局,以下简称为NSA)一直非常关注计算机操作系统的安全领域。毕竟他们的工作任务之一就是要确保美国政府使用的计算机的安全,保证在其面临没完没了的攻击时仍能安全可靠的运行。NSA发现大部分操作系统的安全机制,包括Windows和大部分UNIX以及Linux系统,都是以DAC机制为安全认证基础的。由于DAC机制的设计很不利于系统安全,NSA便一直致力于开发出一套好的MAC安全认证机制。
MAC并不是由NSA发明的,它很早就出现了,但由于MAC的诸多问题,使得大型系统提供商对于把MAC集成到自己的系统中始终没有兴趣。即使是那些集成了 MAC 的提供商也通常是把其做为可选件提供,而没有默认安装使用。原因很多,一是因为MAC还不够灵活,二是对于像Windows客户系统这种面向普通用户的系统来说,MAC加大了系统管理和使用的复杂性,得不偿失。于是NSA的为了推广MAC,确立了MAC下一步的研究方向,为使MAC更灵活并且并更容易被嵌入到操作系统。
起初,NSA的MAC系统是在LOCK系统上基于类型增强而且策略灵活的强制访问控制体系,并且随后发展为两个基于Mach的系统:DTMach和DTOS,后来在犹他大学的微内核操作系统Fluke上实现出来,并命名为Flask安全体系。NSA希望有操作系统商能支持其开发的MAC机制,但由于所有的这些工作都是基于实验室,极少可以在实验室之外来进行尝试,以查看这些思想在真实的应用程序的可行性,加之为保密项目,因此很难说服某个系统商采用,谁也不敢头一个吃这个螃蟹。于是,NSA决定选择开源代码的Linux系统为实际市场试验系统。NSA把Flask安全体系集成到Linux操作系统中,SELinux便孕育而生,为了真正配合SELinux在Linux系统上的应用实施,NSA把SELinux作为一个开放源码项目发布出来,从而能获得更加广泛的开发者和用户支持。
毫无意外,使用真正的系统让 NSA 研究人员可以更好的理解SELinux在实际中的应用,而其中体现出的问题是在试验系统中无法找到的。NSA的这一开源措施,在开源界犹如一颗原子弹,业界普遍对此是欢迎的,但也不能说NSA是为此作出了牺牲,因为这是个双赢的举措,因为没有Linux这个试验田,NSA的SELinux很难修得正果。另外选择Linux不是毫无理由的:首先,Linux系统拥有着众多的使用用户,而且很多用户本身具有很高的技术水平;其次,Linux基于开源,这样使得SELinux不属用任何商业组织或公司,防止依此来牟利,也不利于SELinux的发展;最后,对于Linux,它作为新兴的操作系统,在桌面领域很难打败Windows,因此它主要面对服务器领域,而安全就显得至关重要,SELinux正好是它所迫切需要的。RedHat是个很聪明的公司,Fedora是其领导的Linux开源组织。其实说穿了,Fedora就是其企业发行版的实验田。RedHat首先选择了Fedora Core 2作为第一个SELinux实验操作系统,但是预设为不开启,但SELinux在其平台上的表现还是取得了成功。到了Fedora Core3,SELinux已经默认为开启,然后经过修改,我们便在RHEL4上也看到SELinux。
另外需要补充说明的是,读者不要以为仅仅存在SELinux这一个MAC项目,还有很多其他的MAC实现项目,用于其他不同的系统中。
 
四.SELinux原理
在SELinux中,每个对象(程序、档案、进程等)都拥有一个Security Context(安全上下文),它就像标签一样,贴在每个对象身上,上面记载着这个对象所具有的权限。而我们可以通过制定Security Policy(安全策略)来定义这些Security Context,从而定义哪种对象具有哪些权限。当一个对象需要执行某个动作时,系统会依照Security Policy所制定的内容来检查相对应的权限,如果全部权限都符合的话,系统就会允许这个操作的执行,否则都把遭到拒绝或失败。这些过程不会影响到其它正常运行的对象,系统会保证它们的安全系统结构以及稳定运行。这里还要说明的是,到目前为止,SELinux系统中的某个对象需要执行某个动作的时,系统权限认证不仅仅单独根据Security Policy所制定的内容来检查,同时还要根据传统DAC来检测,只有DAC以及SELinux全部认证通过了才能进行正常操作。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:详述必学的Linux操作系统安全命令   下一篇:浅谈Linux优化及安全配置个人体会总结

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号