摘 要 Web服务器往往得不到传统防御方式的有效保护,使其成为整个网络环境中安全最薄弱的地方。缓冲区溢出、SQL注入、基于脚本的DDos、盗链和跨站等攻击行为对Web服务器的安全和稳定造成极大的威胁,而目前缺少有效的防御和保护的方式。本课题中首先调研了当前Web服务器所面对的威胁,然后针对这些安全威胁设计了一套入侵防御系统,并通过ISAPI实现了对Windows平台下的IIS服务器的保护。在这套入侵防御系统中,可以通过制定策略来检测所有访问Web服务器的行为,可以有效地阻止恶意攻击从而保护Web服务器的安全。这套入侵防御系统的策略引擎可以加载和调用Lua语言编写的策略脚本,使策略脚本的编写更加简单。 关键词: 入侵防御;网络安全;ISAPI;Lua Design and Implementation of Web Intrusion Prevention System Abstract Web server can not often get the effective protection of traditional defense mechanism, makes it become the weakest area in the whole network. The attacks, such as Buffer overflow, SQL injection, DDos based on script, Resource steal and Cross-site, cause the great threat to the security and stability of Web server, and lack effective defense and protection way at present. This paper introduces the different attack ways to a Web server at first, then designs an intrusion prevention system for the Web server and implements the protection of IIS server under Windows platform through ISAPI. The intrusion prevention system can measure the behaviors of all visiting Web servers through the strategies and protect the Web Server against the malicious attacks. The security strategies engine of the system can load and transfer the strategy scripts written in Lua language, It make strategy scripts writing more simpler. Key words: Intrusions prevention; network security; ISAPI; Lua
Web的入侵防御系统的设计 由于系统要对客户端发送的Http报文进行分析,这需要对Http报文进行解析,Http报文解析的方式主要有两种: (1)自解析:系统对原始数据报文自行解析; (2)由Web服务器进行解析,需要时系统通过Web服务器提供的接口查询。 方式(1)可以提供比方式(2)更好的移植性,但这种报文解析的方式需要一种截获下层原始报文的能力,这可以通过截获传输层或网际层报文的实现,由于我们将这套系统定位于仅针对Web访问的入侵防御,我们对Http协议外的报文并不关心,所以我们选择方式(2)作为我们的Http报文解析方案,即通过Web服务器提供的接口仅仅截获应用层的Http报文。 要对客户端发起的请求进行完全的监控光靠检测客户端的行为是不够的,因为这样我们只知道客户端发起什么样的请求但无法知道服务器端是如何对客户端进行响应的。一次完整的Http会话既然包括客户端发送请求和服务器端对请求的响应,那么只有监控服务器端响应的内容后,才能知道这次Http会话何时结束。如果Web服务器提供Http报文封装的接口,则在对客户端进行响应时我们也尽量调用Web服务器的这些接口而不是自己组装Http报文。 这样,这套入侵防御系统的核心便是其策略引擎, 通过强大而灵活的策略引擎来实现特征检测或者异常检测。下面将介绍这个Web的入侵防御系统的具体体系结构和处理流程。 3.1 体系结构 通常一个系统会采用多层或者单层的体系结构。多层的结构将不同功能的模块进行了划分,层与层之间靠定义好的接口进行通信,单层的结构将模块都紧耦合在一起,模块与模块间有交叉调用。多层的结构比单层的结构具有良好的扩展性,而单层结构可以模块间的交互更加高效。为了能使系统适合不同的Web服务器平台,综合以上的因素考虑后,本系统采用分层的体系结构。图1为本系统的体系结构图。 如图1所示,这个Web的入侵防御系统主要分层了以下三层: (1) 解析及响应层 这一层为整个防御系统提供对客户端发送的Http报文请求的解析及服务器响应时Http报文封装的接口。当有客户端访问服务器时,通知策略引擎调度策略检测客户端的访问信息,并为策略引擎提供响应的实现。按照前面的分析,这一层是由服务器提供的接口封装实现。 (2) 策略引擎 这一层的作用是策略的调度,在策略中通过“解析及响应”层提供的接口获取客户端的信息,具体的响应也交给“解析及响应”层完成。同时策略引擎还需要调度数据管理层完成策略的加载,以及日志记录的功能。 (3) 数据管理 这一层提供日志记录、配置管理及策略脚本解析的功能。所以对数据进行处理的过程都是在这一层里完成。 每一层都完成相对独立的功能,当某一层的实现发生变化时,只要提供的接口没有变化,对其他几层就没有影响。这样整个结构就有很大的扩展性,例如:我们可以把解析和响应层的具体实现是由调用Web服务器自身接口的方式替换为直接截获传输层网络层封包的方式等等。下面将介绍具体的处理流程。 3.2 处理流程 Web IPS的处理流程如图2所示,具体流程如下:当客户端发送Http请求时,原始的数据报文经Http报文解析模块解析,报文解析模块会通知策略引擎模块对客户端的信息进行检测,策略引擎会依据策略脚本中编写的策略,通知Http响应模块对客户端的行为做出响应,并依据策略脚本中的策略,通知日志记录模块记录相应的日志。 依据Web IPS系统的体系结构及处理流程,系统主要模块和作用如下: (1) IPS管理模块 负责管理和连接各个模块,管理数据流,读取配置文件后完成整个系统的初始化,对整个系统的状态进行管理:运行,停止,重新加载。当Http报文解析模块通知有客户端的访问时,调用策略引擎对客户端的行为及信息进行检测,对策略引擎返回的结果通知Http响应模块进行响应。 (2) 配置文件模块 主要完成配置文件的读取及保存。提供统一的接口,具体实现可以根据需要而作修改。 (3) Http报文的解析模块 利用Web服务器提供的接口,对客户端访问Web服务器时提交的原始数据进行解析,并通知IPS管理模块收到客户端的访问请求,请求策略引擎检测客户端的访问行为。 Http报文的解析模块中会为每一个客户端生成一个实现了能检测客户端相关信息的接口的对象。在一般的Web脚本(例如:ASP、asp.NET、PHP等等)中也会有这样一种获取客户端信息的接口。 (4) Http响应模块 当需要对客户端的行为进行响应时,在这一模块中对数据报文进行组装。提供以下几种响应方式:调用下一条策略、接受请求、断开链接、发送信息、发送文件和重定向。除了“调用下一条策略”需要策略引擎继续调用其他策略外,其他的响应结束后都表示客户端的一次请求过程的结束,策略引擎将不会继续调用策略链上的其它策略。 本文来自毕业设计网: www.papersay.com (5) 策略引擎模块 首先策略引擎对策略脚本进行解析,根据策略的属性和优先级组装策略链。当IPS管理模块通知策略引擎对某一个客户端的信息进行检测时,策略引擎利用Http报文解析模块提供的接口获取所需的客户端得信息,分析客户端得行为,通过依次调度策略来控制客户端的访问。在策略中,可以检测客户端请求的各个字段,并对客户端的行为进行分析或记录,通过定义好的规则对客户端不同的行为进行响应。当一个策略中没有对客户端的行为做出响应时,策略引擎调用策略链中的下一条,直到全部调用完。如果有策略返回响应,则通知Http响应模块完成客户端的响应,并停止调动策略链后面的策略。如果没有任何策略对客户端的行为做出响应,策略引擎则返回接受请求的响应。策略引擎需要封装Http报文的解析和响应模块,及日志记录模块,供策略中调用。 (6) 日志模块 日志模块的作用是对系统运行时产生的日志或对入侵防御行为的进行记录。使用统一的格式将日志信息记录在文本文件中。由于系统采用分层的体系结构,所以这一模块可以方便的替换成其他格式的日志记录方式。
目 录 1 引言 1 2 Web服务器所受的威胁及防御 1 2.1 缓冲区溢出 1 2.2 SQL注入攻击 1 2.3 基于脚本的DDos攻击 2 2.4 其他的不安全因素 3 3 Web的入侵防御系统的设计 4 3.1 体系结构 4 3.2 处理流程 5 3.3 对客户端访问的响应 7 3.4 策略引擎的设计 8 3.4.1 策略的属性 8 3.4.2 策略的加载 9 3.4.3 策略的调度 10 3.4.4 策略的接口 10 4 Web的入侵防御系统的实现 11 4.1 基于ISAPI 的解析及响应模块的实现 11 (毕业设计 ) 4.1.1 使用ISAPI Filter获取Http报文信息 11 4.1.2 使用ISAPI进行Http响应 13 4.1.3 在服务器上的安装配置ISAPI Filter 14 4.2 基于Lua的策略实现 15 4.2.1 对策略的封装 15 4.2.2 Lua策略脚本示例 15 4.3 基于xml的策略管理 16 5 系统运行过程及测试 16 结 论 18 参考文献 18 致 谢 19 声 明 20
参考文献 [1] Michael Howard, David LeBlanc.程永敬等译.编写安全的代码[M].机械工业出版社, 2002 [2] coolswallow. SQL盲注攻击技术综述[Z]. [3] Marcus Goncalves.孔秋林等译.防火墙技术指南[M].机械工业出版社,2002 [4] 田东风, 秦江. ISAPI与网络服务器安全研究[J]. 微计算机信息,2004,(8):107-108 [5] 朱玉山,王晓冬.ISAPI 开发指南[M].北京:清华大学出版社,1998 [6] 邓际锋.一颗璀璨的月光宝石-Lua[J].程序员, 2006,(6):66-68. [7] Programming in Lua [M].http://www.papersay.com, 2003 [8] 云风.我的编程感悟[M].电子工业出版社,2005 |