数通仪表专精16载!「创新」「质量」「虚心」「力行」
|
Spirent防火墙测试方法对于安全和网络工程师要保护的网络计算资源来说,正面对着越来越复杂和数量不断提高的安全威胁。防火墙——全局企业安全策略中最为关键的一环,它处于防止未经授权流量进入企业防线的第一线。防火墙厂商也会尝试着模仿不同的网络攻击来试验产品本身,这是因为对于每个企业网络的安全需求都不是一成不变的。由于这个原因,安全和网络工程师都会基于自己的网络状况设计测试床以确保网络操作的安全和可用性。 这篇文章将会帮助你将防火墙加入到Spirent测试框架中。你会学习到如何新建和运行防火墙基本、压力和负载测试。因此你就可以将实际的产品网络和实验室测试环境有机的结合起来。通过完成这篇文章中的测试样例,你可确保防火墙满足你的网络安全和可用性标准。此外,借助于测试设备还可建立全面的端到端测试框架、多设备真实测试环境。同时,你也可以扩展其他网络设备混合进防火墙测试环境中,如服务器负载均衡(SLB)和入侵检测系统(IDS) 防火墙的作用就是把受保护与不受保护的网络分离开,例如将Internet和一个受保护的企业网络分离开。一个企业定义了一套安全策略来保护企业网络流量,不论是进还是出防火墙的流量都必须接受防火墙的盘查。安全策略保证防火墙有条件的允许流量通过防火墙。防火墙策略一般和网络的OSI4~7层模型相关。 防火墙策略包括了认证、包过滤和应用网关技术来构成一个全局安全策略。认证是受保护网络验证所连接的网络是否是它所希望的连接实体的一个过程(或者说成是验证希望连接网络的实体)。包过滤是防火墙分析进入和出来的数据是否符合过滤条件(安全策略)来决定是否放行数据。应用网关则是阻止网络(不受保护的)与网络(受保护)之间的直接相连,网络之间的直连会提高网络所面临的危害。 以下防火墙类型也从一定角度上反映了防火墙的演变历史: ◆包过滤——分析传输层的数据是否符合定义数据流的过滤条件。这种类型的防火墙目前非常少,因为它仅仅工作在传输层而不是应用层。既然它对连接状态知道的不多,那么它也被称为‘无状态’的防火墙。 ◆状态检测——基于建立的会话进程来观察是否符合安全策略进而允许数据流通过。在一个进程表中包含了活动进程。如果数据包所相关的会话进程不在表中,那么数据包就会被丢弃(就是不被允许通过防火墙)。这比包过滤防火墙更为安全,因为策略定义是和什么类型的数据包通过防火墙紧密相关的。之所以说它安全,还因为它每次都验证数据是否符合数据库中的策略,它不仅仅是基于传输层和进程限制数据通过,它还可以达到应用层。状态防火墙支持4~7层测试可以确保他们的适用性。 ◆应用代理——包括了两个TCP连接,一个是在源包和防火墙之间,另外一个是在目的包和防火墙之间。代理就像一个看门人,它基于应用规则来决定进入的数据包是否可以到达目的地。每一个不同的应用都有自己的代理。既然包检测发生在网络层,所以就要求一个应用代理有更多的额外开销。更深一步说,一个代理防火墙需要处理通过它的每一个协议——因此这就限制了它的可测量性。基于这些原因,即使一个应用代理可以比状态检测提供更多的细节控制,然而状态检测防火墙仍然是我们这篇文章中所需要特别强调描述的。 基于我们以上所陈述的,状态防火墙仍然是全局企业安全策略的一部分。一个防火墙需要与其他网络安全设备具有无缝的互操作性,因为一个网络的安全设备可能来自于多个厂商。因此测试一款防火墙在一个企业IT环境中的表现是非常必要的——不管厂商的宣称值是多少或者是第三方测试结构的测试结果。 目前一个非常有趣的趋势是,防火墙成为一个安全平台,集成进额外的安全产品,例如IPSecVPN网关和IDS。这些集成的防火墙会提供高可用性和一体化的新技术,例如深度包检测,以下几个关键问题可以帮助你决定集成防火墙平台是否适合你: ◆你的集成平台渴望需要状态防火墙功能吗? ◆集成平台的CPU和内存是否会成为整个IT系统的瓶颈点,特别是成为线内设备时,是否会影响系统结构的可用性? ◆你的集成防火墙评估结构包括了可测量性测试了吗?真实情况下的负载是否包含了不同速率下的多个不同协议——大部分集成平台会共享一个CPU和内存资源吗?——你的集成防火墙可以在一个可接受的安全和可用性级别下操作吗? ◆由于包含了多个设备,你的集成防火墙可以实实在在的简化端到端安全测试吗?集成防火墙可以满足新的测试要求或复杂度吗?你的测试结构可以帮助你从一个分布式的防火墙迁移过来吗? 由于将产品的实际应用环境和精确的实验室环境测试结合了起来,所以Spirent提供了广泛的测试方法和详细测试来帮助你解决这些问题。 3.不充足的测试手段=灾难的处方吗? 必须评估你的防火墙是否充满风险。风险不仅仅是来自于你的结构——它可否有效率的处理你需要做得工作,也来自于日益提升的攻击复杂性。如何减轻这些风险呢?如何确保安全和可用性?这不仅仅是功能验证性的问题,这也是你的CPU和内存能否满足基准测试的问题,一些基准测试并不能模仿你的网络操作。攻击所产生的负载对于安全和可用性是最为危险的。相关防火墙的压力测试参数包括如下: ◆吞吐量 ◆新建连接/秒数量 ◆防火墙所支持的并发连接数 ◆一定负载条件下的新建连接/秒——维持高数量的并发连接 ◆一定负载下的阻挡知名DoS攻击的能力 ◆策略数量 ◆在真实负载条件下传输数据通过防火墙的延迟 ◆多协议流量应包括HTTP、HTTPS、RTP/RTSP、Telnet、DNS和SMPT/POPS协议 ◆活动-活动部署的失败恢复 不断提升的网络风险正在使你的网络运行环境变得日益复杂起来。不管是厂商或者是第三方实验室都不能真实模仿你的网络环境从而揭示负载特点。厂商简单的推断基准测试方法或者是典型的实验室测试都不能保证充足的测试手段和解决网络灾难的灵丹妙药。例如,当厂商宣称下发40条策略时出现的吞吐量峰值时,你并不能推断这个峰值是在何种情况测试所得的,是否混合了其他流量。我们如何推断在一种协议上进行拒绝服务攻击时对于多协议吞吐量的影响? 以下讨论展示了Spirent测试设备如何帮助你开展广泛深入的防火墙评估的。 利用SpirentAvlanche、Reflector和SmartBits进行基本测试以确定防火墙产品可满足你安全策略的基本要求。 进行高级测试确定防火墙可否和其他设备一起进行端到端的工作。这些端到端设备包括从安全设备(例如IDS和SSL加速设备)到内容设备(例如SLBs),每一种设备都可以由Avalanche/Reflector测试。Spirent建议先由单个的防火墙测试开始,然后再和其他设施共同测试,这样才能反映端到端的要求并且和现实的产品网络紧密贴切。 评估你的防火墙是否可以有效率地适应新业务模型,例如巩固网络和IPS,所有新设备共同来减轻内部网络的攻击。 4.利用Spirent模仿现实环境来测试防火墙 此部分描述了如何利用Spirent的Avalanche/Reflector或者SmartBits平台进行基本的防火墙测试。你可以在防火墙测试中加入更多的参数选项以提高测试仿真现实网络的能力,此外,还可以在测试中包含进其他的设备。这些测试能力使你的测试更加贴近产品网络从而减少了产品部署的风险。 以下的测试描述包括: ◆“FirewallBasic”-测试结构的工作特性限制。 ◆“FirewallStress”-衡量防火墙的极限工作能力。 ◆“FirewallLoad”-衡量在一定的负载下防火墙如何更好的维持可用性。 4.1“FirewallBasic”-建立一个可参考的基线测试 4.1.1目标 在你衡量一个防火墙前,必须先知道测试结构的操作限制。基本防火墙测试结构是由可管理交换机连接的背对背Avalanche/Reflecor设备所构成的。交换机必须是可管理的;我们高度建议在加入防火墙到测试结构前,应尽可能地简化网络连接。 一旦你确定了测试设备的工作限制,在Avalanche/Reflector之间“插入”防火墙,这样一来,可以排除测试设备所引起的问题。万一测试失败,我们就可以假设是由防火墙引起的测试失败。 4.1.2要求 ◆Avalanche和Reflector(或者是SmartBit/WebAvalanche卡) ◆可管理的2/3层交换机(交换机吞吐量应该比防火墙的吞吐量大得多) ◆控制接口-有以太网端口的任何PC并且具有具有浏览器、JVM和Adobeacrobat软件。 4.1.3需要设定的工作参数 ◆使用HTTP1.0和FTP的每秒建立连接数(CPS) ◆最大并发连接数(HTTP和FTP) 4.1.4运行“基本防火墙测试” 1.如图1所示连接Avalanche、Reflector、管理控制端口和3层交换机。 2.确定所有设备有正确的IP地址 ◆Avalanche管理地址:192.168.42.2(默认) ◆Reflector管理地址:192.168.42.3(默认) ◆管理控制地址:192.168.42.5(这这次测试的特定地址) 3.复制Reflector上的“Echo”到一个新的测试中,称为“FWBasicReflector” 图1:定义Avalanche,Reflector操作极限 ◆设置服务器支持HTTP1.0和FTP(1KB文件大小) ◆确保测试可以到达稳定状态 4.在Avalanche上配置“FirewallBasic”测试 选择一个预先配置好的测试(SPI)并复制它到“FirewallBasic”测试中。 你现在可以修改“FirewallBasic”并可以另存为一个新测试。 ◆配置LoadSpec来测试你想得到的极限值。 例如,假如防火墙的基准测试结果是每秒新建连接1000个,10000个并发连接数-这是测试后所得的参数-运行两个分离的测试以确保测试结构的结果满足或超过基准测试结果 使用“连接/秒”作为load-spec,确定你可以超过1000CPS的值来运行测试。 使用同一个load-spec,确保在测试运行的“稳定阶段”可以维持超过10000个的连接。 5.检查网络端口配置并运行Avlanche的“FirewallBasic” ◆流量遗漏——特别是假如测试运行在了很长的时间间隔(48小时)—这可能是一个内存遗漏 ◆新进入连接超时 当进行有效流量时,进入流量的重置。 7.确保Avalanche/Reflector和以3层为基础的测试床其操作极限要远远高于被测试的防火墙。 当维持过程中没有显示“nofailingtest”时,逐步提高load-spec。 一定要注意“FirewallBasic”测试中指定的测试床工作极限。 当没有失败测试时,你就应该准备把防火墙加入到测试床中进行压力和负载测试,建立更加贴近现实的“FirewallBasic”测试。 图2:指定测试负载情况下的CPS和最大开放连接数 4.2“FirewallStress”-防火墙压力测试 4.2.1目标 定义防火墙的操作参数极限,例如每秒连接数和开放连接数。 4.2.2额外的要求 防火墙典型分为外部、内部和DMZ端口 注意:除防火墙进入测试床所引起的必要配置变化以外,应该保证测试床配置变化的最小化。与“FirewallBasic”相比,防火墙压力测试的焦点则更集中于防火墙本身。 4.2.3需要建立的操作参数 ◆使用HTTP或者FTP的每秒建立连接数(cps) ◆最大的并发连接数(http和FTP) 4.2.4运行“防火墙压力测试” 1.如图3所示把防火墙连接到测试床中 2.配置适当的网络IP地址 图3:防火墙负载和防火墙压力测试结构图 在Avalanche和Reflector上标明典型防火墙的3个端口,分别是外部(不受保护的)、DMZ(不受保护的)和内部(受保护的)端口。 a)Reflector i)DMZ(受到的保护比较少)服务器:10.10.10.10,虚拟路由器:10.10.10.2 ii)内部(受到保护)服务器:11.11.11.10,虚拟路由器:11.11.11.2 b)Avalanche 防火墙IP地址设置(数据端口): a)内网地址(受保护的):11.11.11.1 b)内部地址(DMZ):10.10.10.1 c)外部地址(未受保护的)192.168.0.1 配置防火墙: 以下是一个典型防火墙所需要配置的样例文件。它包含了网络IP地址和策略,也只是简单地完成了“允许http”和“允许ftp”规则设置(每个厂商的语法要求都是有些变化的)。注意到这只是一个例子来演示测试方法;每一家防火墙厂商都会有不同的配置脚本和工具。 ipaddressoutside192.168.0.1255.255.0.0 ipaddressinside10.10.10.1255.255.255.0 static(inside,outside)10.10.10.1010.10.10.10 static(inside,outside)10.10.10.1110.10.10.11 conduit(inside,outside)10.10.10.1080tcp0.0.0.00.0.0.0 conduit(inside,outside)10.10.10.1121tcp0.0.0.00.0.0.0 routeoutside192.168.0.128255.255.255.128192.168.0.129 routeoutside192.168.0.0255.255.255.128192.168.0.2 timeoutxlate24:00:00conn12:00:00udp0:02:00 timeoutrpc0:10:00h3230:05:00uauth0:05:00 nosnmp-serverlocation nosnmp-servercontact snmp-servercommunitypublic 3.选择并且复制“FirewallBasic”到“FirewallStressCPS”中 4.修改指定负载来校准CPS: 使用70%的宣称基准值以确保你有一个成功的结果 图4:决定防火墙的最大CPS值 逐步修改测试伊始的Avalanche的CPS值,使用稳定阶段和拆卸阶段的值来确定总共的CPS值——反应了每个测试步骤地总共值(不同的测试阶段)——最后测试值应超过基准测试值的30-50%。 5.运行“FirewallStressCPS” 6.在Avalanche上的用户配置文件中加入URL,以混合进FTP协议测试,此外还要在Reflector上配置FTP服务器。 和生存周期比较短的HTTP连接相比,FTP交易的生存周期则比较长并且会消耗防火墙内存资源(连接表)。新的连接会消耗防火墙CPU和内存资源。和FTP相关的连接表消耗了防火墙内存资源,你应该关注图4中断点(breakpoint)左侧的CPS数值。图5则展示了CPS动态变化值。 注意:所有的参数值都会保持不变,仅仅是FTP会导致CPS值75%的跌落。你的防火墙会有不同的断点。 防火墙厂商没有必要提供以上这些数据,加入更多的协议(例如RTSP/RTP)则会要求防火墙内更多的内在资源,从而导致防火墙性能的动态下降。 注意:在图5中:一个URL的HTTP1.0和FTP其连接数和每秒交易数量(TPS)是1:1的关系,因此TPS和CPS的标签是相同的。 图5:CPS受到了多协议测试的影响 7.衡量由于FTP负载所引起的响应时间上升 当逐步提高防火墙的CPS值时,数据包通过防火墙的过程和响应延迟也会逐步提升。既然防火墙是Web服务器访问的看门人,所以提高延迟等同于减缓了用户访问Web服务器的时间,在一些情况下,访问时间会变得不可接受。 图6:由于FTP加入了HTTP交易所已导致响应时间的上升 除了CPS测试(步骤5和步骤6),并发连接也是防火墙基准测试中的关键参数。以下步骤显示了如何进行并发连接数测试: 打开“FirewallStress”测试并将其复制到“FWOpen”。 变化负载配置文件来反映SimUser,将此作为负载而不是CPS。在开始的并发用户数设置为40个。逐步提高并发用户数,直到测试失败。 在运行的样例文件中,SimUser数量的中度提高(45以上)已经导致了事务超时。没有完成的事务减少了服务器的可用性并且降低了性能以致最后到达了不可接受的地步。 除了CPS和连接数测试,我们也应该利用多协议进行一些诸如PPS(packerspersecond)和吞吐量测试,而这也被称为防火墙压力测试。 4.4“FirewallLoad”-防火墙负载测试 4.4.1目标 定义在多个以IP协议为基础的流量下和DoS攻击下防火墙的操作极限:防火墙会在负载和攻击下仍然保持可用性吗? 4.4.2额外要求 所有协议软件应被捆绑入DDoS包内。 4.4.3运行“FirewallLoad” 1.选择并且复制“FirewallStress”到“FirewallLoad”中 新建一个流量负载,流量负载代表你的网络流量包含了多个协议。 例如,你可以新建用户配置文件,这个文件代表一个流量包括了多个权重的应用流量,如HTTP(20%)、FTP(20%)、SMPT(40%)、RTSP(20%)和HTTPS(20%)。指明的权重是任意的——选择权重来反映现实通过防火墙的流量。 再次运行修改过的“FirewallLoad” 修改指定的负载,假如需要。 确定没有失败测试。 以下是修改防火墙配置的例子 static(inside,outside)10.10.10.1010.10.10.10 static(inside,outside)10.10.10.1110.10.10.11 static(inside,outside)10.10.10.1210.10.10.12 static(inside,outside)10.10.10.1310.10.10.13 mailhost(inside,outside)10.10.10.1410.10.10.141011 conduit(inside,outside)10.10.10.1080tcp0.0.0.00.0.0.0 conduit(inside,outside)10.10.10.1121tcp0.0.0.00.0.0.0 conduit(inside,outside)10.10.10.12554tcp0.0.0.00.0.0.0 conduit(inside,outside)10.10.10.13443tcp0.0.0.00.0.0.0 conduit(inside,outside)10.10.10.1425tcp0.0.0.00.0.0.0 routeoutside192.168.0.0255.255.255.128192.168.0.21 routeoutside192.168.0.128255.255.255.128192.168.0.1291 timeoutxlate24:00:00conn12:00:00udp0:02:00 timeoutrpc0:10:00h3230:05:00uauth0:05:00 3.运行“FirewallLoad”并且监视Avalanche上的实时结果。 例如,单击HTTP(见图7)和RSTP标签(见图8)。Avalanche展示了测试过程中每个协议的实时统计数据,并且测试后也有电子表格统计数据。 图7:“FirewallLoad”中HTTP实时测试结果 图8:“FirewallLoad”中RTSP实时测试结果 不断提高虚拟用户的数量(Simusers),可以快速定义受保护Web服务器(用Reflector来模拟)的页面响应时间或者是媒体服务器的流响应时间下降阀值点。 仅仅单独提高虚拟用户的数量是不充足的。“实时测试”不仅要求很大数量的用户同时要求多个不同的IP协议以体现独一无二的应用访问。Avalanche可以观察到通过防火墙的每个用户所使用的每个协议的延迟是否能满足你的响应时间要求。这是完全有可能的,利用Avalanche的“实时”测试可以揭示出40个并发用户通过防火墙访问的双向延迟是否是可接受的。无论如何,如以下图9所展示的,对于混合多种应用环境来说(HTTP,HTTPS和FTP),45个或者更多的并发用户可能导致非常高和不规则的响应时间。 假如同一个应用条件又包括进RTP/RTSP、Telnet、DNS、SMPT和另外的IP协议(Avalanche支持所有应用类型),通过防火墙的延迟将会变得很糟糕。 图9:提高并发用户数导致“FirewallLoad”性能的下降 5.将模拟DDoS攻击加入测试中。 今日大部分防火墙常常遭到黑客的攻击,这些黑客试图闯入你的网络。DDoS攻击使用假IP地址进行攻击并且持续不断的更换形式。Avalanche可以将DDoS攻击作为流量的一部分通过防火墙,从而更加精确地模拟了现实网络。 现在你可以测试不好的DDoS流量对于正常流量的影响,这可通过变化混合的流量比例来实现 ◆保持DDoS流量不变(例如是5%),而这时改变多协议正常流量的比例(例如是SMTP:FTP:HTTP:HTTPS以45:15:30:10的比例混合) ◆变化DDoS流量(例如从3、5到8%),正常流量的比例同上。 ◆两者都变化——在修改DDoS流量的同时也修改正常流量的比例。 以上3种独立测试可以验证你的防火墙在攻击下是否可以继续保持可用性,并且通过防火墙的传输延迟是否也可以保持在一个可接受的水平。 以下展示了关于以上描述的测试案例 为了将DDoS攻击作为现实流量的一部分,在Avalanche上打开“FirewallLoad”并打开“InlineDDoS”选项。(见图10) 你将会看到一个测试列表,例如PingofDeath、Smurf、SYNfloods和其他一些攻击。 单击你所需要的攻击类型并编辑每个攻击相关的变量。关于每个攻击变量编辑的详细内容,您可以使用Avalanche用户手册进行详细查阅。 除此之外,你也可以使用脚本功能来操纵以太网帧每个数据包中比特级的详细内容来定义攻击,假如你需要的话。 图10:使用InlineDDoS选项配置一个DDoS攻击 图11显示了中等数量的DDoS攻击如何使你的防火墙可用性下降的。注意在一个4~5秒期间(在此例中,大约是从02:50至02:56),在攻击下没有建立新的TCP连接。 图11:在遭受到DDoS攻击下,TCP性能下降。 假如在很长的一段时间内,防火墙都不能建立一个新的连接,那么在这段时间内,它就会变得不可用,甚至是在攻击后的恢复阶段。这是一个非常重要的发现,它会帮助你认识到防火墙在攻击下的可用性,在这时防火墙会成为整个IT应用的瓶颈。 图12:在遭受到DDoS攻击下,响应时间也变大 通过我们完成包含进DDoS攻击的“FirewallLoad”测试后,注意到以下几点: ◆在DDoS攻击阶段,HTTP和FTP服务会完全停止! ◆一些RTSP流还保持了活动状态而TCP连接开始被重置。 某些特别的防火墙在受到攻击后,会优先处理SMPT/E-mail。因此,即使是HTTP和FTP的处理被中断了,防火墙会继续处理邮件。 有些防火墙也许会用完全shutdown来代替恢复。我们建议运行DDoS注入测试的时间应该保持很长的一段时间,因为目前的防火墙经常会受到来自于公共Internet的攻击。 即使是攻击过后,防火墙的恢复时间仍然很长。例如,如图12显示,甚至是在恢复后,HTTP的响应时间达到了一分钟——这对于电子商务类型的应用来说,这是不可接受的。 到此为止我们已经讨论完新建防火墙基本测试、压力和负载测试的过程。在利用Avalanche/Reflector测试百兆防火墙的过程中,我们有如下发现: ◆HTTP应用的CPS测试值超过了2400,但是混合其他应用(如FTP)以后CPS值则下降了大约75%。 ◆超大的CPS会导致流量速度减慢,很可能会导致不可接受。 ◆当开发连接到达120000时——一些事务可能不能完成 ◆当有40个并发用户数时,混合流量可以满足服务等级协定(ServiceLevelAgreements,SLA),如果要想支持更多的用户要求,则需要对防火墙进行更高等级的性能升级。 ◆在DDoS攻击期间,防火墙不允许HTTP或者FTP流量的访问。邮件流量是绝对安全的,如果某些防火墙保证SMPT吞吐量有绝对优先级的话。 这篇应用文章提示了我们如何用超常的办法来评估防火墙,此测试方法可以精确的描述出防火墙在一定负载的情况下可用性。这些测试中的重要发现可以帮助我们发现防火墙是否符合安全型和可用性: ◆确认你的网络的可用性能 ◆数据吞吐量(Mbps/Gbps) ◆数据转发率(PPS) ◆并发TCP连接能力(连接表中的最大实体) ◆DDoS攻击下的可用性 我们需要认识到,仅仅利用这些实验室测试结果就来评估防火墙的可用性是不够的。因为现实网络中的应用情况是千变万化的,比实验室环境更为复杂。 实验室环境真实世界环境面临风险 单个设备多个设备互操作性端到端的安全性和可用性 受控的流量复杂不受控的流量混合多协议、性能不稳定、安全性和可用性 较少的安全策略分层的安全策略多个安全策略下的行为 单个网络复杂的Internet行为延迟,包丢失(还有其他) 受控的负载测试变化的负载负载范围变化很广情况下的性能 表1:实验室测试VS真实世界条件所需要面临的风险 |