摘 要:本文从状态检测防火墙系统的整体框架入手,介绍了该系统功能设计和结构设计以及各功能模块完成的任务。另外,介绍了本系统设计的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包主要状态属性信息示意
状态结点数<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
源地址
目的地址
源端口
目的端口
链接状态位
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表