毕业设计 (修改)

毕业设计 (修改)
毕业设计 (修改)

操作系统发展中"漏洞"问题的研究

作者金玲

指导老师刘正余

摘要:在计算机技术飞速发展的同时,各类漏洞攻击层出不穷,由操作系统漏洞所产生的安全问题也日益严峻。本论文介绍了漏洞的概念及产生原因,分析了常见几种类型漏洞,尤其是缓冲区漏洞,提出了针对性的解决方案。整体而言,从认识和技术角度,强调了做好防范和弥补系统漏洞工作,重点提出漏洞检测技术的运用,结合系统安全设置、防火墙、补丁技术、IPS主动防御和虚拟防护方面消除系统漏洞风险。对运用最广泛的Windows系统漏洞做了详细研究,找出了最具危害性的十大漏洞,分析并提出解决意见,将系统漏洞危害控制到最小。

关键词:操作系统;漏洞;系统安全

The Research Based on the OS Crack

Abstract:With the fast development of computer technology, each kind of crack attacks emerges one after another incessantly, and the security problem producing by the crack of operating system is also stern day by day.The thesis introduced the crack's concept and the reason, and analyzed the common several type cracks, particularly proposed the pointed solution of the buffer crack. As for the whole, from the understanding and the technical angle, it emphasized completing the guard and atoning system crack work, and proposed emphasis the crack technology's utilization, the union system safety establishment, the firewall, the patch technology, the IPS active defense and the hypothesized protection aspect eliminate the system crack risk. We did the research to utilize the most widespread windows system crack to find out the ten most destroyed cracks, analyzed and gave the solution comment to make the harm of the system crack to be smallest.

Key words: OS;Crack ;Security

目录

引言 (1)

1 漏洞概述 (1)

1.1漏洞的概念 (1)

1.2产生漏洞的原因 (1)

1.3漏洞的分类 (2)

1.4漏洞的危害 (2)

2 网络上常见漏洞分析 (2)

2.1变换角色漏洞 (2)

2.2缓冲区溢出漏洞 (3)

2.3允许拒绝服务的漏洞 (7)

2.4允许有限权限的本地用户未经授权提高其访问权限的漏洞 (7)

2.5允许在远程主机上的未经授权用户访问网络的漏洞 (8)

3 检测漏洞技术 (8)

3.1采用安全漏洞扫描技术查找系统漏洞 (8)

3.2通过判断服务器操作系统的类型查找系统漏洞 (9)

3.3通过判断服务器开放端口来查找系统的漏洞 (10)

4 消除系统漏洞风险 (11)

4.1安全设置 (11)

4.2防火墙 (14)

4.3提高意识,做好补丁管理 (16)

4.4注意异常连接和系统日志 (17)

4.5IPS实现主动防御 (17)

4.6虚拟防护防止LAN攻击 (17)

5 WINDOWS系统常见漏洞分析及其解决方法 (18)

5.1安全设置 (18)

5.2漏洞分析与解决 (22)

6 UNIX操作系统漏洞分析研究 (25)

6.1U NIX操作系统存在的漏洞 (25)

6.2结合工作实际,对U NIX操作系统防范黑客入侵的几点建议 (27)

7 结束语 (28)

致谢 (28)

参考文献: (29)

引言

作为整个计算机系统中最重要的软件,操作系统对维持计算机的安全和稳定运行起着不可替代的重要作用。由于处于整个计算机系统中硬件和软件接口的特殊地位,使得操作系统成为各种攻击的主要目标。由于在计算机系统中硬件、软件及协议的具体实现或系统安全策略上存在安全方面的缺陷,从而攻击者可以非法入侵系统或未经授权访问或破坏系统。各种黑客入侵、病毒木马侵入,都是在有漏洞的系统内进行的,如果系统在管理上出现了问题,就会很容易被黑客所光顾,那么可想而知后果又会怎样。保护系统安全,堵住系统漏洞就显得尤为重要。因此,尽可能的保障操作系统的安全运行,有效的防止各种针对操作系统的恶意攻击,避免用户的错误操作给操作系统带来的危害,就成为了计算机系统安全的一个重要内容。

1 漏洞概述

1.1 漏洞的概念

漏洞是指某个程序(包括操作系统)在设计时未考虑周全,当程序遇到一个看似合理,但实际无法处理的问题时,引发的不可预见的错误。系统漏洞在某些情况下又成为“安全缺陷”,如果当系统漏洞被恶意用户利用,就会造成信息泄漏、数据安全性受到威胁、用户权限被篡改等后果。而对普通用户来说,系统漏洞在特定条件下可能会造成不明原因的死机和丢失文件等现象。

1.2 产生漏洞的原因

从整体上说,软件漏洞产生大致有三个原因:

(1)编程人员的人为因素,在程序编写过程为实现不可告人的目的,在程序代码中保留后门;

(2)受编程人员的能力、经验和安全技术所限,程序中难免会有不足之处,轻则影响程序效率,重则导致非授权用户的权限提升;

(3)由于硬件原因,使程序员无法弥补硬件的漏洞,从而硬件的问题通过软件表现。

