测试防火墙系统
测试防火墙系统
创建时间:2004-05-18
文章属性:转载
文章提交:
sFqRy (mqphk163_at_163.com)
原著:CERT(R)
翻译人: demonalex
email: demonalex_at_dark2s.org
homepage:
http://demonalex.cn.st
A practice from the CERT(R) Security Improvement Modules(
http://www.cert.org/security-improvement/)
这次测试的目的是为了知道防火墙是否想我们想象中的意图来工作的。在此之前你必须:
·制定一个完整的测试计划,测试的意图主要集中在路由、包过滤、日志记录与警报的性能上
·测试当防火墙系统处于非正常工作状态时的恢复防御方案
·设计你的初步测试组件
其中比较重要的的测试包括:
·硬件测试(处理器、内外储存器、网络接口等等)
·操作系统软件(引导部分、控制台访问等等)
·防火墙软件
·网络互联设备(CABLES、交换机、集线器等等)
·防火墙配置软件
-路由型规则
-包过滤规则与关联日志、警报选项
*****为什么说这些是比较重要的呢?*****
测试与效验你的防火墙系统有利于提高防火墙的工作效率,使其发挥令你满意的效果。你必须了解每个系统组件有可
能出现的错误与各种错误的恢复处理技术。一旦在你的规划下有防火墙系统出现非工作状态,这就需要你及时去进行
恢复处理了。
造成防火墙系统出现突破口的最常见原因就是你的防火墙配置问题。要知道,你需要在所有的测试项目之前做一个全
面的针对配置的测试(例如路由功能、包过滤、日志处理能力等)。
*****应该怎么去做?*****
“建立一个测试计划”
你需要在做一个计划,让系统本身去测试防火墙系统与策略的执行情况,然后测试系统的执行情况。
1建立一个所有可替代的系统组件的列表,用来记录一些会导致防火墙系统出错的敏感故障。
2为每一个组件建立一个简短的特征说明列表列表,用语阐述其对防火墙系统运作的影响。不必理会这些影
响对防火墙系统的损害类型与程度和其可能发生的系数高低。
3为每一个关联的故障类型
-设计一个特定的情况或某个指标去模拟它
-设计一个缓冲方案去削弱它对系统的冲击性破坏
打比方一个测试的特定情况是运行防火墙软件的主机系统出现不可替换的硬件问题时,且这个硬件将会影响到
信息通信的枢纽问题,例如网络适配器损坏,模仿这类型的故障可以简单地拔出该网络接口。
至于防御/恢复策略的例子可以是做好一整套的后备防火墙系统。当信息包出现延误等问题时在最短的时间内
将机器替换。
测试一个策略在系统中的运作情况是很困难的。用尽方法去测试IP包过滤设置是不可行的;这样可能出现很多
种情况。我们推崇你使用分界测试(分部测试)来取代总体测试。在这些测试上,你必须确定你实施的包过滤规
则与每个分块之间的分界线。这样你需要做到:
·为每个规则定义一个边界规则。通常,每个规则的必要参数都会有一个或两个边界点的。在这个区域里
将会被划分为一个多面型的包特征区。通常划分的特征包括:通信协议、源地址、目标地址、源端口、
目标端口等。基本上,每种包特征都可以独立地去配对包过滤规则在区域里所定义的数值尺度。例如,
其中一个规则允许TCP包从任何主机发送到你的WEB服务器的80端口,这个例子使用了三个配对特征(协议
、目标地址、目标端口),在这个实例中也将一个特征区划分成三个区域:TCP包到WEB服务器低于80端口、
等于80端口、大于80端口。
·你必须为每一个已经设置好的区域做一些信息交换的测试。确认一下这些特定的区域能否正常地通过与
拒绝所有的信息交换。做一个单独的区域,在区域中拒绝或者通过所有的信息交换;这样做的目的是为
了划分包特征通信的区域问题。
作为一个综合性的规则群,它可以是一种比较单一的处理机制,并且有可能是没有被应用过的。若是没有被应
用过的规则群,这要求一群人去反复审核它们的存在性并要求有人能够说出每一个规则所需要实施的意义。
整个测试计划包括案例测试、配置测试、与期待目标:
·测试路由配置、包过滤规则(包括特殊服务的测试)、日志功能与警报
·测试防火墙系统整体性能(例如硬/软件故障恢复、足够的日志存储容量、日志档案的容错性、监视追踪
器的性能问题)
·尝试在正常或不正常这两种情况下进行的测试
同样你也需要记录你在测试中打算使用的工具(扫描器、监测器、还有漏洞/攻击探测工具),并且相应地测试一
下它们的性能。
“获取测试工具”
逐步使用你的各种防火墙测试工具能够知道你的防火墙产品在各类性能指标上是否存在着不足
各种类型的防火墙测试工具包括①:
·网络通信包生成器(如SPAK[Send PAcKets]、ipsend、Ballista)
·网络监视器(如tcpdump与Network Monitor)
·端口扫描器(如strobe与nmap)
·漏洞探测器(可以扫描到一定的有效范围、能针对多种漏洞的)
·入侵测试系统[IDS]如NFR②[Network Flight Recorder]与Shadow③
查阅相关信息可以看Detecting Signs of Intrusion[Allen 00],特定的实践可以参阅”Identify data that
characterize systems and aid in detecting signs of suspicious behavior”、建议书在”Identify tools
that aid in detecting signs of intrusion”。
“在你的测试环境中测试防火墙系统的功能”
建立一个测试框架以便你的防火墙系统能在两台独立的主机之中连通,这两台端一端代表外网一端代表外网。
事例图在8-1″Test Environment”。
在测试时要确保内网的默认网关为防火墙系统(当然这里指的是企业级带路由的防火墙啦:),如果你已经选择
好一个完整的日志记录体系(推崇),工作在内网主机与日志记录主机之间的话,那么你就可以进行日志记录选
项测试了。如果日志记录在防火墙机器上完成的话,你可以直接使用内网机器连上去。
把安装有扫描器与嗅探器的机器安置在拓扑的内部与外部,用于分析与捕捉双向的通信问题与通信情况(数据
从内到外、从外到内)。
测试执行的步骤应该遵循:
·停止包过滤。
·注入各类包用于演示路由规则并通过防火墙系统。
·通过防火墙的日志与你的扫描器的结果来判断包的路由是否准确。
·打开包过滤。
·接入网间通信,为各种协议、所有端口、有可能使用的源地址与目标地址的网间通信摄取样本记录。
·确认应该被堵塞(拒绝)的包被堵塞了。比方说,如果所有的UDP包被设置为被堵塞,要确认没有一个UDP
包通过了。还有确认被设置为通过或脱离(允许)的包被通过和脱离了。你可以通过防火墙的日志与扫描
器的分析来得到这些实验的结果。
·扫描那些被防火墙允许与拒绝的端口,看看你的防火墙系统是否像你设置时预期的一样。
·检查一下包过滤规则中日志选项参数,测试一下日志功能是否在所有网络通信中能像预期中工作。
·测试一下在所有网络通信中出现预定警报时是否有特定的通知信号目的者(如防火墙系统管理员)与特殊
的行动(页面显示与EMAIL通知)。
上述的步骤需要至少两个人一步步计划与实施:最初由某一个人负责整个工程的实施,包括路由配置、过过滤
规则、日志选项、警报选项,而另外单独一个人负责工程的复检工作、鉴定每个部分的工作程序、商订网络的
拓扑与安全策略的实施是否恰当。
“在你的实施环境中测试防火墙系统的功能”
在这个步骤你必须把环境从单层次的体系结构(图8-2″Single layer firewall architecture”)演变为多层次
的体系结构(图8-3″Multiple layer firewall architecture”)。
这个步骤也同样需要你设定一个联合有一个或几个私网与公网的网络拓扑环境。在公网主要是定义为向内网进
行如WWW(HTTP)、FTP、email(SMTP)、DNS这样的请求的应答,有时也会向内网提供诸如SNMP、文件访问、登陆
等的服务的。在公网里你的主机也可以被描述为DMZ(非军事区)。在内网则被定义为内网各用户的工作站。详
细图表可以看图8-4″Production Environment”。
测试执行的步骤应该遵循:
·把你的防火墙系统连接到内外网的拓扑之中。
·设置内外网主机的路由配置,使其能通过防火墙系统进行通信。这一步的选择是建立在一个service-by
-service的基础上,例如,一台在公网的WEB服务器有可能要去访问某台在私网的某台主机上的一个文
件。围绕着这类型的服务还有WEB、文件访问、DNS、mail、远程登陆详细图则可以参照图8-4″Product
ion Environment”。
·测试防火墙系统能否记录‘进入’或者‘外出’的网络通信。你可以使用扫描器与网络嗅探器来确认一
下这一点。
·确认应该被堵塞(拒绝)的包被堵塞了。比方说,如果所有的UDP包被设置为被堵塞,要确认没有一个UDP
包通过了。还有确认被设置为通过或脱离(允许)的包被通过和脱离了。你可以通过防火墙的日志与扫描
器的分析来得到这些实验的结果。
·仔细地扫描你的网络内的所有主机(包括防火墙系统)。检查你扫描的包是否被堵塞,从而确认你不能从
中得到任何数据信息。尝试使用特定的‘认证端口’(如使用FTP的20端口)发送包去扫描各端口的存活
情况,看看这样能不能脱离防火墙的规则限制。
·你可以把入侵测试系统安装在你的虚拟网络环境或现实网络环境中,帮助你了解与测试你的包过滤规则
能否保护你的系统与网络对抗现有的攻击行为。要做到这样你将需要在基本的规划上运行这一类的工具
并定期分析结果。当然,你可以将这一步的测试工作推迟到你完全地配置后整个新的防火墙系统之后。
·检查一下包过滤规则中日志选项参数,测试一下日志功能是否在所有网络通信中能像预期中工作。
·测试一下在所有网络通信中出现预定警报时是否有特定的通知信号目的者(如防火墙系统管理员)与特殊
的行动(页面显示与EMAIL通知)。
你不可以把测试路由功能的工作放在连接防火墙系统至你的外网接口之后[请查阅“9. Install the firewall
system.”(
http://www.cert.org/security-improvement/practices/p061.html)与“10. Phase the firew-
all system into operation.”(
http://www.cert.org/security-improvement/practices/p063.html)]。最
后,你应该先把新的防火墙系统安装在内网,并配置通过,然后再接上外网接口。为了降低最后阶段测试所带
来的风险,管理员可以在内网连上少量的机器(主管理机器群与防火墙系统),当测试通过后才逐步增加内网的
机器数目。
“选定与测试日志文件的内容特征”
当日志文件出现存放空间不足时,你需要设置防火墙系统自行反应策略。下面有几种相关的选择:
·防火墙系统关闭所有相关的外网连接。
·继续工作,新日志复写入原最旧的日志空间中。
·继续工作,但不作任何日志记录。
第一个选择是最安全但又不允许使用在防火墙系统上的。你可以尝试一下模拟防火墙系统在日志空间被全部占
用时的运行状态,看看能否到达你所选择的预期效果。
选择与测试适当的日志内容选项,这些选项包括:
·日志文件的路径(例如防火墙本地或远程机器的储存器)
·日志文件的存档时间段
·日志文件的清除时间段
“测试防火墙系统”
每一个相关联的故障都应该写入测试报告中去(看整个测试过程的第一步),尝试执行与模拟所有有可能发生的
特定情况,并测试相应的舒缓策略与评估其影响的破坏指数。
“扫描缺陷”
使用一系列的缺陷(漏洞等等)探测工具扫描你的防火墙系统,看看有否探测出存在着已经被发现的缺陷类型。
若探测工具探测出有此类缺陷的补丁存在,请安装之并重新进行扫描操作,这样可以确认缺陷已被消除。
“设计初步的渗透测试环境”
在正常工作的情况下,选定一个特定的测试情况集来进行渗透测试。这些需要参考的情况包括出入数据包是否
已经被路由了、过滤、记录,且在此基础上确保一些特殊服务(WWW、email、FTP等等)也能在预期中进行此类
处理。
一旦需要到新的防火墙系统加入至正常的工作环境时,你可以在改变网络现状前选择使用一系列的测试来检验
该改变是否会为正常的工作带来什么负面影响。
“准备把系统投入使用”
在你完成整个防火墙系统的测试之前你必须建立与记录一套‘密码’通信机制或其他的安全基准手段以便你能
与防火墙系统进行安全的交流与管理。查阅相关信息可以看Detecting Signs of Intrusion[Allen 00],特定
的实践可以参阅”Identify data that characterize systems and aid in detecting signs of suspicious
behavior.”。
在你完成测试过程时必须做一个配置选项列表的备份。查阅相关信息可以看Securing Desktop Workstations
[Simmel 99],,特定的实践可以参阅”Configure computers for file backups.”。
“准备进行监测任务”
监控网络的综合指数、吞吐量以及防火墙系统是确保你已经正确地配置安全策略并且这些安全策略在正常执行
的唯一途径。
确保你的安全策略、程序、工具等等资源处于必要的位置以便你能很好地监控你的网络与机器群,包括你的防
火墙系统。
*****策略注意事项*****
你的组织/团队作防火墙/系统/网络等安全测试行为应该遵循以下:
·测试的防火墙系统必须在你能监控的环境下进行。
·防火墙系统在每次出现配置或结构更改时应该重新进行渗透测试。
·定期升级渗透测试组件用于测试防火墙系统的配置状况。
·定期升级与维护保护区中的各种应用程序、操作系统、常用组件与硬件。
·监控所有网络与系统,包括你的防火墙系统,这是非常有必要的。
—————————————————————————————————
“脚注”
①本文所提及的一些工具相关信息可以在“Identifying tools that aid in detecting signs of intrusion
”一文与COAST Web site中找到。
②NFR可以查看
http://www.nfr.com/。
③Shadow是U.S. Navy(R)所研发的入侵测试系统,其相关信息可以在
http://www.sans.org/中找到。