第6章 网络安全
- 格式:doc
- 大小:617.50 KB
- 文档页数:22
第6章网络安全
6.3 漏洞扫描与网络隔离技术
随着计算机技术和互联网的迅速发展,来自网络的攻击每年呈几何级数增多。这些攻击中的大多数是利用计算机操作系统或其他软件系统的漏洞(vulnerability)而实施的。针对层出不穷的系统安全漏洞,微软等软件厂商都会定期发布漏洞报告并提供补丁,但由于用户群的数量巨大,分布很广,很多情况下不能及时对系统进行更新,使得攻击者有可乘之机。
而随着操作系统、数据库等软件系统的越来越复杂,出现漏洞的数量逐年增多,频率也比以前大大增加了。下表是来自美国卡内基梅隆大学计算机应急响应小组(CERT/CC)的统计数字,显示了1998年以来该组织收到的计算机漏洞报告的数量。
表6-3 CERT/CC历年漏洞报告数量统计
从表中可以看出,2000年以后,每年新发现的漏洞数量已经数以百计,远远高于2000年以前的情况。而这还只是官方的统计,还有很多漏洞在民间发现后未报告给官方组织,也没有相应的安全补丁。
随着攻击技术的发展,漏洞不但数量上呈爆发式增加,而且每个漏洞被首次发现和此漏洞被成功利用形成攻击的时间间隔也越来越短,从几个月、几周缩小到几天,甚至出现了所谓“零日攻击”,即漏洞公开和攻击形成之间几乎没有以“天”计算的时间间隔。例如,2004年3月份出现的维迪(Worm_Witty.A)病毒,利用美国ISS公司产品的安全漏洞感染破坏使用运行该公司产品的主机,该病毒是在漏洞公布的第二天就出现了,几近于“零日攻击”。这给信息系统的安全带来了十分严峻的挑战。
本节将从漏洞介绍人手,首先介绍漏洞的概念和漏洞的分类,然后在简要描述漏洞扫描技术的基础上,对目前流行的几种商用和非商用漏洞扫描器产品给予介绍,最后介绍网络隔离技术。
6.3.1 漏洞及其分类
1. 漏洞的概念
漏洞,也叫脆弱点,英文叫做vulnerability,是指在计算机硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。例如,在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS
协议中认证方式上的弱点,在Windows 2000中的DCOM缓冲区溢出问题,在UNIX系统管理员设置匿名rtp服务时配置不当的问题等都是漏洞,它们可能被攻击者利用进而威胁到系统的安全。
2. 漏洞的时间与空间特性
漏洞会在很大范围内对各种软硬件设备的安全产生影响,包括操作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。简而言之,任何软硬件设备中都可能存在漏洞,在同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。
漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些被逐步发现的漏洞也会由系统供应商发布的补丁所修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中的漏洞的同时。也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现,漏洞问题也会长期存在。
对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的发展动态,这一点同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,即使是以前所做的工作也会逐渐失去价值。
3. 漏洞的分类
漏洞的分类方法很多,也没有统一的标准。事实上各种分类方式都是为了采取措施的方便,按照所能够采用的措施来分别对付各类漏洞。传统上习惯于按照形成漏洞的原因来分类,但有时候也是很难明确界定的,因为对漏洞研究的不同抽象层次,会对同一个漏洞做出不同的分类。因而,事实上至今也不存在完美分类方案。下面按照漏洞的形成原因,粗略划分了几个类别。
(1)输入验证错误
大多数的缓冲区溢出漏洞和脚本注入、SQL注入类漏洞都是由于未对用户提供的输入数据的合法性做适当的检查而导致的。这类漏洞在目前来看是攻击者最感兴趣的,许多恶意代码程序就是利用了此类漏洞达成攻击目的。
(2)访问验证错误
漏洞的产生是由于程序代码的某些部分存在可利用的逻辑错误,使绕过访问控制成为可能。分析下面的伪代码:
Switch (职位)
{
case“员工”:
Employee();
break;
case“部门经理”:
Manager();
case“总经理”:
JeneralManager();
break;
}
在“部门经理”的分支中,由于漏掉了中断语句“break”,使得只有总经理才能执行的JeneralManager函数得以执行,这就为攻击者提供了一个机会,使得以低级别职员的身份就可以执行只有高级别职员才能执行的操作。这就是—个典型的访问验证类逻辑错误。
(3) 同步问题
这类漏洞源于程序处理各种系统对象时在同步方面存在问题,处理的过程中可能存在一个时机,使攻击者能够施加外来的影响。例如,早期的Solaris系统的查看进程状态的命令ps 就存在这种类型的漏洞。“ps”在执行的时候会在/tmp产生一个临时文件,然后把使用修改文件所有者的“chown”命令改为root。这样,就导致了非root用户可以产生root拥有的文件。有经验的攻击者可以以这个文件为突破口获得root权限。
(4) 异常处理的疏漏
这类漏洞的产生在于程序在它的实现逻辑中没有考虑到一些意外情况。例如,基于数据库的Web程序当出现数据库错误时,将错误信息返回客户端并显示在页面上,这样会给攻击者提供一些信息,使其可以找到入侵系统的办法。
(5) 配置错误
这类漏洞是由于系统和应用的配置有误。例如,软件安装在错误的地方、采用了不合理的配置参数、在访问权限的控制上不够严格或者系统的安全策略存在问题。
(6) 由系统环境引发的问题
一些系统的环境变量发生变化时,可能会给攻击者提供可乘之机。例如,攻击者可能通过重置shell的内部分界符IFS,shell的转义字符,或其他环境变量,导致有问题的特权程序去执行攻击者指定的程序。RedHat Linux的dump程序漏洞就是这种类型。
(7) 其他错误
不属于以上类型的其他漏洞。
6.3.2 网络扫描技术
我们一般所说的网络漏洞扫描,实际上是对网络安全扫描技术的一个俗称。事实上安全扫描技术分为两类:
(1) 主机安全扫描技术。主机安全扫描技术的原理很简单,就是采用各种攻击脚本对主机操作系统、应用程序和各种服务进行模拟攻击探测,以发现不当配置和已知漏洞。主机安全扫描技术一般是在主机上本地进行的,大部分情况下需要有主机的管理员权限。