操作系统的编写需要成千上万的程序员共同协作。首先将整个系统分成若干模块分别编写,然后再汇总、测试,最后是修补和发布程序。每个程序员的思维不尽相同,且在软件汇总时也可能留下一些方便调试的出口,在测试以后再进行修补。这些出口如果一旦被疏忽或

1.3 漏洞的分类

按对受害主机危险程度分为四个级别:

(1)一级漏洞能够使远程主机上的恶意入侵者获得有限的访问权限或root权限,从而控制整个系统,对系统中的数据进行非法访问、篡改和破坏。

(2)二级漏洞是指允许本地用户获得增加的和非授权的访问,如读取、写或执行系统上的非根用户文件。

(3)三级漏洞是指允许拒绝服务的漏洞,用户不能对文件和程序进行访问。

(4)四级漏洞是指允许远程用户获取目标主机上的某些信息,但是不会对系统造成危害。

1.4 漏洞的危害

作为最广泛应用的桌面操作系统,Windows漏洞的危害也最广泛,由它所造成的损失是巨大的。1988年,一个由美国CORNEL大学研究生莫里斯编写的蠕虫病毒蔓延造成了数千台计算机停机,蠕虫病毒开始现身网络;而后来的红色代码,尼姆达病毒疯狂的时候,造成几十亿美元的损失;北京时间2003年1月26日,一种名为“2003蠕虫王”的电脑病毒迅速传播并袭击了全球,致使互联网严重堵塞,作为互联网主要基础的域名服务器(DNS)的瘫痪造成网民浏览网页及收发电子邮件的速度大幅减缓,同时银行自动提款机的运作中断,机票等网络预订系统的运作中断,信用卡等收付款系统出现故障!专家估计,此病毒造成的直接经济损失至少在12亿美元以上。在上述这些危害极大的病毒中,它们共同的特征就是利用微软服务器和应用程序组件的某个漏洞进行攻击。例如“红色代码”是利用了微软IIS服务器软件的漏洞(idq.dll远程缓存区溢出)来传播;“Sql蠕虫王”病毒则利用了微软数据库M SSQL2000服务远程堆栈缓冲区溢出漏洞。

2 网络上常见漏洞分析

2.1 变换角色漏洞

这种漏洞是从不同的运行程序中发现的。例如,在打印文档之前希望通过PostScript解释器进行预览,但这个解释器却是个不安全的敏感程序。当用它来处理从并不值得信任的用户那里得到的文件时,该用户可以发送能删除对方所有文件或者复制对方所有文件到他人可以得到的地方的权利。这是大部分UnixTCP/IP栈的脆弱性的根源。由于它是在网络上的每个人都

根源。

2.2 缓冲区溢出漏洞

缓冲区溢出是指当试图将超过缓冲区能处理的更多的数据加入到缓冲区时,发生缓冲区溢出。

2.2.1 缓冲区溢出的分析

缓冲区溢出是一种系统攻击的手段,通过往程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行非预期指令,以达到攻击的目的。

2.2.2 缓冲区溢出的原理

缓冲区溢出的原因是由于字符串处理函数(gets,strcpy等)没有对数组的越界加以监视和限制,结果覆盖了老的堆栈数据。

在计算机内的程序是按以下形式存储的,见图1。

图1 程序在内存中的存储

从图1可以看出,输入的形参等数据存放在堆栈中,程序是从内存低端向内存高端按顺序执行的,由于堆栈的生长方向与内存的生长方向相反,因此在堆栈中压入的数据超过预先给堆栈分配的容量时,就会出现堆栈溢出,从而使得程序运行失败;如果发生栈溢出的是大型程序还有可能导致系统崩溃。

#include

int main()

char name[16];

gets(name);

for(int i=0;i<16&&name[i];i++)

printf(,name[i]); }

编译上述代码,输入“hello world!”结果会输出hello world!,其中对堆栈的操作是先在栈底压入返回地址,接着将栈指针EBP入栈,此时EBP等于现在的ESP,之后ESP减16,即向上增长16个字节,用来存放name[]数组,现在堆栈的布局如图2。

图2 程序运行之初堆栈的状态

执行完gets(name)之后,堆栈中的内容如见图3。

图3 运行完gets(name)后堆栈的状态

最后,从main返回,弹出ret里的返回地址并赋值给EIP,CPU继续执行EIP所指向的命令。如果我们输入的字符串长度超过16个字节,例如输入:hello world!AAAAAAAAAA A ,则当执行完gets(name) 之后,堆栈的情况如图4。

图4 缓冲区溢出状态

由于输入的字符串太长,name数组容纳不下,只好向堆栈的底部方向继续写‘A’。这些‘A’覆盖了堆栈的老的元素,从图4可以看出,EBP,ret都已经被‘A’覆盖了。从main 返回时,就必然会把‘AAAA’的ASCII码——0x41414141视作返回地址,CPU会试图执行0x41414141处的指令,结果出现难以预料的后果,这样就产生了一次堆栈溢出。假如使用的操作系统为Win9X的话,会得到那个经典的“该程序执行了非法操作”的对话框。

2.2.3 缓冲区溢出漏洞的产生原因

缓冲区溢出的根本原因在于C语言本身的一些特性。从数据结构的角度来说,最根本的

