Web的入侵防御系统的设计与实现
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1 引言
连接入互联网中的每一台服务器每时每刻都会受到来自病毒蠕虫的侵扰和黑客的入侵。目前,很多针对Web服务器的攻击都是通过Http协议发起的,所以传统的防火墙对诸如SQL注入这种攻击方式不能提供很好的保护。在很多网络环境中,正是由于Web服务器同时对内部网络和外部网络提供服务,使其成为整个网络中最常被攻击的目标。恶意的攻击者往往通过Web服务器上的突破口,来进一步对内部网络进行渗透。所以,Web服务器的安全显得尤为重要。
本课题的首先对Web服务器所受到的威胁及相应的防御方式做了一些调研,然后针对Web服务器所受的这些威胁设计了一套专门针对Web服务器安全的轻量级的入侵防御系统, 并通过ISAPI实现了Windows平台环境下保护IIS服务器的系统。这套系统通过策略来控制访问Web服务器的行为,它的策略引擎可以加载Lua脚本编写的策略,所以策略的编写十分容易。通过对这套系统的运行检测可以发现它能有效的保护Web服务器的安全。
2 Web服务器所受的威胁及防御
Web服务器在互联网环境中会遭受格式各样的安全威胁,下面列出的是一些当前主流的针对Web服务器的攻击方式,它们有的会导致服务器被非法控制,有的会使服务器无法提供正常的服务,而有的甚至会对访问者的机器造成破坏。 【买计算机毕业论文就到计算机毕业论文网】 think58
[版权所有:http://think58.com]
2.1 缓冲区溢出
缓冲区溢出[1]主要是因为Web服务器程序对客户端提交的数据缺少安全必要的长度检测,服务器程序的堆栈被恶意数据填充,导致服务器程序执行非法的指令或产生拒绝服务。如曾经造成十分大危害的蠕虫“红色代码(Red Code)”和“尼姆达(Nimda)”都是利用IIS的缓冲区溢出的漏洞而传播的。目前,缓冲区溢出是很难杜绝的,因为Web服务器程序开发的测试阶段无法对所有客户端可能提交的数据进行测试,所以不能确保Web服务器程序完全没有缓冲区溢出威胁的存在。
因为Web服务器程序提供专有的HTTP服务,所以我们可以通过HTTP协议确定客户端提交数据中每个字段的长度的合理范围,通过对所有用户提交的数据都进行严格的长度检测是对缓冲区溢出攻击的有效防御方式。
2.2 SQL注入攻击
SQL注入攻击[2]是近几年非常流行的攻击方式。对一个内部网络的渗透往往是从Web服务脚本入手(如ASP,PHP等),而SQL注入漏洞通常是Web服务脚本中最容易找到的。目前互联网上仍然存在很多有此风险的服务器。 think58.com [来源:http://think58.com]
SQL注入同样也是对客户端提交的数据没有进行必要的检测过滤造成的。构造特殊的数据提交到存在此缺陷的Web服务器上后,可以导致恶意的SQL语句注入到Web脚本的SQL调用中,从而泄露敏感信息或者执行威胁的SQL指令。无论是何种Web脚本语本语言或何种数据库,如果编码人员缺乏相关的安全意识,都可能会导致此缺陷的存在。
目前对SQL注入攻击提出的防御方案有:
(1) 在服务端正式处理之前对提交数据的合法性进行检查;
(2) 封装客户端提交信息;
(3) 替换或删除敏感字符/字符串;
(4) 屏蔽出错信息。
方案(1)被公认是最根本的解决方案,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作,不过这需要开发者能够以一种安全的方式来构建网络应用程序,虽然已有大量针对在网络应用程序开发中如何安全地访问数据库的文档出版,但仍然有很多开发者缺乏足够的安全意识,造成开发出的产品中依旧存在注入漏洞;方案(2)的做法需要RDBMS的支持,目前只有Oracle采用该技术;方案(3)则是一种不完全的解决措施,例如,当客户端的输入为“…ccmdmcmdd…”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“…cmd…”;方案(4)是目前最常被采用的方法,很多安全文档都认为SQL注入攻击需要通过错误信息收集信息,有些甚至声称某些特殊的任务若缺乏详细的错误信息则不能完成,这使很多安全专家形成一种观念,即注入攻击在缺乏详细错误的情况下不能实施。
think58 [来源:http://think58.com]
2.3 基于脚本的DDos攻击
当一个入侵者无法找到目标Web服务器的有效渗透方式时,很可能选择DDos这种攻击方式。传统的DDos攻击方式在一台硬件防火墙面往往失去了它的威力,而基于脚本的DDos攻击在近几年里逐渐成为对Web服务器发起拒绝服务的有效方式。
和传统的DDos攻击针对服务器操作系统本身或网络带宽的消耗而言,基于脚本的攻击方式是针对应用程序的消耗来达到拒绝服务攻击的目的。对静态网页来说,这种攻击方式往往达不到它的攻击效果,而动态网页中,都会有一些对资源占用比较多的页面,比如包含复杂查询语句的页面,很可能在一次访问过程中会有较长时间访问数据库的行为,通过多线程,分布式的访问这个页面就可以造成拒绝服务的效果。目前,流行的CC工具就是利用这个原理来实现基于脚本的DDos攻击。
基于脚本的DDos的另一种攻击方法是利用Web系统中信息提交的功能提交垃圾数据。
防御这种攻击方式的方法有以下几种:
(1) 防止客户端的快速刷新,可以通过Cookie或者Session来实现
(2) 对消耗较大的页面进行识别码认证,确保是人而不是恶意的自动化程序在访问这个页面。
(3) 限制每个客户端访问的线程数
2.4 其他的不安全因素
除了上面所列的几种Web服务器常见的攻击威胁外,还存在一些其他的不安全因素。
[来源:http://www.think58.com]
(1) 缺少经验的系统管理员往往没有正确的设置服务器文件系统的权限
当一个入侵者获得到Web服务器上的较低的权限时,他通常会想方设法的提升自己的权限,而服务器文件系统的权限系统没有正确设置时,可以通过较低的权限下获取到服务器上的敏感信息,为提升权限提供了条件。
(2) 盗链
盗链虽然不是一种攻击手段,但因其消耗了大量的服务器资源和带宽,所以也是对当前Web服务器的稳定影响比较大的因素。盗链的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。另外一种盗链是像讯雷这样的P2SP的下载软件,可以让客户端以类似BT的方式同时从多台服务器上下载文件。
对盗链的防御往往是通过设定一些访问策略来实现,如检查客户端http报头的refer字段等。
(3) 脚本自身的Bug
Web服务器上所运行的动态脚本(ASP、ASP.NET、JSP和PHP等等)自身所带的Bug也会给Web服务器的安全带来极大的威胁。例如前面所提的SQL注入也是属于Web脚本的Bug。恶意的攻击者可能可以利用这些脚本中的Bug轻易的获得Web服务器的权限。很多Web服务器上采用的是开源的网站系统,而有的管理员因为设置上的疏忽(例如编辑源码后产生的bak文件,数据库的路径没有保护等等),给攻击者入侵打开了方便之门。 [版权所有:http://think58.com]
对于这类来自脚本自身的安全威胁,好的防御方式是时常关注源码站点的补丁信息,对Web服务器的环境进行安全配置,防止数据库这样会透露敏感信息的文件被下载等等。
上面所介绍的这些对Web服务器的威胁,虽然只是对Web服务器众多攻击方式中的某几种,但我们可以看出,对Web服务器的攻击行为往往都具有和普通的访问不同的行为。我们可以通过这些非正常的访问行为鉴别出恶意的攻击访问。下面将介绍对Web服务器进行入侵防御系统的设计和实现。
3 Web的入侵防御系统的设计
由于系统要对客户端发送的Http报文进行分析,这需要对Http报文进行解析,Http报文解析的方式主要有两种:
(1)自解析:系统对原始数据报文自行解析;
(2)由Web服务器进行解析,需要时系统通过Web服务器提供的接口查询。
方式(1)可以提供比方式(2)更好的移植性,但这种报文解析的方式需要一种截获下层原始报文的能力,这可以通过截获传输层或网际层报文的实现,由于我们将这套系统定位于仅针对Web访问的入侵防御,我们对Http协议外的报文并不关心,所以我们选择方式(2)作为我们的Http报文解析方案,即通过Web服务器提供的接口仅仅截获应用层的Http报文。
要对客户端发起的请求进行完全的监控光靠检测客户端的行为是不够的,因为这样我们只知道客户端发起什么样的请求但无法知道服务器端是如何对客户端进行响应的。一次完整的Http会话既然包括客户端发送请求和服务器端对请求的响应,那么只有监控服务器端响应的内容后,才能知道这次Http会话何时结束。如果Web服务器提供Http报文封装的接口,则在对客户端进行响应时我们也尽量调用Web服务器的这些接口而不是自己组装Http报文。 think58好,好think58
[版权所有:http://think58.com]
这样,这套入侵防御系统的核心便是其策略引擎, 通过强大而灵活的策略引擎来实现特征检测或者异常检测。下面将介绍这个Web的入侵防御系统的具体体系结构和处理流程。
think58好,好think58 [来源:http://www.think58.com]
[来源:http://www.think58.com]