Web的入侵防御系统的设计
由于系统要对客户端发送的Http报文进行分析,这需要对Http报文进行解析,Http报文解析的方式主要有两种:
(1)自解析:系统对原始数据报文自行解析;
(2)由Web服务器进行解析,需要时系统通过Web服务器提供的接口查询。
方式(1)可以提供比方式(2)更好的移植性,但这种报文解析的方式需要一种截获下层原始报文的能力,这可以通过截获传输层或网际层报文的实现,由于我们将这套系统定位于仅针对Web访问的入侵防御,我们对Http协议外的报文并不关心,所以我们选择方式(2)作为我们的Http报文解析方案,即通过Web服务器提供的接口仅仅截获应用层的Http报文。
要对客户端发起的请求进行完全的监控光靠检测客户端的行为是不够的,因为这样我们只知道客户端发起什么样的请求但无法知道服务器端是如何对客户端进行响应的。一次完整的Http会话既然包括客户端发送请求和服务器端对请求的响应,那么只有监控服务器端响应的内容后,才能知道这次Http会话何时结束。如果Web服务器提供Http报文封装的接口,则在对客户端进行响应时我们也尽量调用Web服务器的这些接口而不是自己组装Http报文。
这样,这套入侵防御系统的核心便是其策略引擎, 通过强大而灵活的策略引擎来实现特征检测或者异常检测。下面将介绍这个Web的入侵防御系统的具体体系结构和处理流程。
计算机毕业设计体系结构
通常一个系统会采用多层或者单层的体系结构。多层的结构将不同功能的模块进行了划分,层与层之间靠定义好的接口进行通信,单层的结构将模块都紧耦合在一起,模块与模块间有交叉调用。多层的结构比单层的结构具有良好的扩展性,而单层结构可以模块间的交互更加高效。为了能使系统适合不同的Web服务器平台,综合以上的因素考虑后,本系统采用分层的体系结构。图1为本系统的体系结构图。
如图1所示,这个Web的入侵防御系统主要分层了以下三层:
(1) 解析及响应层
这一层为整个防御系统提供对客户端发送的Http报文请求的解析及服务器响应时Http报文封装的接口。当有客户端访问服务器时,通知策略引擎调度策略检测客户端的访问信息,并为策略引擎提供响应的实现。按照前面的分析,这一层是由服务器提供的接口封装实现。
(2) 策略引擎
这一层的作用是策略的调度,在策略中通过“解析及响应”层提供的接口获取客户端的信息,具体的响应也交给“解析及响应”层完成。同时策略引擎还需要调度数据管理层完成策略的加载,以及日志记录的功能。
(3) 数据管理
这一层提供日志记录、配置管理及策略脚本解析的功能。所以对数据进行处理的过程都是在这一层里完成。
每一层都完成相对独立的功能,当某一层的实现发生变化时,只要提供的接口没有变化,对其他几层就没有影响。这样整个结构就有很大的扩展性,例如:我们可以把解析和响应层的具体实现是由调用Web服务器自身接口的方式替换为直接截获传输层网络层封包的方式等等。下面将介绍具体的处理流程。