直接的原因则是“由于字符串处理函数(gets,strcpy等等)没有对数组的越界加以监视和限制”。C中大多数缓冲区溢出问题可以追溯到标准函数库,直接的原因是不进行自变量检查和使用一些有问题的字符串操作函数(strcpy、strcat、sprinf和gets)。程序编写者的经验不足和粗心大意使得缓冲区溢出漏洞几乎无处不在,导致程序健壮性不够,为缓冲区溢出攻击留下了隐患。特别是由于Internet的迅速发展,各种网络应用程序层出不穷,而其中一个个缓冲区溢出漏洞则给整个系统带来了极大的安全隐患,为黑客攻击打开方便之门。

2.2.4 缓冲区溢出漏洞的危害性

缓冲区溢出漏洞比其他一些黑客攻击手段更具有破坏力和隐蔽性。这也是利用缓冲区溢出漏洞进行攻击日益普遍的原因。它极易使服务程序停止运行,服务器死机甚至删除服务器上的数据。最后,缓冲区溢出漏洞的普遍存在,使得针对这种漏洞的攻击防不胜防(各种补丁程序也可能存在着这种漏洞)。

2.2.5 防范及检测方法

(1)编写程序中应该时刻注意的问题

程序员应该养成安全编程的思想,熟悉那些可能会产生漏洞的函数,和编程中要小心使用的函数(特别是在使用C语言时),例如:gets()、strcpy()等等。

在软件测试阶段,要专门对程序中的每个缓冲区作边界检查和溢出检测。

(2)使用安全语言编写程序

应使用Java等安全的语言编写程序,因为Java在对缓冲区进行操作时,有相应的边界检查,所以可以有效地防止缓冲区溢出漏洞的产生。但是,Java也并非绝对安全,Java的解释器是用C语言编写的,而C并不是一种安全的语言,所以Java解释器还是可能存在缓冲区溢出漏洞并受到攻击。

(3)改进编译器

改进编译器的主要思想是在编译器中增加边界检查以及保护堆栈的功能,使得含有漏洞的程序和代码段无法通过编译。针对gcc编译器的很多补丁就提供了这些功能,比如说Stackguard。

(4)利用人工智能的方法检查输入字段

黑客利用缓冲区溢出漏洞进行攻击时,必须将其设计的溢出字符串包含在输入字符串中。如果能检测到输入字段中存在非法字段,就可以将黑客的攻击记录下来,以便防范。利用溢

图5 利用人工智能的方法进行字符串检查

(5)对堆栈栈底进行实时的监测

监测一个堆栈应从其被建立到其消亡的全过程,需要监测的内容有堆栈的标志、栈底的地址、栈底存放的内容、被压入栈的返回地址和EBP的值、可执行的压栈操作次数、栈的大小等等。这些内容可以从操作系统获得,并需要监测CPU的状态。可以用两种方法实现对堆栈的实时监测。

①缓冲区溢出漏洞攻击的目的是修改栈底的返回地址。据此,可以先建立一张表对栈底内容实行监控,模型如表1所示。

表1 堆栈监控表

只要比较堆栈建立时的栈底地址和栈操作结束时的栈底地址,如果相同则置“溢出标志位”表项为“0”,正常返回,不做干预;如果不同,那么可以肯定堆栈发生了溢出,则置相应表项——“出标志位”为“1”,报告错误,并填写相应的日志,禁止按栈内容返回,等待管理员处理。

②可以对输入字符串的长度进行监控。同样可以建立一张表,模型如表2。

表2 字符川长度监控表

从表中可以很清楚地知道输入字符串的长度是否超过了缓冲区的长度,并通过溢出标志位的值来对堆栈的使用情况进行实时监控。

这种方法已经在很多种操作系统上有了相应的补丁,但它也不是一个万全之策,既然不可能在堆栈段执行程序,那么就将溢出字符串写入到数据段区或程序段区,这样就仍然可以执行。

(7)修改现在缓冲区的数据结构

事实上,要从根本上解决缓冲区溢出漏洞,必须从修改缓冲区的数据结构入手。只要有了安全的数据结构,就能构建出安全的函数和程序,从而防止由于数据结构上的不合理而造成的安全隐患。在C++中提倡使用的String函数库,正是针对C语言中的这一弱点而开发的。

2.3 允许拒绝服务的漏洞

此种漏洞是操作系统软件本身存在的漏洞,存在于UNIX操作系统的网络服务核心。利用Internet协议组的某些方面拒绝其他用户对系统或信息合法的访问的功绩。在TCPSYN攻击中,连接请求大量的传给服务器,使其请求信息被淹没,结果服务器反应很慢或不能到达,陷入长期的停顿状态,导致拒绝服务攻击。CHARGEN攻击也是拒绝服务攻击中的一种,CHARGEN 是运行在端口19的服务,它主要用于调试字符产生器。当用户连接端口19的TCP/chargen服务时,主机就会回传大量的资料,再配合包装成http的型式,就可以让用户收到大量的封包而消耗大量的记忆体,使用户所使用的网络协议被拖垮。

2.4 允许有限权限的本地用户未经授权提高其访问权限的漏洞

