1. PC 系统的安全问题
随着计算机网路技术的迅猛发展和Internet/Intranet用户数量的激增,网络已经深入到社会的各个领域,人类社会活动对信息网络的依赖程度已经越来越大。然而网络如同其他技术一样,危险伴随着强大的功能一道而来。有关网络入侵、黑客攻击和计算机犯罪等基于网络的安全事件时有报导,最近几年这类事件几乎成为最热门话题之一。为了保障计算机系统、网络系统和信息系统的安全,涌现出许多安全技术和产品,对各个环节提供安全保护。这些产品包括防火墙、安全路由器、身份认证系统、VPN设备、入侵检测系统、网络和系统安全性分析系统等等。但是对于网络的重要组成部分PC系统的安全问题所投入的关注并不是很多。
1.1 PC系统所面临的问题
许多企业网用户认为在网络中采用了防火墙一类的安全产品就能保证整个内部网络的安全,但事实上这些网关型的防火墙产品主要解决企业内部网与Internet互联时的安全问题,它们防内不防外,无法真正实现对局域网内每一台主机的保护,这对于整个网络的安全来说是远远不够的。根据FBI的调查揭示一半以上的入侵来自于内部,并不是所有企业内部的人都值得信赖,而且如果有企业内部人员通过拨号连接Internet,就绕过肋企业防火墙,造成一个潜在的后门攻击渠道。同时,如果某台PC系统已被黑客入侵,取得了Logon信任,则当企业员工在家中通过VPN和企业内部网络远程连接时,则正好成为黑客进入企业内部网的桥梁。
对于一般的家庭用户来说,其安全问题同样不容忽视。黑客对入侵技术的掌握也存在一个从入门到精通的过程,因而黑客往往通过攻击一些没有或者只有很少防范措施的系统来获取宝贵的经验。2000年Yahoo等网站遭受攻击的事件正好反映了家庭用户所面临的另一个问题,家庭用户的计算机被用来参与对其他系统的拒绝服务攻击,成为攻击的媒介。
另外随着宽带越来越普及,人们在使用ADSL,光纤到户的同时,安全问题也相应增加了。首先是由于全天候在线,给予黑客的机会也相应增加了;其次宽带技术本身也带来相应的问题:固定IP地址使得机器更容易成为黑客入侵的目标。
1.2 PC系统入侵的便宜性
Miller在一份有关现今流行的操作系统和应用程序的研究报告中指出软件中不可能没有缺陷,黑客入侵PC系统最常用的方法就是利用现有计算机软件的漏洞。当然一旦发现新的漏洞,软件销售商通常会提供相应的补丁程序,以及如何配置软件以获得较高的安全性,这一切都是由用户自己决定的。然而很多系统管理员都没有做到为所负责的系统及时的打上补丁,更何况一般家庭用户。
还有一些应用软件如聊天程序,有允许其他用户访问你的计算机默认设置,这是很危险的,既然可允许入侵者在个人计算机或Web浏览器上执行命令,入侵者就完全可在个人计算机上放置有害程序。但是很多用户并没有意识到这个默认设置的存在,也就不会去修改。
2 个人防火墙
计算机安全就是阻止和检测对计算机未经授权使用的过程。阻止措施能够帮助阻断未经授权用户(即入侵者)对计算机系统的任何部分的访问。检测能够帮助确定是否有人闯入系统,以及如果已经成功入侵的话,这些入侵者都干了些什么。因此一个完善的个人防火墙应该包括防火墙和入侵检测两部分。
入侵检测是对于面向计算机资源和网络资源恶意行为的识别和响应,他可以对系统和网络资源进行实时检测,及时发现闯入系统或网络的入侵者,也可预防合法用户对资源的误操作。入侵检测是对防火墙的必要补充,若能迅速检测到入侵,则有可能在造成系统损坏或数据丢失之前识别并驱逐入侵者,从而减少损失,使系统迅速恢复正常工作,并对入侵者造成威慑,阻止其进一步的行为。而且通过入侵检测可以收集关于入侵的技术资料,用于改进的增强系统抵抗入侵的能力。
3 系统实现
3.1 系统概述
针对目前的应用需求,结合已有的技术手段,可以构造出一个新型的个人防火墙系统,该系统以PC防火墙为基础,并将入侵检测技术融合到系统中。
该个人防火墙主要模块包括数据包截获平台、PC防火墙构件、基于网络的入侵检测构件、入侵响应构件、文件完整性检查构件、控制台等。
数据包截获平台负责截获所有进入PC系统的数据包,并提取出有效数据,以供上层模块使用。
PC防火墙构件采用包过滤技术,对数据包截获平台所递交的有效数据,根据用户定义的过滤规则表进行分析和处理。
基于网络的入侵检测构件采用模式匹配与协议分析相结合的方法,对PC防火墙所递交的数据包进行进一步的分析和处理。所有的攻击方法用模式信号加以表达,并存放在入侵特征模式库里,当前的数据如果和模式库里的某条特征相匹配,就判定发生了入侵行为。
入侵响应构件根据入侵检测所判定的入侵行为采取相应的措施,如自动修改防火墙规则,追踪入侵者,切断网络等。
文件完整性检查构件是对包过滤防火墙和基于网络入侵检测的有力补充。该构件检查系统中文件变化的情况,以监测未经授权对文件进行修改的入侵行为。检查算法采用的是安全性能高的MD5 Hash算法,由于两个文件几乎不可能得到完全相同的Hash结果,使得文件一旦被修改,就能被检查出来。文件完整性检查是一项比较耗时的工作,该模块用于非实时性的检查。
控制台是整个个人防火墙系统和用户交互的界面,用户通过控制台来了解是否发生了入侵事件,并可以修改防火墙的过滤规则及其他一些方便用户使用的设置。
3.2 数据包处理流程
数据包流入系统后,首先由数据包截获平台进行获取,进行处理后,将结果递交给PC防火墙。PC防火墙检查过滤规则表中的每一条规则,规则表中明确拒绝的数据包将被丢弃,允许通过的数据包将递交给入侵检测构件。入侵检测构件根据包中信息检查是否发生入侵行为,如果发现与已知入侵行为特征相符,则丢弃该包并调用响应构件进行相应的操作,否则将包交给应用程序。
3.3 Windows9x系统中实现对数据包的截获
在Window9x系统中主要是通过设计VxD来实现对网络数据包的截获。VxD(Virtual Device Driver)是虚拟设备驱动程序的统称,应用进程可以通过VxD的服务来使用相应的设备,它充当上层WIN32应用程序和底层NIC的接口,但是VxD并不能直接访问NIC,也必须通过网络驱动程序接口规范(NDIS, Network Driver Interface Specification)来实现对底层网络设备的访问,工作于Ring 3级的WIN32应用程序虽然不能直接访问底层的网络设备,但可以通过调用VxD来截获操作系统对NDIS功能函数的调用,从而来截获所有进入本机的数据包。而且由于VxD运行在操作系统的底层(Ring 0),所以它的操作对于所有应用程序均是透明的。
VPacket.vxd是Windows 98 DDK中的一个例子,通过它Win32应用程序可以对安装在PC机上的任何一块NIC进行直接读写操作,它是NDIS3.10的协议驱动程序,不受底层NIC的特殊硬件细节的影响,可以方便的同安装在不同机器上的任何支持NDIS的NIC接口进行通信。
VxD实现对数据包截获的过程是这样的,首先需要将VPacket.vxd进行加载,然后通过应用程序与VPacket.vxd之间的接口函数对其进行初始化、读、写等操作。Windows的CreateFile()函数实现了动态加载VxD的方法;Bind(HANDLE hVxD,BYTE *inBuffer)函数用来将VPacket.vxd与某具体的NIC进行绑定,其中第一个参数是已经加载的驱动程序句柄,第二个参数是描述NIC的字符串,实际上是该NIC在注册表中的键值;而应用程序则通过服务请求接口DeviceIoControl()来获取VxD的服务,包括对数据包的读、写等操作。
3.4 数据包的过滤
PC防火墙构件采用包过滤技术,对数据包截获平台所递交的有效数据,根据系统事先定义好的过滤逻辑,即访问控制列表,检查数据流中的每个数据包,根据数据包的包头信息,如源地址、目标地址、包所使用的端口号等来决定是否允许该数据包通过。
通过对各种安全威胁以及黑客攻击手段的分析,再加上对保障网络正常通信要求的考虑,制定了该系统的过滤规则表。
应用程序通过调用DeviceIoControl()函数将过滤规则表传递给VxD,VxD从输入缓冲区中获取应用程序传来的过滤规则,应用这个过滤规则表对当前的IP包进行处理,然后将结果放在输出缓冲区回送给应用程序。
3.5 模式匹配
系统设计了两个步骤来实现模式匹配的入侵检测,第一步是解析入侵行为特征库,首先读取特征库,然后在内存中使用链表RuleLists来存储,提供给检测模块使用;第二步是使用这些特征库进行匹配操作,由函数EvalPacket()来实现,该函数将读取的特征条目与数据包进行匹配,如果匹配则判定为入侵行为。
4 结束语
尽管政府、军事、金融等网络是黑客当前攻击的主要目标,但是PC系统的安全问题同样不容忽视,它的安全直接关系到了整个网络的安全。因此,对PC系统的保护是网络安全体系中的重要环节,对与其相关的防御技术及入侵模式的研究,对网络和信息安全都有着重要意义。