您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 基于L7-filter的流量过滤防火墙的实现
基于L7-filter的流量控制防火墙的实现ThestreamcontrolfirewallbasedL7-filter(湖南师范大学网络中心湖南长沙410081)【摘要】传统的网络墙无法实现流量过滤的功能,P2P的应用挤占了有限的带宽使因而无法保障企业关键业务流的及时传输。基于L7-filter的Netfilter配对模块可以很好的实现高层协议的数据保匹配,和传统的防火墙结合可以实现高级的流量过滤功能,保证关键和正常数据包的传输。【关键词】流量控制P2P防火墙NetfilterIptables0引言防火墙(firewall)是一种比较传统的信息安全产品,一般位于内网(privatenet)和公网(publicnet)之间,对内网和公网之间的数据传输起着过滤的作用,对企业的信息安全具有重要意义。防火墙维护着一个ACL(accesscontrollist访问控制列表),它根据手动设置的规则集(rules)对流量或者连接进行过滤和屏蔽,防范来自公网的攻击。随着网络技术的不断发展网络应用日趋多样化,特别P2P技术的产生,使企业有限的公网带宽更加拥挤,而且已经严重影响到企业关键业务数据的正常传输。传统防火墙仅是一般意义的访问控制,对于流量往往也只能根据传输层协议的类型和端口进行控制,不能做到依据高层的应用层网络协议进行有效过滤,因此不能保证企业关键数据的快速传输。PrivateNetworkFirewallPublicNetwork图1简化的网络拓扑模式图Netfilter是linux基于内核的包过滤框架模块,可以在用户空间(userspace)使用iptables程序添加,设置,修改,删除来维护规则集。Netfilter可以根据数据包的结构(packetstructure),很好的实现访问控制的目的。世界上众多的linux爱好者(hacker)为Netfilter开发了很多高级的配对(match)模块,从而实现很有现实价值的功能。其中由JustinLevandoski,EthanSommer,和MatthewStrait开发,SebastianCelis,AndyExley和LillieKittredge支持的L7-filter功能模块可以根据数据包应用层协议(applicationlayer)内容进行匹配,从而使防火墙能够进行准确协议控制成为可能,保证企业关键业务数据的实时传送。1.1L7-filter的工作原理对于数据包的过滤,就需要进行数据包的匹配。依据数据包具有固定的结构,源IP地址(sourceIPaddress),目标IP地址(destinationIPaddress),MAC(macaddress&PhysicalAddress)地址,传输层协议类型(TCP/UDP)及其端口(Port)进行匹配。因为常见的高层协议具有固定的端口,可以很好的完成一些普通的流量控制功能,而且还具有很好的效率,比如:HTTP,FTP,DNS,POP.SMTP,TELNET等。但是对于一些其他的高层协议,随机选择通信端口,例如bittorrentemule等一些P2P程序,那么只是通过传输层的端口进行匹配是不能达到很好的效果的。如果HTTP,FTP等一些常规应用使用了代理服务器,或者更换了标准的协议端口,那么仅仅端口匹配也是不能检测出这些数据包。表1IP数据报的格式表2TCP报文的格式SourcePortDestinationPortLongthChecksumDataZone表3UDP的报文格式1.2L7-filter的安装和使用L7-filter可以运行在各种Linux发行版本中,支持2.4和2.6的核心。安装L7-filter基本分为三个部分:所需文件的下载和准备;对kernel和Iptables进行修改;编译内核和安装iptables。1.2.1所需文件的下载和准备L7-filter是在sourceforge注册的一个项目,L7-filter的源程序可以在它的项目的主页上下载:versionIHLDifferentiatedServicesTotalLongthIdentifierFragmentationEragmentOffsetTimetoLive(TTL)ProtocolHeaderChecksumSourceIPAddressDestinationIPaddressOptionsBlankDatazoneSourcePortDestinationPortSequenceNumberAckNumberTCPOffsetReservedFlagWindowTCPChecksumUrgentPointerOptionsBlankDataZone安装L7-filte需要重新编译内核,如果系统上存放着内核的原文件可以不用下载内核。如果没有可以在kernel的网站上下载:,因此需要下载iptables的源文件:(Codematurityleveloptions→Promptfordevelopmentand/orincompletecode/drivers)Netfilter(DeviceDrivers→Networkingsupport→NetworkingOptions→Networkpacketfiltering)Connectiontracking(Networkpacketfiltering→IP:NetfilterConfiguration→Connectiontracking)ConnectiontrackingflowaccountingandIPtablessupport(onthesamescreen)Andfinally,Layer7matchsupport编译内核make安装内核makeinstall配置,编译,安装iptables:./configure;make;makeinstall1.3L7-filter的性能分析行业上对防火墙的性能基本上是从并发连接数,延时,吞吐量进行衡量的。理论上防火墙也是基于冯诺伊曼构架的计算机。如果使用专用的网络处理器(netprocessor)或者基于ASIC(复杂指令集)的CPU的防火墙不会对数据包的传输造成明显延时,具有很高的性能和效率。但是成本很高,而且这些硬件不常见使用起来还需要专业知识。基于CISC(简单指令集)的普通的通用的CPU没有专门针对这样的应用进行优化,性能上会和NP有一定的差距。但是在中下等规模的应用,通过一定的技术上的优化也是可以获得不错的效果的。并发连接数主要限于内存的大小,通过扩大防火墙的内存在一定程度上可以提高防火墙并发连接数的性能。CPU的主频和总线的频率制约着防火墙吞吐量的大小,使用高性能的CPU(如INTELXeon)和有较快外频的主板可以明显提高防火墙的吞吐性能。由于缺乏精确的工具我们没有对实验用的防火墙的并发连接数和延时指标做很精确的性能试验。我们使用了netperf等工具对吞吐量对了性能测试,结果如下。在100Mbit/s的连接速度下不会对网络的吞吐量造成很大的影响。但是通过netperf得到的数据并不能真实的反应现实中的网络环境。在实际应用中并发连接数的限制是制约防火墙的性能的最大因素。1.4L7-filter在应用的一些思考和探索防火墙在网络中的拓扑大都是处于内网的边缘,也是内网和外网联接的通道。因此防火墙在网络中可能具有多重角色(胖防火墙):它可以充当网关通过使用NAT技术对内网地址进行转换;可以通过目标端口映射提供对外的网络服务(如、mail);可以充当VPNServer接受VPN连接请求和维持VPN连接;可以作为IDS充当网络的入侵检测系统。在实际中我们并不赞成这种把很多的关键应用使用一个设备来实现。因为如果该设备意外当机在短时间内是很难恢复的,势必会对关键应用造成影响。其次对于这些网络智能设备上进行多种应用必然会降低其性能,而且也很容易遭到未知病毒的攻击。对于NAT可以使用高性能的路由器来实现。VPNServer和IDS使用专用的服务器担当,就可以实现很好的效果。这样各种网络设备各司其职,发挥出自己各自的优势。如果把防火墙作为透明网桥(netbridge)的模式,当防火墙因为攻击或者故障当机时可以不改变网络结构的情况下迅速恢复网络。透明网桥需要内核的支持,和相关应用程序。如果使用透明网桥模式还需要kernel2.6的支持才能对桥的流量进行监控(Kernel2.4不能对桥的流量监控无效)。2结论基于l7-filter的流量控制防火墙可以很好的实现依据应用层协议类型来控制流量,可以很好的实现过滤P2P等流量的作用。L7-filter还支持丰富的网络协议,和netfilter配合起来可以很好地实现
本文标题:基于L7-filter的流量过滤防火墙的实现
链接地址:https://www.777doc.com/doc-2570299 .html