摘要
在开放的网络环境中,操作系统安全在计算机系统整体安全中至关重要。本文从操作系统安全模型研究入手,重点介绍一种操作系统安全加固的技术,即通过在操作系统内核加置安全加固模块,分散操作系统权限,提高操作系统安全等级。其中分别以主流操作系统windows和linux为例,大致分析其结构模块阐述其安全加固原理。然后对比操作系统加固技术相比重构开源操作系统内核的优势所在。
1. 背景
人们对网络安全问题及造成的危害早已认识,对其防范措施也是多种多样,煞费苦心,但效果并不理想。据国家计算机网络应急技术处理协调中心报道,仅2007年上半年,我国大陆内被植入木马的主机是去年全年的21倍,被篡改的网站数量比去年同期增加了4倍,监测到的僵尸网络主机达520多万。目前网络上流行的恶意代码大多是侧重于控制操作系统而组成僵尸网络再窃取控制更多的用户敏感信息。如“熊猫烧香”病毒在短短一个月内感染了11 万个IP 地址的主机。从防火墙、入侵检测、防病毒的老三样到VPN、UTM、SOC等产品,而网络安全问题依然不断的困扰着每个信息系统的管理者和使用者。
在计算机安全涉及到的各方面内容中,操作系统、网络系统、数据库管理系统的安全是主要问题,其中操作系统安全尤为关键。操作系统是计算机资源的直接管理者,所有应用软件都是基于操作系统来运行的,不能保障操作系统安全,也就不能保障数据库安全、网络安全及其他应用软件的安全问题。因此开发安全的操作系统,成为提高计算机信息系统安全性的重要手段。
国际上对操作系统安全性的研究已有相当的历史。自20世纪70年代以来,起初出于军事目的,由美国政府的国防部牵头,投入了大量的人力、物力,从操作系统底层开始,对安全问题开展了广泛、深入的研究,取得了一系列有影响的重要成果,如Multics、可证明的安全操作系统、军用安全操作系统、VAX体系的VMM安全内核等。这些成果对操作系统安全性的研究起了重要的推动作用。但长期以来,我国的计算机操作系统市场基本上被国外产品所占领,因此研制具有自主知识产权的操作系统是关系到我国信息安全未来的一项战略决策。在这方面,我国也已经开展了大量的研究工作。
2、操作系统安全加固
安全操作系统的含义是在操作系统的工作范围内,提供尽可能强的访问控制和审计机制,在用户/应用程序和系统硬件/资源之间进行符合安全策略的调度,限制非法的访问,在整个软件信息系统的最底层进行保护。按照有关信息系统安全标准的定义,安全的操作系统要有这样的特征:
a)
最小特权原则,即每个特权用户只拥有能进行其工作的权力;
b)
访问控制原则,包括保密性访问控制和完整性访问控制;
c)
安全审计;
d)
安全域隔离。
只要有了这些最底层的安全功能,各种病毒、木马程序、网络入侵行为和人为非法操作才能被真正抵制,因为它们违背了操作系统的安全规则,也就失去了运行的基础。如图1所示: 图1 安全操作系统逻辑结构
2.1 Windows操作系统安全加固
目前比较可行的解决方案是对现有的主流操作系统进行安全加固,对操作系统的超级用户权限进行合理分散与适度制约,从而使可能出现的超级用户“大权旁落”的威胁风险与破坏程度大大降低,下面以Windows为例简要介绍一下其原理。如图2所示
图2 Windows操作系统关键组件
Windows操作系统分为用户模式和内核模式。在用户模式中,系统支持进程包括登录进程和会话管理器等;服务进程提供Windows服务用的,如任务调度器,邮件与数据库等;用户进程是用户执行的一些应用程序;环境子系统是展示给用户个性化部分。其中服务进程和用户应用进程并不直接调用原始的Windows操作系统服务,它们通过一个或多个子系统动态连接库发起调用。在内核模式中,执行体包含了基本的操作系统服务,比如内存管理、进程和线程管理、I/O、网络等。Windows内核是一组底层的操作系统功能,比如线程调度、中断、异常分发等,执行体利用这些例程和对象实现更高层次的功能;设备驱动程序包括硬件设备驱动程序,文件系统和网络驱动程序,其中硬件设备驱动程序将用户的I/O函数调用转换成特定的硬件设备I/O请求;硬件抽象层是一层特殊代码,把内核、设备驱动程序和Windows执行体跟平台相关的硬件差异隔离开来。
在Windows操作系统安全加固技术中,安全内核将Windows内核执行体与线程调用、设备驱动安全隔离,通过在内核中放置一组安全“钩子”(Hooks)函数来控制对内核对象的访问,这些对象包括任务、inode结点和文件等。并为操作系统的关键客体,包括文件及目录、注册表、进程和服务等指定敏感标记,这样用户进程执行系统调用时,首先采用线程钩子和系统钩子等函数拦截和监控用户线程对系统核心资源的访问,进行强制访问控制检查,确定是否允许或禁止其访问,只有高级别敏感标记的主体才能对相应级别的文件及目录、注册表、进程和服务等客体进行访问。
在强制访问控制过滤驱动程序初始化时,逐条插入文件及目录、注册表和进程的访问控制策略,并允许在运行期间动态维护访问控制策略,以便截获所有对文件及目录的I/O请求、注册表项的读写请求、进程的遍历请求。当截获到上述请求时,遍历相应的文件及目录、注册表和进程的访问策略链表,并根据访问策略进行过滤。符合策略的文件及目录I/O请求、注册表项读写请求、进程遍历请求立即转交原服务函数,否则丢弃,如图三所示。
2.2 Linux操作系统安全加固
Linux内核主要由进程调度、存储管理、进程间通信、文件管理、网络子系统五部分组成,如图4所示。
此外,Linux内核支持可加载内核模块机制,我们可以很方便的在内核中添加各种组件实现对linux内核的扩充,这种加载可以是动态的,即不需要重新编译内核,就可以根据具体需要加载或卸载内核模块。根据这些设计原则和要求,Linux安全模块(LSM)采用了通过访问前在内核源代码中放置钩子的方法,来仲裁对内核内部对象进行的访问,恰好在Linux内核试图对内部对象访问前,一个LSM的钩子对安全模块所必须提供的函数进行调用。该模块可允许进行访问,或者强行回复一错误代码表示拒绝访问。如图5所示,用户进程首先调用系统接口,然后进行错误检查和Linux的自主访问控制检测,在Linux内核试图对内部对象进行访问之前,一个Linux安全模块(LSM)的钩子对安全模块所必须提供的函数进行一个调用,从而对安全模块提出访问请求,安全模块根据其安全策略进行决策,做出回答即允许用户访问,或者拒绝进而返回一个错误。
3、比较
国内对操作系统安全问题的解决包括两种方案:
其一是基于Linux开源代码研究的基础上,对Linux操作系统进行安全改造,重新构建一个新的安全的操作系统,保证了操作系统的可控性、可信性。这种通过重构开源操作系统内核,也实现了操作系统安全等级的提升。不足之处是对上层应用软件、配套硬件、网络支持上还不够完善,我国的计算机操作系统高端市场基本是IBM AIX、HP UNIX、SUN Solaris、Linux,而中低端基本上都采用的是Windows。这种方式只限于公开内核源代码的操作系统,对部分商用操作系统(包括Windows、Solaris和AIX等)不适用。若采用此种方案需要放弃现在使用的操作系统,使用一个全新的操作系统,这样现有的特别是针对Windows操作系统上应用软件和数据库都不能够再继续使用,带来用户的信息系统变动比较大,用户使用起来不是很方便,难以大规模推广。
其二就是上面所介绍的对目前主流操作系统进行安全加固,主要通过实现基于策略的强制访问控制(Policy-Based MAC),包括文件及目录、注册表、进程和服务的强制访问控制技术,双因子强身份认证技术和文件/服务完整性检测技术来解决操作系统安全问题。由于是在内核层面上对操作系统进行安全加固,这样对安装在操作系统之上的合法应用软件和数据库的正常使用没有造成任何影响,对底层硬件驱动也是透明的,不会影响业务的连续性,甚至不用重启操作系统而使整个操作系统的安全级别得以提升,以达到解决操作系统安全隐患的目的,是目前比较理想的一种解决方案。
4、结论
开展安全操作系统研究和开发具有我国自主版权的安全操作系统产品是我国各行各业的迫切需要。在比较长的一段时间内,对通过各种主流操作系统加固的方式来解决操作系统安全隐患是一种比较实用的解决方案。此种方案需要对操作系统特别是操作系统内核组件及其调用机制非常了解,并且需要完善的权限分配策略,需要制定详细的文件、进程、注册表等相关访问控制列表。这要求开发者不但要了解操作系统内核原理更要精通操作系统安全隐患所在,也要求研发队伍有着雄厚的技术实力和不断进取的开拓精神。目前国内Windows Server系列、AIX、Solaris、HP-UNIX、Redhat等主流的操作系统安全加固产品已陆续推出。人们对有效的遏制由操作系统安全隐患带来的威胁翘首以待。
[ 本帖最后由 adyy 于 2008-1-27 12:16 编辑 ] |