摘 要:IPv6的网络体系架构安全性离不开防火墙的支持。此文首先对分布式防火墙的研究,总体设计了基于Linux的IPv6分布式防火墙网络体系架构,然后实现了基于Linux环境下的IPv6分布式防火墙。
关键词:IPv6;分布式防火墙 ;Linux
引言
随着Internet的快速发展,网络安全问题是人们最为关注的问题,基于IPv4协议边界式防火墙存在着日益突出的问题,主要体现在IP地址空间缺乏和骨干路由器中路由表“爆炸”的等突出问题。边界式防火墙在保护企业内部网络的情况下,确实是一种有效的网络安全技术,而随着网络应用规模的日益扩大,它的缺陷也不断呈现出来,很难实现网络的安全性和网络性能的均衡性。为了弥补IPv4和传统边界式防火墙的缺陷性及网络安全性等问题,此文提出了基于Linux的IPv6分布式防火墙网络体系架构的设计与实现。IPv6作为下一代互联网的基础协议存在很多优势。IPv6解决了IPv4存在的地址空间缺乏和路由表“爆炸”等问题,并且在安全性、移动性以及QoS等方面有着强有力的支持,IPv6协议由于包头设计得更加合理,使得路由器在处理数据包时更加快捷。此外,IPv6将IPSec集成到了协议内部,使得IPSec不再单独存在等等。
1 分布式防火墙网络体系结构
1.1分布式防火墙技术
分布式防火墙分为安全策略管理服务器[Server]、客户端防火墙[Client]两部分. 安全策略管理服务器主要负责安全策略、用户、日志、审计等管理作用。该服务器是集中管理控制中心,统一制定和分发安全策略,负责管理系统日志、多主机的统一管理,使终端用户“零”负担。客户端防火墙主要作用于各个服务器、工作站、个人计算机上,按照安全策略文件的内容,必须通过包过滤、特洛伊木马过滤和脚本过滤的三层过滤检测,保护计算机在正常情况下连接网络时不会受到黑客恶意的入侵与攻击,从而大大提高了网络安全性能。多台基于主机但集中管理与配置的防火墙组成了分布式防火墙。在分布式防火墙中,安全策略仍然被集中定义,但是在每一个单独的网络端点(如主机、路由器)上实施。
分布式防火墙包括安全策略语言、发布安全策略机制及应用、实施安全策略机制。安全策略的法则严格地规定了允许通过的通讯文件和禁止通过的通讯的文件,它可以在多种类型的情况下应用,还必须有权利委派和身份鉴别的功能。策略制定之后就可以发布至网络端点上去了。在传输过程中,策略发布系统必须保证策略法则的完整性、真实性。策略发布有多种形式,可以直接“推”到终端系统上,可以由终端按照需求截取,也可以提供给用户(以证书的形式)。策略实施机制系统在主机上,在处理进出的通讯之前,它需要查询本地策略才能做出允许或者禁止的决定。
1.2分布式防火墙体系架构
图1分布式防火墙体系架构
针对边界式防火墙的缺陷,提出了“分布式防火墙”(Distributed Firewalls)作为新的防火墙体系结构,因为它主要负责网络边界、每个子网和网络内部每一个节点之间的安全防护,所以分布式防火墙为一个完整的体系,而不仅仅是单一的产品。依据它所需完成的功能,包括三部分:网络防火墙(Network Firewall)、主机防火墙(Host Firewall)、中心管理(Central Managerment),如图1所示。
(1)网络防火墙(Network Firewall)
网络防火墙一般是纯软件方式,有时候需要硬件的支持。它作用于外部网与内部网之间,及内部网下各个小子网之间的防护,这也是与传统边界式防火墙不同之处,这样以来整个网络的安全防护体系就会更加全面、可靠。
网络防火墙包括入侵检测模块、防火墙模块和管理模块。入侵检测模块所用的是snort_inLine,防火墙模块在Linux环境下所用的是基于Netfilter框架的Iptables,为了使网络防火墙更好的安全防护整个网络,防火墙模块和入侵检测模块内嵌式互动,防火墙实时截取网络数据包,假如是信赖的网段或主机的数据包,就直接通过网络防火墙,减少入侵检测系统的匹配次数;如果不是,数据包通过内核态至用户态,入侵检测系统接收到数据包再检测,如果发现入侵,就通知防火墙截断,如果没有发现入侵,就依照防火墙配置的法则处理。管理模块包含数据发送程序(向管理中心发送防火墙和入侵检测系统日志)、数据接受程序(接受管理中心发放的法则)两部分,数据发送程序的作用是:先与自己机器的SSH端口建立TCP连接,之后从日志文件读出一行数据发送,直到文件完成。数据接受程序的作用是: 监听SSH端口,把接收到的法则代替原来的法则,让它运用新的法则。
(2)主机防火墙(Host Firewall)
与网络防火墙的设计一样,主要对网络中的服务器和桌面机进行防护,这是在边界式防火墙安全体系方面的改进。它主要作用于同一内部子网之间的工作站与服务器之间,来确保内部网络服务器的安全,这样就安全防护应用层了,比起网络层来更加全面。
主机防火墙由防火墙模块、主机管理模块组成,防火墙模块在Linux环境下用的是基于Netfilter框架的Iptables,按照管理中心发布的安全策略过滤数据包;主机管理模块包括数据发送程序(向管理中心发送日志)、数据接受程序(接受管理中心发放的法则)两部分,数据发送程序的作用是:先与自己机器的SSH端口建立TCP连接,之后从日志文件读出一行数据发送,直到文件完成。数据接受程序的作用是: 监听SSH端口,把接收到的法则代替原来的法则,让它运用新的法则。
(3)管理中心(Managerment Central)
它作为服务器软件,主要负责总体安全策略的策划、管理、分发及日志的汇总,还有远程管理、系统设置、系统安全等其它辅助功能。它也是在边界式防火墙功能的一个完善。它具有智能管理的功能,提高了防火墙的安全防护灵活性、管理性。网络防火墙和主机防火墙把日志发送给日志分析系统之后保存到日志文件之中,网络管理维护中心发放法则给网络防火墙和主机防火墙,管理中心与主机防火墙和边界防火墙之间的通信必须通过身份验证之后运用openssH数据安全通道加密通讯,这样管理中心与主机防火墙和网络防火墙的通信才会更加安全。此外管理中心还有用户图形界面(GUI)功能,负责管理网络中的所有端点、制定和分发安全策略,而且要分析从主机防火墙、网络防火墙接收的日志,依据分析的结果再修改安全策略。
2主机防火墙的设
计与实现
Linux广泛地应用到世界各地服务器网络当中,由于它是开源的。Linux版本2.4内核中已采用了Netfilter的防火墙框架,而且内核中还支持IPv6协议栈。所以此文采用Linux作为目标环境下的系统的开发和运行平台。
2.1主机管理模块
主机管理模块包括数据发送程序(向管理中心发送日志)、数据接受程序(接受管理中心发放的法则)两部分,数据发送程序的作用:首先要跟自己机器的SSH端口建立TCP连接,之后从日志文件读出一行数据再发送,直到文件完成。数据接受程序的作用:监听SSH端口,把接收到的法则代替原来的法则,让它运用新的法则。
2.2主机防火墙模块
Linux版本2.4内核中集成了Netfilter框架,基于Linux平台下,该框架具有新的网络安全功能:网络数据包过滤、状态保持、NAT及抗攻击等。Iptables作为Netfilter框架在用户空间的配置工具的任务:负责从用户命令行界面接收命令之后转化成内核认识的结构体,调用相应的内核操作函数,将法则插入到内核中去。运用Iptables,一定在编译Linux内核时(版本一定比2.4大)选择跟Netfilter相关的内核模块。Netfilter作为内核空间的实现模块,Iptables作为用户空间的控制命令解析器,只有它们合起来才能完成整体的工作。因此首先必须对内核进行裁剪和编译,选择与Netfilter相关的项目,(位于“Networking options”子项下)。
Netfilter是由一系列基于协议栈的钩子组成,这些钩子都对应某一具体的协议。Netfilter支持IPv4、IPv6与IPx等协议,具有协议对应的钩子函数。这些钩子函数在数据包通过协议栈的几个关键点时被调用,协议栈把数据包与钩子标号作为参数传递给Netfilter钩子;可以编写内核模块来注册一个或多个钩子,以挂钩自己的处理函数,这样当数据包被传递给某个钩子时,内核就会依次调用挂钩在这个钩子上的每一个处理函数,这些处理函数就能对数据包进行各种处理(修改、丢弃或传递给用户进程等);接收到的数据包,用户进程也可以对它进行各种处理。一个IPV6数据包在通过Netfilter防火墙框架时,它将经过如图2所示的流程。
图2 IPv6网络数据包处理流程
每一个IPv6数据包经过Netfilter框架时,必须通过5个钩子函数处理:
(1)HOOK1(NF_IP6_PRE_ROUTING),数据包在抵达路由之前经过这个钩子。目前,在这个钩子上只对数据包作包头检测处理,一般应用于防止拒绝服务攻击和NAT;(2)HOOK2(NF_IP6_LOCAL_IN),目的地为本地主机的数据包经过这个钩子。防火墙一般建立在这个钩子上;(3)HOOK3(NF_IP6_FORWARD),目的地非本地主机的数据包经过这个钩子;(4)HOOK4(NF_IP6_POST_ROUTING),数据包在离开本地主机之前经过这个钩子,包括源地址为本地主机和非本地主机的;(5)HOOK5(NF_IP6_LOCAL_OUT),本地主机发出的数据包经过这个钩子。
IP网络数据包处理流程:数据报从左边进入系统,进行IPv6校验以后,数据报经过第一个钩子NF_IP_PRE_ROUTING注册函数进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子NF_IP6_LOCAL_IN注册函数处理以后然后传递给上层协议;若该数据包应该被转发则它被NF_IP6_FORWARD注册函数处理;经过转发的数据报经过最后一个钩子NF_IP6_POST_ROUTING注册函数处理以后,再传输到网络上。
本地产生的数据经过钩子函数NF_IP6_LOCAL_OUT注册函数处理以后,进行路由选择处理,然后经过NF_IP6_POST_ROUTI NG注册函数处理以后发送到网络上。
3 结论
针对本文设计的Linux环境下IPv6分布式防火墙的测试中,用两台IPv6主机对防火墙保护下的内网主机进行访问,来测试防火墙。外网主机的环境一台为WINXP,另一台是Linux。通过对外网主机访问记录的验证来检测防火墙的性能。测试的实验结果表明:系统都能按照规则对数据包进行处理,实现了IPv6分布式防火墙的功能。随着网络的不断发展,传统的边界式防火墙的弊端越来越暴露出来了,Linux作为一种开放源代码的操作系统,在世界各地有着广泛的应用。Linux内核版本2.4中已经采用了Netfilter的防火墙框架,而且内核中已支持IPv6协议栈,而下一代通信协议IPv6是未来网络发展的趋势。本文在Linux环境下设计并实现了一个分布式防火墙具有重大意义。
参考文献:
[1]范振岐.基于Linux的IPv6复合防火墙的设计[J].网络安全技术与使用,2006,2:35-37.
[2]蒋雄伟.Linux下的分布式防火墙设计与实现:[硕士学位论文].南京:南京理工大学.2006.
[3]张科.IPv6防火墙状态检测技术的研究与实现:[硕士学位论文].重庆:重庆大学.2007.
[4]杨刚,陈蜀宇.Linux中基于Nctfilter/IPtables的防火墙研究[J].计算机工程与设计,2007,(28):4124-4132.
[5]高鸿峰,王一波,傅光轩.Netfilter框架下IPv6防火墙的设计与实现[J].电子科技大学学报,2007,36(6):1427-1429.
[6]张红霞.基于NDIs中间层驱动和SPI技术的防火墙研究与实现:[硕士学位论文].北京:北京交通大学.2008.
[7]唐正军,李建华.入侵检测技术[M].北京:清华大学出版社,2004.