本文关于网络安全注意项目,据
亚洲金融智库2021-06-19日讯:
摘要:操作系统的安全性在网络安全中同样有非常重要的影响,有很多网络攻击方法都
是从寻找操作系统的缺陷入手的。互联网上传统Unix操作系统有先天的安全隐患,于是
产生很多修补手段来解决它上面的安全问题。但是由于Unix本身结构的原因,在很多修
补方案下,仍然存在系统隐患。本文提出了一种基于微内核的操作系统结构,可以从根
本上解决操作系统端的安全问题。
关键字:微内核结构、消息调度模块、应用程序管理模块
1、 网络安全中可能存在的问题
网络安全问题包括很多方面很多环节,可以说任何一个方面一个环节出了问题,多会导
致不安全现象的发生。不安全因素主要集中在网络传播介质及网络协议的缺陷、密码系
统的缺陷、主机操作系统的缺陷。在现实运作中,密码系统已经非常完善,标准的DES、
RSA和其他相关的认证体系已经成为公认的具有计算复杂性安全的密码标准协议,这个标
准的健壮性也经受了成千上万网络主机的考验。但是在网络协议与操作系统本身上,仍
然有很多可被攻击的人口。很多网络安全中的问题集中在操作系统的缺陷上。Unix及类
Unix操作系统是在Internet中非常普遍的操作系统,主要用与网络服务。它的源代码是
公开的,所以在很多场合下使用者可以定制自己的Unix操作系统,使它更适合网络相关
的服务要求。由于网络协议是独立与操作系统的,它的体系结构与操作系统端是无关的
,网络协议所存在的安全隐患也是独立于操作系统来修正的。本文主要讨论操作系统端
可能存在的问题及可能解决方案。
2、 操作系统可能存在的安全问题
在操作系统端,安全问题主要集中在多用户的访问权限问题上。系统特权用户的权限非
常大,他能够做系统所能做的任何事情。在Unix系统中,很多系统服务级的后台网络服
务程序都拥有系统用户权限,可怕的是,这些后台程序的也是安全问题的最大隐患。Un
ix是一个巨大内核的操作系统,很多系统级的服务都放在内核中。如果这些服务程序有
编程问题,问题也同时带到了内核级的权限中,这样,攻击者就有可能在内核级别进行
恶意的操作了。因为没有任何错误的软件是很难存在的,所以只能容忍程序中错误的存
在,而在系统结构上解决服务程序的问题。另外,进行严格的应用程序堆栈检查及堆管
理,在安全问题上也十分重要。著名的对strcpy()函数攻击就是利用系统没有认真管理
堆栈,而导致攻击者在自己的代码空间里获得系统用户权限。总之,如果操作系统能进
行更严格的应用程序管理,就有可能使系统更安全。当然,操作系统也是一个计算机程
序,任何程序都会有Bug的存在,操作系统也不会例外。那么,如何在承认有Bug存在的
情况下尽量使系统安全呢?
3、 安全的操作系统结构
也许根本不可能存在一个绝对安全的系统,可是一个好的结构可以使一个系统更难被攻
击。在通常被攻击的情况下,攻击者会想办法获得系统用户权限。不可能有编写完全无
错程序的办法,那么能够用尽量少系统权限程序完成操作系统功能,是解决现实中有Bu
g程序的一条可行之路。使用微内核结构的操作系统可以有效的解决一些这样的问题。在
微内核结构下,系统的核心只有一个消息调度核心,所有的其他模块通过消息与其他模
块互相联系,而通信通过消息调度核心来传输。这样,真正具有系统用户权限的程序只
有这个消息调度核心了,它是直接同各种硬件大交道的模块,所有的其他系统服务,如
文件系统、内存管理、进程调度都运行在它之上。这样,系统权限的程序也只有消息调
度模块,其他的模块可以缩小它在原来Unix系统中的权限了,就象一个国家的军队一样
,各个军官拥有他本职范畴内的权力,只有非常少数军官拥有特权(这种特权军官必须
存在,否则无法指挥大局),这样的军队系统被世界范围内公认为是最稳固的。这种操
作系统的结构如图1,
在图1中,只有消息调度模块(内核层)具有系统权限,其他的服务与模块只有使其可以
正常工作的最小权限。应用程序管理模块是以前的Unix/Linux系统所没有的,他主要负
责应用程序的权限管理,A、B、C分别是各个应用程序。下面分别对各个模块的结构与功
能作一个简单说明。
消息调度模块:这是整个操作系统中具有最高系统权限的模块,它在系统中无所不能,
负责管理各种硬件资源,处理中断,I/O端口,并把这些消息发送给相应的处理模块。它
也是其他模块间相互通信的中转,也是整个系统的内核。这是,系统的内核不做任何与
服务有关的操作,它只是一个消息转发者,也只有它才会和直接硬件打交道。消息调度
模块拥有最高的系统权限,但是它不完成任何系统功能,这样也屏蔽了对系统恶意攻击
者取得其他权限后,从而攻击消息调度模块的可能。
进程管理模块、文件管理模块、内存管理模块、I/O管理模块:与传统Unix系统中相应的
功能模块类似,完成相应的功能。但是在微内核操作系统中,文件管理、内存管理、I/
O管理模块不在具有系统用户权限,而只具有与用户程序相同的执行权限,这样可以至少
保证文件管理、内存管理、I/O管理的程序错误不会涉及到系统级的安全问题。进程管理
模块被赋予比消息调度模块次一级的系统权限,这是因为可以运行多个进程管理模块,
产生多个虚拟机。从原则上看,进程调度模块是代码比较简单,不容易出错的模块。进
程管理模块中同样包括权限过滤的代码,这段代码必须保证完全真确,才能作为其他模
块正常权限工作的保证。所以在保证程序质量的前提下,进程调度模块并不会轻易的受
到攻击。由于其他系统服务模块已经没有系统权限了,所以安全问题已经好转很多。文
件管理模块由于涉及文件操作,需要访问硬件,所有的操作由进程管理模块过滤,会很
容易的去掉那些不符合权限要求的文件请求。在内存管理模块中,应该加入栈越界的代
码,而不象传统Unix那样不做任何边界检查,这样象那些用Strcpy又不喜欢进行边界检
查的程序就在也不会收到更改返回地址的攻击了。现在即使这段代码非常复杂,也不会
象传统巨型内核的Unix那样轻易的导致系统崩溃。I/O管理一般不会成为攻击对象,在微
内核结构中,它更加不可能成为攻击对象了,因为I/O管理程序运行在普通用户级别上。
图2是这几个模块的结构和具有的功能,
应用程序管理模块:这是在微内核操作系统中新增加的模块,负责对用户应用程序进行
管理。应用程序管理模块把应用程序请求的系统调用排队放入一个队列后,向消息调度
模块发送,用户程序不由进程管理模块直接控制,有利与进程管理模块的简单性,保证
进程管理模块的代码质量。而且,应用程序模块的编程Bug不会波及其他重要的系统服务
模块。应用程序管理模块不进行权限的检测与控制,但是它可能接收进程管理模块发来
的权限错误消息。
4、 系统特性和总结
微内核的结构可以保证最小的模块和代码获得最大的权限,系统的安全性也就随之增强
了许多。能够运行在系统级权限的模块只有消息调度模块——微内核的核心,其他的服
务模块只能以与用户权限相同的权限执行。而且,由于各个模块都比较简单,所以在编
码上也不容易出错,代码维护也比巨大内核的Unix系统容易。也许,在代码精简方面与
容易编程方面微内核的优势更加明显,甚至超超过了体系结构的变化带来的系统安全性
。
专题推荐:
网络安全(1629)项目(20)注意(34)