分布式防火墙 Linux环境下IPv6分布式防火墙的探讨
摘要:今天的互联网大多数应用的是IPv4协议,IPv4协议已经使用了20多年,在这20多年的应用中,IPv4获得了巨大的成功,同时随着应用范围的扩大,它也面临着越来越不容忽视的危机,例如地址匮乏等等。本文创新地设计与实现了基于Linux主机的IPv6分布式防火墙。本文首先阐述了分布式防火墙的概念和原理;接着分析基于Linux主机的IPV6分布式防火墙系统总体设计,然后,论述基于Linux主机的IPV6主机防火墙的设计与实现,并详述其具体实现的各个模块,最后对本系统进行了性能测试。
关键词:Linux IPv6 分布式防火墙
随着Internet的飞速发展,网络安全问题越来越受到人们的关注,防火墙已经成为网络安全的重要产品,边界防火墙作为一种有效的网络安全技术,提供了对企业内部网络的保护,但随着网络规模的不断扩大,边界防火墙的缺陷也日益突出,它很难实现网络的安全性和网络性能之间的均衡。与目前普遍使用的IPv4相比,IPv6作为下一带互联网的基础协议,具有很多优势。例如,IPv6解决了IP地址数量短缺的问题;IPv6将IPSec集成到了协议内部,使IPSec不再单独存在等等。为了克服传统防火墙和IPV4的缺陷,且又保留其优点,本文提出了一个Linux环境下IPv6分布式防火墙。
分布式防火墙概述
分布式防火墙是由一个中心来制定策略,并将策略分发到主机上执行,它使用一种策略语言(如Keynote)来制定策略,并被编译成内部形式存于策略数据库中,系统管理软件将策略分发到被保护主机,而主机根据这些安全策略和加密的证书来决定是接受还是丢弃包,从而对主机实施保护。
防火墙系统体系结构
分布式防火墙是一种全新的防火墙体系结构,通常包括网络防火墙、主机防火墙和管理中心三部分,如图1 所示。
(1)管理中心。管理中心是整个系统的核心,包括网络维护中心、策略编辑器和日志分析器等主要部件,还有远程管理、系统设置、系统安全等其它辅助工具。日志分析器接受网络防火墙和主机防火墙发送的日志,并将接受的日志保存到日志文件中,网络维护中心向网络防火墙和主机防火墙发放规则,管理中心与主机防火墙和边界防火墙之间的通讯必须首先经过身份验证,然后采用openssH数据安全通道进行加密通讯,使得管理中心与主机防火墙和网络防火墙的通信更加安全。
(2)网络防火墙。网络防火墙由防火墙模块、人侵检测模块和管理模块组成,基于Linux平台,防火墙模块采用基于Netfilter框架的Iptables,人侵检测采用snort_inLine入侵检测工具,为了使网络防火墙更好的对全网进行安全防护,人侵检测模块和防火墙模块内嵌式互动,防火墙实时截取网络数据包,若是可信网段或主机的数据包,则直接通过网络防火墙,减少人侵检测系统的匹配次数;若不是,将网络层数据包从内核态读到用户态,人侵检测系统接收数据包,进行匹配检测,若发现人侵,通知防火墙进行阻断,若未发现人侵,则根据防火墙设置的规则进行处理,从而保护系统不受攻击。
(3)主机防火墙。包括防火墙模块和主机管理模块,防火墙模块基于Linux平台,采用基于Netfilter框架的Iptables,根据管理中心发布的安全策略对数据包进行过滤;管理模块包含有一个数据发送程序(向管理中心发送日志)和一个数据接受程序(接受管理中心发放的规则),数据发送程序的任务是:先与自己机器的SSH端口建立TCP连接,然后从日志文件读出一行,发送数据,直至文件结束。
Linux作为一种开放源代码的操作系统,在世界各地有着广泛的应用。Linux内核版本2. 4中己采用了Netfilter的防火墙框架,且内核中已支持IPv6协议栈。因此本文选用Linux作为目标系统的开发和运行平台。
3.1 主机管理模块
主机管理模块包含有一个数据发送程序和一个数据接受程序。数据发送程序的任务是:定期向管理中心上载日志,先与自己机器的SSH端口建立TCP连接,然后从日志文件读出一行,发送数据,直至文件结束,断开连接。数据接受程序的任务是:在SSH端口进行监听,接收到的新规则与原有规则进行比较,若有变动,替换原有规则,并建立本地脚本运行新的防火墙规则脚本文件。
3.2 主机防火墙模块
Linux内核2.4版本中集成了Netfilter框架,该框架是Linux平台新的网络安全功能框架,实现了多种网络安全功能:数据包过滤、状态保持、NAT,以及抗攻击等等。Iptables,仅仅是Netfilter框架在用户空间的配置工具,负责从用户命令行界面接收命令,然后转化成内核认识的结构体,调用相应的内核操作函数,将规则插人到内核中去。使用Iptables,必须在编译Linux内核的时候(内核的版本必须大于2.4)选择与Netfilter相关的内核模块,否则即使安装了Iptables,也不能使用。Netfilter和Iptables,一个是内核空间的实现模块,称作Netfilter,一个是用户空间的控制命令解析器,称作Iptables;两者结合才能完成整体的工作。所以首先必须对内核进行裁剪和编译,选择和Netfilter相关的项目,这些项目通常都是位于“Networking options”子项下。
Netfilter由一系列基于协议栈的钩子组成,这些钩子都对应某一具体的协议。当前Netfilter已经基于ipv4, ipv6, ipx等协议,开发了对应的钩子函数。这些钩子在数据包流过协议栈的几个关键点时被调用,协议栈将把数据包及钩子标号作为参数传递给Netfilter钩子;可以编写内核模块来注册一个或多个钩子,以挂接自己的处理函数,这样当数据包被传递给某个钩子时,内核就会依次调用挂接在这个钩子上的各个处理函数,这些处理函数可以对数据包进行各种处理,如修改、丢弃或者传递给用户进程等等;接收到的数据包,用户进程同样能够对它进行各种处理。一个IPV6数据包在通过Netfilter防火墙框架时,它将经过如图所示的流程。
一个IPV6数据包在通过Netfilter框架时,要经过5个5个钩子函数处理,分别为:
HOOK1: NF_IP6_ PRE _ROUTING:数据包在抵达路由之前经过这个钩子。目前,
在这个钩子上只对数据包作包头检测处理,一般应用于防止拒绝服务攻击和NAT;
HOOK2: NF_IP6_ LOCAL_ IN目的地为本地主机的数据包经过这个钩子。防火
墙一般建立在这个钩子上;
HOOK3: NF_IP6_FORWARD目的地非本地主机的数据包经过这个钩子;
HOOK4: NF_IP6_ POST_ ROUTI NG数据包在离开本地主机之前经过这个钩子,
包括源地址为本地主机和非本地主机的
HOOKS: NF_IP6 _ LOCAL_ OUT本地主机发出的数据包经过这个钩子。
IP数据包处理流程如下:数据报从左边进入系统,进行IPv6校验以后,数据报经过第一个钩子NF_IP_ PRE _ROUTING注册函数进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子NF_IP6_ LOCAL_ IN注册函数处理以后然后传递给上层协议;若该数据包应该被转发则它被NF_IP6_FORWARD注册函数处理;经过转发的数据报经过最后一个钩子NF_IP6_ POST_ ROUTI NG注册函数处理以后,再传输到网络上。
本地产生的数据经过钩子函数NF_IP6 _ LOCAL_ OUT注册函数处理以后,进行路由选择处理,然后经过NF_IP6_ POST_ ROUTI NG注册函数处理以后发送到网络上。
测试
综上所述设计思路,结合防火墙ip6tables特性和Linux操作系统自带代理服务器软件squid,开发设想在内部网与外部网之间的防火墙重新构造,建立成具有代理功能的混合型防火墙。在对本文设计的Linux环境下IPv6分布式防火墙的测试中,使用两台IPv6主机访问防火墙保护下的内网主机的方式,对防火墙进行测试。外网主机的环境一台为WINXP系统,另一台是Linux系统。通过对外网主机访问记录的验证来检测防火墙的性能。测试结果表明:系统都能按照规则对数据包进行处理,实现了IPv6防火墙功能。
结语
随着网络的不断发展,传统的边界防火墙的弊端逐渐暴露出来,Linux作为一种开放源代码的操作系统,在世界各地有着广泛的应用。Linux内核版本2. 4中己采用了Netfilter的防火墙框架,且内核中已支持IPv6协议栈,而下一代通信协议IPv6是未来网络发展的趋势。本文在Linux环境下设计并实现了一个分布式防火墙具有重大意义。对于IPv6网络新协议慢慢开始推广的现状下,基于IPv6的防火墙是目前防火墙系统的一个发展方向,它比以往的任何一种防火墙系统都能提供更高的安全性,但本文主要也只是做出一些较为简单的功能实现,它还有许多问题仍有待于我们进一步研究解决。
参考文献
[1」唐正军,李建华编著.入侵检测技术.北京:清华大学出版社,2004,4.
[2」国家计算机网络应急技术处理协调中心.https://www. cert. org. cn
[3] 邹志文,朱金伟.数据挖掘算法研究与综述.计算机工程与技术,2008,26(9):2304~2307.
[4] 谢宗毅.关联规则挖掘Apriori算法的研究与改进.杭州电子科技大学学报,2006.78~82.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
