来源:曲阜师范大学计算机科学学院  作者:耿风瑞 高仲合 李红伟  
    摘    要  “流过滤”技术融合了包过滤和应用代理安全性和优点,克服了包过滤和应用代理的诸多缺陷,代表了一种全新的防火墙技术结构。随着IPv6网络的慢慢普及,对基于流过滤技术的IPv6防火墙设计和分析则是一个新的研究热点。本文首先研究了流过滤技术,然后设计了一种支持流过滤技术的Pv6防火墙系统,并指出了本文防火墙的缺点以及下一步研究的方向。
    关键词  流过滤技术;TCP/IP协议栈;关键报文;堡垒主机
 
1  引言
    “流过滤”技术融合了包过滤和应用代理安全性和优点,克服了包过滤和应用代理的诸多缺陷,代表了一种全新的防火墙技术结构。在大家纷纷开始关注应用层安全的今天,“流过滤”技术架构更加显示了其前瞻性和先进性。经过近几年的不断完善和实际使用中的磨合,新产品的“流过滤”引擎已经相当成熟和完善,在性能和稳定性方面得到了大幅度的提升,使其能够满足关键业务领域的长期稳定运行的要求。但这都是针对IPv4防火墙的,随着IPv6网络[1]的普及,对基于流过滤技术的IPv6防火墙设计和分析则是一个新的研究热点。
2  流过滤技术研究
    “流过滤”技术[2]是以状态检测包过滤的形态实现对应用层保护的一种防火墙过滤技术,基本原理是在状态检测包过滤的基础上,针对具体应用层协议采用专门设计的TCP/IP协议栈实现对链路层数据流在应用层重组并在此基础上进行过滤,以包过滤的形态提供应用层保护能力,使得规则匹配在防火墙内部由数据链路层直达应用层。
2.1  流过滤处理策略
    在流过滤报文处理策略中,要对不同报文区别对待,一部分类型的报文使用流过滤技术,其它类型的报文使用包过滤技术,比如说ARP报文、UDP报文、非用来传输数据的TCP报文都使用包过滤技术,这些报文可根据MAC首部、IP首部、TCP首部进行判断。但判断用来传输数据的TCP报文中哪些使用流过滤技术哪些使用包过滤技术的判定依据是TCP报文中的首部端口号、某些标志字段及应用层协议首部某些字段。使用流过滤技术的报文称为关键报文,而其它的报文统称为非关键报文。
2.2  流过滤的处理步骤
    当对关键报文应用流过滤技术处理时,流过滤技术逻辑上断开数据发送端与数据接受端之间的直接网络连接,即发送端与接受端之间在传输数据之前建立的网络连接仍然存在,但发送端与接受端之间的数据传输必须通过使用流过滤技术的防火墙中转。如图1所示。
2008100262568469.jpg
 
           图1  使用流技术时接收端与发送端传输关键数据关系
    防火墙利用流过滤技术对关键报文进行处理的过程,按照时间先后顺序可分为三个步骤:
    (1)对发送端发送应答报文,并将同一会话中的全部关键报文在应用层数据重组。
    (2)按照流过滤规则对重组后的完整数据进行合法性检查,并做相应处理。
    (3)对通过合法性检查的数据发送给接受端,并处理接受端发出的应答报文。
2.3  流过滤实现要点
    (1)报文分类:首先利用报文信息判断第一个报文是否为关键报文,若是,记录下IPv6基本报头的流标识字段值。对于收到的第二个报文,先与第一个比较流标识字段值,若相等,则说明它们属于同一个会话,第二个报文也为关键报文;否则再利用报文信息判断是否为关键报文,若是,记录下流标识字段值。
    (2)发送应答报文:关键在于应答报文中IP首部标识字段、TCP首部确认序号及IP首部、TCP首部校验和的计算。
    (3)判断同一会话关键报文是否传输完毕:在同一会话中收到TCP首部FIN标志位为1的报文,即可确定传送传输完毕。
    (4)重组关键报文:通过报文中TCP首部序号字段的值及应用数据的长度发现重复报文,并根据后发送报文的TCP首部序字段的值等于先发送报文TCP首部序号值加上应用层数据长度加1这条规则,排列好同一会话的所有报文。
    (6)发送合法数据:需要发送数据时把原始报文按顺序发送给接受端。
3  IPv6防火墙系统的设计
3.1  体系结构
    在IPv6网络通信中,数据流是以密文的形式在网络中传输,IPv6报文都是加密的,防火墙无法获得相关信息进行过滤,要么全部阻拦数据包则网络将不能进行通信,要么全部放行则容易受到***。为解决这一问题,本文将采用屏蔽子网防火墙系统结构[4],在此系统中的堡垒主机上实现流过滤技术。如图2所示。
2008100262607501.jpg
                     图2    IPV6防火墙体系结构图
    该系统层次结构示意图如图3所示。
2008100262657093.bmp
                   图3   IPv6防火墙系统层次结构示意图

3.2  运行平台及开发工具
    Linux作为开放源代码的操作系统[5],性能稳定且安全性较高,有着广泛的应用。自2.4内核以来的版本不仅支持IPv6协议栈,而且所采用的Netifilter/Iptables框架引入了模块化的构建方式,可以方便地实现IPv6防火墙。并且还得利用MySql数据库来保存信息。开发工具为C语言。
3.3  基于流过滤技术的IPv6防火墙系统设计
3.3.1 防火墙设计图
  
2008100262753437.jpg

                          图4   IPv6防火墙设计图
3.3.2  本文设计各模块实现的功能
    数据包捕获模块:实现对IPv6数据包的捕获,并进行报文分类。
    包过滤模块:实现对非关键报文的过滤。
    流过滤模块:实现对关键报文的重组过滤。
    控管规则模块:负责对过滤规则进行控制和管理。
    报警信息记录模块:负责将报警信息记录进日志数据库,并将报警信息交给客户端处理。
    客户端模块:查询数据库和查看报警信息。
3.4  实现过程
    本文主要是利用Linux内核防火墙底层结构netfilter的高度可扩展性,对其功能进行扩展。Nefilter针对IPv6定义了若干个钩子(HOOK),每个钩子都是处理函数挂载点。当IPv6的数据包将按照一定的规则通过若干个钩子时,就会触发这些函数进行相关处理。本防火墙主要是数据经过钩子NF­_IP6_FORWARD即数据包转发时,对数据进行处理和控制,所以本防火墙的程序主要挂载在这个钩子上。
4  实验及结论
    经测试本文设计的防火墙系统在IPv6网路环境中能够获得严格的IPv6访问控制策略,实现对IPv6数据包的控制访问;并且在流量大于100Mbps的千兆网卡上,丢包率小于万分之(如表1所示),性能达到了防火墙行业的性能标准。
    千兆网卡80%负载丢包率:
表1  负载丢包率
Ram Size
Rate Test(%)
(01,06,01)to
(01,08,01)(%)
Average
256
40.00
0.000
0.000
256
80.00
0.132
0.132
512
40.00
0.000
0.000
512
80.00
0.000
0.000

 


5  结束语
    本文在采用屏蔽子网防火墙体系结构基础上,设计并实现了基于流过滤技术的IPv6防火墙系统,经实验测试达到了防火墙行业的性能标准。但该系统却打破了IPv6的端到端模式,在IPv6网络中,端对端的通信是一种重要的通信方式也是IPv6的一个重要的优点。如何实现基于流过滤技术的IPv6端对端的防火墙系统将是本文下一步研究的重点。