欢迎来到学术参考网

基于状态检测的防火墙系统设计

发布时间:2015-09-07 09:04

摘 要:本文从状态检测防火墙系统的整体框架入手,介绍了该系统功能设计和结构设计以及各功能模块完成的任务。另外,介绍了本系统设计的TCP包和UDP包状态检测技术、SYN攻击和DoS攻击防御等关键技术,从而使得防火墙起到关键的防护作用。

关键词:状态检测;防火墙;模块

1、系统功能设计
  基于状态检测防火墙系统由以下功能组成:包截获、规则检测、状态检测和窗口界面及操作等功能。
(1)包截获功能:利用在操作系统提供的系统驱动程序上,挂接用户自定义驱动程序,并将系统驱动程序截获的数据包传入用户自定义驱动程序中进行状态检测。
(2)规则检测功能:解析协议类型,分别调用相应协议的规则过滤器,进行规则检测。
(3)状态检测功能,首先对已截获的数据包进行协议判断,若是TCP包,因其自身含有状态信息,可直接实行状态检测。对无连接状态的UDP包,则要通过建立虚连接,保留相关信息后,再进行状态检测。
(4)窗口界面及操作功能是防火墙的主程序模块,是用户与防火墙交互的部分,负责提供用户与防火墙之间的对话。用户可通过界面启动/停止过滤,对过滤规则进行维护(如安装/卸载、添加/删除)等。
2、系统结构设计
  在操作系统中,程序分为用户程序和内核系统程序。处理器在处理用户程序代码时的特权级为3级(最低),在处理内核系统程序代码时的特权级为0级(最高)。当进程在执行用户代码时,称其处于用户运行态(用户态);当进程在执行内核系统程序代码时,称其处于核心运行态(核心态)。本防火墙系统在用户态应用程序中设计编制有三个模块,即窗口界面模块、操作功能模块、规则库管理模块和驱动管理模块;在核心态自定义驱动程序中设计编制有4个模块,即包截获模块、规则检测模块、状态检测模块和消息机制模块。如图1所示。

                        图1 系统各模块之间的关系
3、关键技术分析
(1)状态检测技术
  首先是TCP包状态检测技术。TCP连接指的是,具有相同状态属性(如源/目的地址、源/目的端口、连接状态信息等)的一组TCP包的传输,称为一个TCP连接。根据数据包连接状态信息(SYN和ACK标志位的值),判断是否已建立连接,未建立连接的包,进行规则检测,通过检测的包,在状态表中建立状态结点(一条记录);已建立连接的包,不再进行规则检测,只进行状态检测,属于已有连接后续的包直接放行,不属于已有连接的包丢弃。对新建状态结点,还要设置时间溢出值(如Timeout=60秒)。时间溢出值表示允许这次连接的时间,在时间溢出值(如Timeout=60秒)内,连接成功(三次握手成功),状态表中连接状态位(S)为“1”,否则为“0”(超时半连接),在状态表中状态结点数(N)达到阈值下限(如N=1800)时,删除超时半连接。当防火墙收到返回确认连接包(SYN/ACK标志位判断)时,还需再与规则表中规则进行检查比较(这是第二次握手,与第一次握手是反方向的,所以还需进行规则检测),不符合,丢弃包;否则,接受包,并进行状态检测(因为第一次握手时已建立过状态结点,所以要进行状态检测)。随后的数据包(不带SYN标志),仅需要与状态表中状态结点信息进行比较,通过比较源地址、目的地址和端口号等状态属性来区分是否是同一个连接,如果是状态表内已有连接的一部分,即是同一连接,该包被接受,否则被丢弃。
  其次是UDP包状态检测技术。UDP包是无连接的,即无状态信息,不能进行状态检测。但可为UDP包人为建立状态信息,进行状态检测。将UDP包的源/目的地址和源/目的端口等信息取出,加上状态结点数(N)、连接状态位(S)等信息,作为UDP的状态信息保留。这样使用人为建立的状态信息产生的一条连接,称为“虚连接”。再设置连接时间(timeout)和包序号(M)等配合进行状态检测。UDP包的主要状态属性信息如表1所示。
                表1  UDP包主要状态属性信息示意

状态结点数

源地址

目的地址

源端口

目的端口

链接状态位

 

 

 

 

 

 

  UDP包建立虚连接后,状态检测过程与TCP包类似。一旦接收到UDP包,先取出源/目的地址和源/目端口等相关信息,查询状态表确定是否已建立连接,如已建立,放行;否则进行规则检测,符合,保存该包的源/目的地址和源/目端口等状态属性信息,即建立“虚连接”。当UDP包返回时,查询状态表中状态属性信息,符合允许返回,否则丢弃。
(2)SYN攻击和DoS攻击防御机制
  首先是SYN攻击防御。SYN攻击是拒绝服务攻击(DoS攻击)中的一种。在所有攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。攻击防御如下:一是A设置TCP连接时间,标记半连接状态结点。首先设置TCP连接时间timeout1阈值(如timeout1=60秒),在该阈值内,TCP连接成功(三次握手成功),状态表中连接状态为(S)为“1”,否则为“0”(超时半连接)。二是B状态结点(N)达阈值下限,清除可疑收紧门户。当状态表状态结点(N)达阈值下限(如N=1800)时,删除状态表中连接状态位(S)为“0”的状态结点(清除可疑),并将时间阈值缩减(如从timeout1=60秒减少为timeout1=40秒)(收紧门户),以预防SYN攻击。当状态表状态结点数(N)达到阈值上限(如N=500)时,时间阈值恢复为初设值(如timeout1=60秒)。
  其次是DoS攻击防御措施。A设置UDP连接结束时间阈值,及时删除连接结束的状态结点首先设置连接结束时间阈值(如timeout2=30秒),根据UDP包连接状态属性信息,判断后续的UDP包是否为同一个UDP连接。但UDP包中没有SYN和FIN信息,法知道一个UDP连接什么时候结束。可通过第M个UDP包后,超过该阈值(如imeout2≥30秒)还没有后续包时,认为该UDP连接结束,及时删除状态表中该连接的状态结点,避免状态表遭DoS攻击时很容易溢出。B设置UDP最大连接时间阈值,限制某个端口过长时间的连接。首先设置UDP最大连接时间阈值(如timeout3=150秒),当在该阈值(timeout3≤150秒)内时,UDP连接结束,删除状态表中该连接的状态结点。若超过该阈值(timeout3≥150秒),UDP连接未结束,状态表中该连接的状态位(S)置为“0”(超时连接)。当状态结点数(N)达到阈值下限时,删除该超时连接,可限制某个端口过长时间的连接,从而预防DoS攻击。
参考文献
[1]杨永增,谈防火墙技术的发展趋势[J],电脑学习,2007(4)
[2]张银霞,新型防火墙技术及其发展趋势[J],网络安全技术与应用,2008(7)

上一篇:关于VB教学方法的思考

下一篇:MATLAB数字信号处理工具箱的开发和应用--数字滤波