本地用户是指在目标机的网络上有帐号的人。典型例子是通过Shell访问其ISP用户。如果有E—mail地址且这个帐号允许Shell访问,那么“本地”用户可能是在千里之外。因此在这种情况下,这类漏洞产生的原因是由应用程序中的一些缺陷引起的。例如Sendmail启动时,它一般要求检验用户的身份,因为只有root有权启动和维护Sendmail程序。然而,根据CERT 咨询处的“SendmaildaemonModeVulnerability”:很遗憾,由于一个代码错误,Sendmail在例程模式下可以以一种绕过潜入检查的方式激活。当绕过检查后,任何本地用户都可以在例程模式下启动Sendmail。另外,在Sendmail8.7版本中,Sendmail收到一个SIGHUP信号时会重启。它通过使用exec(系统调用重新执行自己来重新开始操作。重新执行作为root用户实现。通过控制Sendmail环境,用户可以用root权限让Sendmail运行任意的程序。”通过这种办法本地用户可以获得一种形式的root访问。由于用户需要使用Sendmail程序这一基本权限发送邮件,如果没有,他们没法发送,因此这些程序对网上所有的用户都是有用的,所以Sendmail中的任何漏洞都

2.5 允许在远程主机上的未经授权用户访问网络的漏洞

这类漏洞是威胁性最大的一种漏洞。这类漏洞主要是由于较差的系统管理或设置有误造成的。典型的设置错误(或设置失败)是任何存放在驱动器上的例子脚本。他会为来自网络空间的入侵者提供优先的访问权限甚至root的访问权限。例如,Microsoft的Internet信息服务器(IIS)包含一个允许远程用户执行人已命令的漏洞。并且IISHTTP将所有以.bat或.cmd为后缀的文件与cmd.exe程序联系起来,入侵者如果能够执行cmd.exe文件,那么它就可以执行任何命令,读取任意分区的任意文件,这将从外界对系统造成严重的威胁。

3 检测漏洞技术

3.1 采用安全漏洞扫描技术查找系统漏洞

漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的Web服务器的各种TCP端口的分配、提供的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞,为修补漏洞打下基础。按常规标准,漏洞扫描器可分为两种类型:网络漏洞扫描器(NetworkScanner)和主机漏洞扫描器(HostScanner)。除了上述二大类的扫描器外,还有一种专门针对数据库作安全漏洞检查的扫描器,主要功能为找出不良的密码设定、过期密码设定、侦测攻击行为、关闭久未使用的帐户,而且能追踪登录期间的限制活动等。另外,分布式扫描技术、扩展扫描技术、智能扫描(具有自学习能力的渐进式扫描)技术等也是比较常见的漏洞扫描技术。

3.1.1 基于网络的漏洞扫描

网络漏洞扫描器是指基于Internet远程检测目标网络和主机系统漏洞的程序,如提供网络服务、后门程序、密码破解和阻断服务等的扫描测试。扫描制定网络内的服务器、路由器、网桥、交换机、访问服务器、防火墙等设备的安全漏洞,模拟黑客攻击以测试系统的防御能力,并找出补救办法,从而使系统更加安全可靠。

基于网络的漏洞扫描器,一般由以下几个方面组成:

(1)漏洞数据库模块:漏洞数据库包含了各种操作系统的各种漏洞信息,以及如何检测漏洞的指令。

(2)用户配置控制台模块:用户配置控制台与安全管理员进行交互,用来设置要扫描的

(3)扫描引擎模块:扫描引擎是扫描器的主要部件。根据用户配置控制台部分的相关设置,扫描引擎组装好相应的数据包,发送到目标系统,将接收到的目标系统的应答数据包,与漏洞数据库中的漏洞特征进行比较,来判断所选择的漏洞是否存在。

(4)当前活动的扫描知识库模块:通过查看内存中的配置信息,该模块监控当前活动的扫描,将要扫描的漏洞的相关信息提供给扫描引擎。

(5)结果存储器和报告生成工具:报告生成工具,利用当前活动扫描知识库中存储的扫描结果,生成扫描报告。

3.1.2 基于主机的漏洞扫描

主机漏洞扫描器是指针对操作系统内部进行的扫描,如Unix、NT、Linux系统日志文件分析,可以弥补网络型安全漏洞扫描器只从外面通过网络检查系统安全的不足。与基于网络的漏洞扫描器的原理类似,但是,两者的体系结构不一样。基于主机的漏洞扫描器通常在目标系统上安装了一个代理(Agent)或者是服务(Services),以便能够访问所有的文件与进程,这也使的基于主机的漏洞扫描器能够扫描更多的漏洞。一般采用Client/Server的架构,采用统一控管的主控台(Console)和分布于各重要操作系统的Agents,然后由Console端下达命令给Age nts进行扫描,各Agents再回报给Console扫描的结果,最后由Console端呈现出安全漏洞报表。

3.2 通过判断服务器操作系统的类型查找系统漏洞

OS识别是入侵或安全检测需要收集的重要信息,是分析漏洞和各种安全隐患的基础。只有确定了远程主机的操作系统类型、版本,才能够对其安全状况作进一步的评估。

(1)主动协议栈指纹识别

①FIN探测;

②BOGUS标记探测;

③ISN采样探测;

④TCP初始窗口的大小检测;

⑤TCP可选项探测;

⑥ACK值探测;

直接联接端口根据其返回信息来判别操作系统:

如果机器开了80端口,可以Telnet它的80端口;返回信息:MicrosoftWindows2000[Version 5.002195](C)版权所有1985-1998MicrosoftCorp

被动协议栈指纹识别在原理上和主动协议栈指纹识别相似,但是它从不主动发送数据包,只是被动地捕获远程主机返回的包来分析其OS类型(版本),一般可以从4个方面着手:

①TTL值;

②WindowSize;

③DF可以查看操作系统是否设置了不准分片位

④TOS操作系统是否设置了服务类型。

执行C:ping10.1.1.2,返回信息:

pinging10.1.1.2with32bytesofdata:

Replyfrom10.1.1.2bytes=32time<10msTTL=128.

..

执行C:ping10.1.1.6后,返回信息

Pinging10.1.1.6with32bytes=32time=250msTTL=237

根据ICMP报文的TTL值,就可以大概知道主机类型。如TTL=125左右的主机应该是Windows系列的,TTL=235左右的主机应Unix系列的,这是因为不同系统的机器对ICMP报文的处理与应答有所不同,所以造成了TTL回复值的不同。

3.3 通过判断服务器开放端口来查找系统的漏洞

一方面可以借助系统Win2000/XP/Server2003中自带的命令netstat-an查开放的端口;另一方面也可以借助第三方软件查看系统都开放了哪些端口,比如Smartline出品的ActivePorts程序可用来监视电脑所有打开的TCP/UDP/IP端口,不但可将所有端口显示出来,还可以显示出所有端口所对应的路径以及本地IP和远端IP是否正在活动等情况。针对端口开放情况就可以得知主机提供的服务和潜在的漏洞。

3.3.1 端口扫描

一个端口就是一个潜在的通信通道,也是一个入侵通道。对目标主机进行端口扫描能得到许多有用的信息。

①TCPconnect()扫描;

②TCPSYN扫描;

③秘密扫描;

④间接扫描;

⑥代理扫描;

⑦IP分段扫描;

⑧UDPICMP端口不可到达扫描。

4 消除系统漏洞风险

4.1 安全设置

4.1.1 操作系统的安全保护措施

操作系统的保护对象一般有:可共享的数据、程序和文件;存储器;可共享的I/O设备,如磁盘、打印机等。

(1)过滤保护:分析所有针对受保护对象的访问,过滤恶意攻击以及可能带来不安全因素的非法访问。

(2)安全检测保护:对所有用户的操作进行分析,阻止那些超越权限的用户操作以及可能给操作系统带来不安全因素的用户操作。

(3)隔离保护:在支持多进程和多线程的操作系统中,必须保证同时运行的多个进程和线程之间是相互隔离的,即各个进程和线程分别调用不同的系统资源,且每一个进程和线程都无法判断是否还有其它的进程或线程在同时运行。

一般的隔离保护措施有以下4种:

①物理隔离:不同的进程和线程调用的系统资源在物理上是隔离的;

②暂时隔离:在特殊需要的时间段内,对某一个或某些进程或线程实施隔离,该时间段结束后解除隔离;

③软件隔离:在软件层面上对各个进程的访问权限实行控制和限制,以达到隔离的效果;

④加密隔离:采用加密算法对相应的对象进行加密。

4.1.2 可共享的数据、程序和文件的保护

随着操作系统的发展,多用户操作系统已经成为主流。现今的很多操作系统都往往会有两三个甚至更多的合法用户,这些用户在不同的时间使用同一个操作系统,同一个硬盘。在这种情况下,如何确保每一个用户的私人文档不能被其它用户无意或有意的访问、修改甚至删除,就成为了安全操作系统的重要课题。并且随着系统复杂性的不断增加和用户数量的不断增大,这一保护机制实现的复杂性和难度也在不断增加。

在“无保护”的操作系统中,计算机硬盘内的数据、程序和文件缺省是共享的,也就是说,任何合法的用户都能访问这些缺省是共享的数据、程序和文件,对他们施行读、写甚至是删除操作。一般来说,在“无保护”的机制下,使用同一操作系统的合法用户往往数量很少且彼此之间相互了解和信任。在“无保护”的操作系统中,仍然有一些系统文件是受口令保护的,只有具有操作系统管理员权限的用户才能够打开和读写这些系统文件。随着计算机系统和计算机网络的急速发展,使用同一操作系统的用户或具有访问同一计算机系统权限的合法用户的数量

已经大大增加了,用户数量的增长直接导致了他们之间的相互信任程度的不确定性。所以,在多数情况下,“无保护”的操作系统已经不能够适应现今复杂的计算机网络环境了。

(2)分组保护

由于不是每一个操作系统的合法用户都是数量很少且彼此之间相互信任的,又产生了“分组保护”。“分组保护”一般将所有的合法用户分为若干个不同的组,将具有相同或类似需要的一个或多个用户分为同一个组,而将需求不同的用户划分在不同的组中。一个用户只能属于一个组,不能同时属于两个或多个不同的组。对于处于同一组内的一个或若干个用户,由于他们的需求类似,所以赋予他们对于某些文件相同的访问权限。对于被赋予了某种访问权限的一个文件来说,所有的用户可分为两类:“本组用户”和“其它组用户”。他们对于该文件往往具有不同的访问权限。比如,“本组用户”对该文件既具有读的权限又具有写的权限,而“其它组用户”对该文件只具有读的权限而没有写的权限。从而在一定程度上保证了系统中可共享的数据、程序和文件的安全。采用分组保护的操作系统的安全性明显要强于无保护的操作系统。但是,分组保护机制在提供了一定程度上的安全性的同时,也给处于不同组中的用户之间的交流带来了不便。

(4)口令保护

随着操作系统的发展,口令的使用已经越来越广泛。在现今的操作系统中,用户不仅可以对个体的数据、程序或文件加上口令,还可以对应用软件甚至整个操作系统和计算机系统都加上口令。这就大大提高了个体的数据、程序和文件的安全性。

4.1.3存储空间安全

由于操作系统的多道程序机制,必须使得各个进程访问的存储空间相互独立且不能相互访问。一般而言,实现存储空间的相互独立有以下三种方式:

(1) 栅栏保护

栅栏保护是最简单的存储空间安全机制,它用一道“栅栏”将主存储器分为系统程序部分

栏”之前的存储空间,而用户程序只能使用该地址之后的存储空间,从而避免了“撞车”。栅栏保护可以使用一个存放系统程序存储空间末地址的栅栏寄存器,亦即用户程序装入的开始地址,从而确保了二者的分离。例如,在栅栏寄存器中存入地址x,即系统程序只能调用存储器中的0~x地址部分,应用程序只能调用存储器中地址大于x的部分。对于任意一个应用程序,操作系统首先检测其在存储器中的开始地址,如发现该地址大于或等于x1,则该应用程序可以顺利执行;如发现该地址小于x1,则说明该应用程序在存储器中侵入了系统程序部分,操作统将报错并中止该应用程序。该栅栏地址也会随操作系统占用空间需要的变化而变化。但是,栅栏保护虽然保证了整个存储空间中的系统软件和用户软件的相互分离,却并不能避免不同用户程序之间的相互干扰。

(2) 基址边界保护

基址边界保护是栅栏保护的发展,它在采用栅栏寄存器的基础上还对每一个不同的用户程序都采用两个寄存器以确定其在存储器中的地址空间。第一个寄存器叫基址寄存器,存放某一用户程序在存储器中的起始地址;第二个寄存器叫边界寄存器,存放该用户程序在存储器中的终止地址。如,假设栅栏寄存器的地址为x,即在存储器地址0~x部分装入系统程序,而在存储器地址x+1及以后的部分装入多个不同的用户程序:用户程序1,用户程序2……。对于用户程序1,设置两个寄存器:①基址寄存器1,内容为x+1;②边界寄存器1,内容为y。通过这两个寄存器限定了用户程序1所能够使用的存储器地址范围是x+1~y。同理,对于用户程序2有①基址寄存器2,内容为y+1;②边界寄存器2,内容为z。限定了用户程序2所能够使用的存储器地址范围是y+1~z。依此类推。和栅栏保护一样,在调用用户程序1时,首先检测其所在的存储器地址是否在x+1~y的范围之内,如果是,则该用户程序可以顺利运行;如果不是,则操作系统自动报错并终止该用户程序的运行。由于对每一个应用程序都采用了基址和边界寄存器,基址边界保护克服了栅栏保护的缺点,有效的避免了不同用户程序之间的干扰。

(3) 段页式保护

①段式保护

段式保护在基址边界保护的基础上继续将一个程序划分成多个不同的部分,每一部分称为一段。这一段可以是主程序,也可以是主程序的一个子程序,或者是一个数组,等等。每一个段内的内容用一个形如(name,addr)的二元组表示。“name”是该段存放的数据名字,存放该段的起始地址,“addr”是该段起始地址的增量。例如,对于子程序1来说,根据“段地址转换表”,它只能调用存储器中从地址y开始的一段部分,对于其它的段也是一样,从而更好的避免了不同的“段”之间的干扰。

页式保护就是将程序划分成相同大小的部分,每一部分称为一页。和段式保护十分类似,每一个页的内容用一个形如(page,addr)的二元组表示。同时将存储器也划分成若干个大小相同的部分,每一个部分称为一页(page,frame)。页面大小通常512—4096B。例如,对于某一程序分页所得的“页1”部分来说,根据“页地址转换表”,它只能调用存储器中从地址x开始的一段,对于其它的“页”也是此。与段式保护不同的是,不同的页所能调用的存储器空间的容量是一样的。从而为避免不同的“页”之间的相互干扰提供了一种新的方法。

③段页式保护

由于段式保护的保护功能强大,页式保护的操作方便,所以在很多情况下将两者结合起来使用,称为段页式保护。即先将一个程序分成段,规定每段所能调用的存储器部分,再将各段划分成不同的页,每页调用相同大小的存储器部分。

4.2 防火墙

计算机网络具有联结形式多样性、终端分布不均匀性和网络的开放性、互连性等特征,致使网络易受黑客怪客、恶意软件和其他不轨的攻击。当前人们主要采用防火墙技术作为网络安全的保障手段。防火墙是一个加强机构网络与因特网之间安全访问的控制系统,它保护的是数据、资源和用户的声誉。

4.2.1 防火墙的基本概念

在计算机中,防火墙是一个或一组系统,它在网络之间执行访问控制策略。实现防火墙的实际方式各不相同,但是在原则上,防火墙可以被认为是这样一对机制:一种机制是拦阻传输流通行,另一种机制是允许传输流通过。一些防火墙偏重拦阻传输流通行,而另一些防火墙则偏重允许传输流通过。防火墙是不同网络或网络安全域之间信息的惟一出入口,能根据企业的安全政策控制(允许、拒绝、监测)出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息安全服务,实现网络和信息安全的基础设施。在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和因特网之间的任何活动,保证了内部网络的安全。

4.2.2 防火墙的基本功能

(1)过滤不安全服务:防火墙可以控制不安全服务,只有授权的协议和服务才能通过防火墙。

(2)过滤非法用户和访问特殊站点:提供对站点的访问控制,防火墙可以有效地防止非法

(3)集中安全保护:如果一个子网的所有或大部分需要改动的软件以及附加的安全软件能集中放在防火墙系统中,而不是分散到每个主机中,这样防火墙的保护相对集中一些。

(4)集中安全管理:防火墙对企业内部网实现集中安全的管理,而无须在内部网每台机器上分别设立安全策略。

(5)增强保密性:使用防火墙系统,站点可以防止finger以及DNS域名服务。也能封锁域名服务信息。

(6)网络连接的志记录及使用统计:防火墙系统能够对所有的访问做出日志记录。记录和统计通过防火墙的网络通信,提供关于网络的统计数据。

(7)策略执行:防火墙提供了制定和执行网络安全策略的手段。

(8)其他安全控制:各组织机构可以根据本单位的特殊要求来配置防火墙系统,从而使自己单位的网络安全运行。

4.2.3 防火墙的基本技术

防火墙的基本思想———不是对每台主机系统进行保护,而是让所有对系统的访问通过某一点,并且保护这一点,并尽可能地对外界屏蔽保护网络的信息和结构。它是设置在可信任的内部网络和不可信任的外界之间的一道屏障,它可以实施比较广泛的安全政策来控制信息流,防止不可预料的潜在的入侵破坏。防火墙系统可以是路由器,也可以是个人机、主系统或者是一批主系统,专门用于把网点或子网同那些可能被子网外的主系统滥用的协议和服务隔绝。防火墙可以从通信协议的各个层次以及应用中获取、存储并管理相关的信息,以便实施系统的访问安全决策控制。防火墙的技术已经经历了三个阶段。即包过滤技术、代理技术和状态检测技术。

(1) 包过滤技术。包过滤防火墙的安全性是基于对包的IP地址的校验。在因特网上,所有信息都是以包的形式传输的,信息包中包含发送方的IP地址和接收方的IP地址。包过滤防火墙将所有通过的信息包发送方IP地址、接收方IP地址、TCP端口、TCP链路状态等信息读出并按照预先设定的过滤原则过滤信息包。那些不符合规定的IP地址的信息包会被防火墙过滤掉,以保证网络系统的安全。包过滤防火墙主要是防止外来攻击,或是限制内部用户访问某些外部的资源。包过滤防火墙简单、透明,而且非常行之有效,能解决大部分的安全问题,这是一种基于网络层的安全技术,对于应用层的黑客行为是无能为力的。

(2) 代理技术。代理服务器通常也称作应用级防火墙。所谓代理服务,即防火墙内外的计算机系统应用层的链接是在两个终止于代理服务的链接来实现的,这样便成功地实现了防火

服务器像一台客户机一样取回所需的信息再转发给客户。它将内部系统与外界隔离开来,从外面只能看到代理服务器而看不到任何内部资源。代理服务器只允许有代理的服务通过,而其他所有服务都完全被封锁住。这一点对系统安全是很重要的,只有那些被认为“可信赖的”服务才允许通过防火墙。另外代理服务还可以过滤协议,如可以过滤FTP连接,拒绝使用FTPput(放置)命令,以保证用户不能将文件写到匿名服务器。代理服务具有信息隐蔽、保证有效的认证和登录、简化了过滤规则等优点。网络地址转换服务(NAT)可以屏蔽内部网络的IP地址,使网络结构对外部来讲是不可见的。

(3) 状态检测技术。网络状态检测技术一般工作在系统的内核,通过截获网络中的数据流,对信息进行状态提取,由此实现信息监控功能。状态检测的提出基于这样一种思想:防火墙要有效地提供真正的安全,应该能够跟踪并控制穿越它的信息。因此,它采用了一个在网关上执行网络安全策略的软件引擎,称之为检测模块。该模块在不影响网络安全正常工作的前提下,采用抽取相关数据的方法对网络通信的各个层次实行监测,并做安全决策的依据,检测模块支持多种网络协议和应用协议,可以方便地实现应用和服务的扩充。状态检测服务可以检测RPC(远程过程调用)和UDP(用户数据包)端口信息,而包过滤和代理服务则都无法做到。

4.2.4 防火墙的局限性

(1)防火墙也不能解决进入防火墙的数据带来的所有安全问题。

如果用户抓来一个程序在本地运行,那个程序很可能就包含一段恶意的代码,或泄露敏感信息,或对用户的系统进行破坏。随着Java,Script 和ActiveX控件及其相应浏览器的推广,这一问题变得更加突出和尖锐。

(2)防火墙的另一个缺点是易用性不够,大多数产品还需要网络管理员手工建立。防火墙在当今因特网上的存在是有生命力的,但它不能替代墙内的安全措施。防火墙被用来防备已知的威胁,如果是一个很好的防火墙设计方案,可以防备新的威胁,但没有一个防火墙能自动防御所有的新的威胁。总之,防火墙并不是解决网络安全问题的万能药方,而只是网络安全策略中的一个组成部分。因为网络安全是个综合的概念,从内部到外部,从用户自身到防火墙自身,从安全策略到应用服务的权衡,都需要考虑。相信随着反攻击技术的发展,防火墙的安全性及其功能也会不断地得到加强。

4.3 提高意识,做好补丁管理

如果系统漏洞的产生是由于软件系统存在着瑕疵而造成的,从相应网站下载系统补丁是

为系统安装补丁程序,但系统上运行第三方的服务程序却常被忽略。管理员应该注意这些厂商所发布的漏洞,并及时地安装补丁或升级服务程序。补丁管理一直以来是大家认为最方便可以实现对漏洞清除有效的手段,这些手段中间最有意义莫过于可以快速在网络中间实施应用起来并且防御效果往往是最显著的,可能相应产生的误杀可能性比较小。

4.4 注意异常连接和系统日志

针对漏洞的攻击,防火墙和防病毒软件是无法检测的。

防火墙的特性是它能够对所有进出的连接加以控制,仅依赖防火墙的默认置规则是不够安全的。管理员需要制定严格的访问规则,仅打开需要对外提供服务的端口。这样即使黑客能够通过漏洞打开系统的某个端口,但是由于该端口受防火墙的阻挡,黑客也无法建立连接。

当发生溢出攻击时,服务程序会出现意外错误,管理员还可以通过检查日志记录,了解错误发生的来源、频率、时间、类型等详细内容,依此判断是否遭受攻击。

4.5 IPS实现主动防御

在实施主动防御之前,先认识黑客通过漏洞实施的攻击过程。以windows系统漏洞为例,例如通过漏洞入侵内存之后,一个蠕虫可以方便地复制自己和感染相应的计算机对象,最后导致计算机的崩溃,引起拒绝服务的现象,这样就会导致信息资产最终无法工作,更可怕的是,很多写入内存的脚本会不断复制传播到其他计算机,最终可能感染所有网络上的终端计算机。

面对这样的问题,如果企业启用入侵防护(IPS)系统,无论是网络入侵防御,还是主机入侵防御都可以很实时找到相应的对象,并且对感染过程进行阻断和防御。

4.6 虚拟防护防止LAN攻击

面对复杂的网络很难准确定义其边界,利用防火墙隔离的时候就很难界定。这时候可以

5 Windows系统常见漏洞分析及其解决方法

5.1 安全设置

5.1.1 充分利用自带的免费Internet连接防火墙功能(ICF)

WindowsXP(ICF)是一个基于包的防火墙,防火墙首先不响应Ping命令,并禁止外部程序对本机进行端口扫描,并自动记录所有发出、接收的数据包的IP地址、端口、服务以及其他一些代码。这样有效地减少了外部攻击的威胁。Internet连接防火墙功能(IC)需要激活后方可使用,WindowsXP支持拨号上网的用户使用防火墙功能,点击"拨号连接"属性,在"高级"中有一项为"Internet连接防火墙"把其中的"通过限制或阻止来自Internet的对此计算机的访问来保护我的计算机和网络"的选择框内打上"",点击"确定"按钮即可激活防火墙功能。

5.1.2 利用WindowsXP内置的IE

6.0来保护个人隐私:

首先在IE6.0中定义透露个人信息的具体参数选项,浏览器会在用户上网时,自动判断所访问的站点的安全、可信等级。对于安全站点,浏览器把用户的隐私参数和站点定义的隐私政策进行比较。根据预先设定的隐私参数,来限制信息方面的流通。

5.1.3 利用加密文件系统(EFS)加密

在WindowsXP中EFS使用扩展数据加密标准(DESX)作为加密算法。EES自动地为用户生成一对密钥和证书,并在利用了CryptoAPI结构的情况下以公钥加密为基础。当用户加密文件夹的时候,该文件夹的下层所有文件夹和文件部将被自动加密。加密后的文件夹将限制、识别用户是否属于非法访问,只有对这个文件进行加密的用户可以打开这个文件并使用它。当入侵者对存储数据的计算机有完全入侵能力的时候,重重的加密文件登录鉴定和文件许可这些安全特性将有效地阻止入侵者的行为。

5.1.4 屏蔽不需要的服务组件

XP有众多的服务组件,但用户能真正在日常用到的组件还是为数不多,黑客们会据此尝试一些人侵。所以,屏蔽一些暂时还不需要的服务组件是目前我们所能做的安全设置中的一个重要部分。

右键单击"我的电脑"选择"属性→管理→服务的应用程序→服务"选项,可以看到

相关主题
相关文档
最新文档