标题：防火墙审计
什么是防火墙审计
防火墙审计是指对整个防火墙的功能、设置、管理、环境、弱点、漏洞等进行全面的审计。
防火墙审计的原因
审计防火墙就是要查找防火墙的问题。导致防火墙出问题的因素很多。归结起来，主要有以下四个方面的因素： 
第一，人为的疏忽。
智者千虑，必有一失。防火墙虽然已有了十多年的历史，但直到今天，还没有一个厂家可以向客户提供简单明了的管理界面。即使一个经验丰富的防火墙管理员，面对几十条上百条防火墙规则(FirewallRules)，也有搞糊涂的时候。一个生手就更不必说了。有时规则之间互相冲突。有的洞开得太大，不能够起到保护内部网络的作用。有的规则根本就违反公司的安全政策(SecurityPolicy)，就不该存在。有的单位让多人拥有防火墙管理员的帐户。谁高兴了就来设置一条新的规则，防火墙被搞得乱七八糟。防火墙是不会提醒操作员这些问题的。这些问题使防火墙的有效性大打折扣。纠正这一类问题的办法，就是靠定期的审计。 
第二，管理的松懈。
这是最普遍的情况。对于一个小公司来说，也许有一座防火墙就足够可以应付守卫网络的需求。不过，这样一个小公司，往往雇不起一个防火墙专家，就只好把这一职责外包。那个承接外包的安全公司，也许就只有那么两、三个防火墙专家在唱空城计。他们每人至少要看管好几十个公司的防火墙，人员经常处于超负荷运行状态。为了尽力满足客户的需要，他们基本上是有求必应。如果对客户说“不”，以后的合同就不好拿到了。很多安全漏洞就出在这里。因为客户们的安全知识有限，他们提出的要求有不少是违反安全原则的。随便答应了他们，就在防火墙留下了一个个安全隐患。有的公司连把防火墙外包的钱都不想花，就赌自己公司不会有霉运，随便让公司内部某个未经防火墙培训的网管兼任墙管的重任。钱是省了，可是，一场大祸，这省的钱就会加倍地赔出去。大点的公司，情况似乎好一些。防火墙有专人负责。可是，公司一大，防火墙的数目也跟着增长(笔者就职的公司有四百多座防火墙，还有很多嵌入式防火墙装在3G的微波塔内)。尤其是，公司内部也互设防火墙，以达到分级保护的目的。这就使情况极为复杂。墙越多，管理的难度就越高。一个数据在公司内部从网络的一端走到另一端，可能要通过好几道防火墙。如何让各种数据畅通无阻又不在安全方面妥协退让，就成为一个十分复杂的问题。当然，最偷懒省事的办法就是打开闸门，让鱼虾螃蟹一律通过。这种情况尤其是在紧急状态下常出现。很多临时加上去的应急策略往往变成永久策略。这就种下一个个祸根。防火墙一多，正确地做变更日志就困难得多。没有精确地做好变更日志，加上人员的流动，久而久之整个防火墙系统就成为一团理不清的乱线，该挡的不去挡，该放行的不放行。另外一个十分常见的防火墙管理方面的问题，就是忽略了对防火墙日志的定期审计。以至于墙内外风声四起，雷鸣电闪，防火墙管理员也照常睡大觉。对付以上这一类的问题，只有加强管理。和财务管理一样，防火墙的管理不能没有定期的审计。定期的审计可以协助防火墙管理人员理清乱线，发现潜在的危机，消除隐患。对于客户来说，这是负责任的做法。 
第三，防火墙自身存在的漏洞或缺陷。
一个防火墙今天是密不透风，如铜墙铁壁，过些天就有可能是漏洞百出，有如一团豆腐渣。这种情况是如何产生的呢?迄今为止，还没有哪个厂家生产的防火墙不存在任何安全漏洞。只不过那些漏洞须经时日才能被逐渐发现。每当这种情况发生，生产厂家就要拿出修补的软件包，供用户安装。有时甚至要推出新的版本才能堵住漏洞。问题在于，能懒就懒的防火墙管理员不乏其人。天长日久，欠的补钉太多了，问题就越来越大。有时，防火墙本身并不存在什么大问题，但问题出在防火墙软件基于的操作系统软件上。目前大部分在线的防火墙仍然是软件防火墙。一般地说，每个防火墙至少有一个网络界面可以进入防火墙的操作系统操，还有一个界面可以用来管理防火墙。我们叫它管理界面(ManagementInterface)。它们应该是被设置在特殊的孤立网络环境里。但在现实中往往并不是这样。通过攻击防火墙操作系统和管理界面的漏洞，可以一举攻破防火墙，起到出其不意的效果。要堵住操作系统的漏洞，也基本上是靠生产厂家提供修补程序。只要严格按照厂家的信息，及时修补操作系统的漏洞，严格控制进入管理界面的渠道，这一问题就不会存在。还有的防火墙，由于价格过于低廉，功能太差，比如说不能检测和阻挡拒绝服务类的攻击，无法满足日益增长的安全需要，就只好更新换代。对防火墙的定期审计，可以查出这一方面的问题，及时采取明智的措施。 
第四，防火墙的运行及环境状况。
对于很多企业来说，防火墙是数据进出口的重要关卡。防火墙一旦停止运行，或者出现阻滞的状态，企业的运营就会受影响。一个正常情况下运行的防火墙，应该有足够的内存和外存空间来周转和储存数据，在大多数的时间处理器不是处于满负荷状态，防火墙有高质量的稳压电源及断电保护，周围温度和湿度有严格的控制，以及物理安全有保障。当然，最好所有的防火墙都能够有failover的设置。这样在主墙倒塌的情况下，预备墙可以自动接替。这些条件，并不是所有单位都有做到。这方面的问题，往往最容易受到忽略。有的公司把防火墙与服务器，网络开关，路由器等同堆在一层架子上。网络管理员一不小心就可将防火墙的电缆碰掉，造成网络中断。这一类的问题看起来并不难解决，但并不是所有单位都解决好了。审计防火墙，可以发现这方面的问题。 
现在，我们对为什么要定期审计防火墙，以及主要从哪几个方面去查问题，应该有个较清楚的轮廓了。
审计防火墙的人员
就像有财务知识和经验的专业人员原则上都可以搞财务审计一样，大凡精通网络安全审计及防火墙管理的专业人员，原则上都可以审计防火墙。但是，这里还是有一些规矩的。 
一般来说，防火墙管理员本人不应被聘请来审计自己管理的防火墙。这和财务上把审计和财会人员职责分开有些类似。鲜有防火墙管理员会承认自己管理的防火强存在重大问题。别人从另外一个角度来看问题，就比较容易发现毛病之所在。当然，有师徒关系的防火墙管理员最好也不要互查防火墙。尤其在国内，碍面子的话总说不出口。另外，如果一家单位是把防火墙管理工作外包的话，那么就最好不要请同一外包公司审计自己的防火墙。但是如果那家外包公司主动经常地审计客户的防火墙，那倒是件好事。大公司可以让不管理防火墙的网络安全管理人员来审防火墙，或者干脆把这一工作外包。 
有人会提出，既然审计防火墙有一定的规矩去遵循，为什么不写一个软件去把这项业务自动化?到目前为止，审计防火墙日志的软件倒是有不少，也有人写出软件来审计防火墙的规则。但对防火墙进行全面的审计，和财务审计那样，牵涉到的因素太多，不能全用软件来执行。尤其是上市公司的安全审计结果会影响公司的声誉及股票持有人的信心。稍一出错就有可能牵扯到法律诉讼。在这类情况下，人的经验还是最可靠的。目前审计防火墙最快捷的办法，就是事先开列详细的审计步骤，一步一个脚印地执行，把审计结果一一填写在事先准备好的一堆(电子)表格上(AuditChecklist)。表填满了，剩下的任务就是填表写报告。
防火墙审计的基本方法和步骤
(1)在开始审计防火墙前，要把防火墙的周围网络环境，保护对象，安全要求搞清楚。还要搜集一些必要的资料为后面的步骤做准保。至少要得到最新的以下方面的情报： 
防火墙周围区域网络的流程图(包括内部和外部) 
路由器的设置 
防火墙及周围设备在网络上的名字和IP地址 
防火墙网络连接情况(防火墙每个网络界面的IP和邻近设备) 
有关防火墙的最基本信息，比如生产厂家，版本，质量保障合同，管理员的姓名，24小时技术支持的电话号码，等等。 
防火墙使用单位的安全政策(SecurityPolicy)。在国内还必须搞清楚国家政策和法律要求。 
防火墙的管理制度(书面)。要仔细检查责任制，变更控制过程(changecontrolprocess)，维修和厂家销后支持的途径及过程，等等。 
防火墙的安装、使用、升级、维护、及日常管理记录。 
这一步实际上是为整个审计工作做准备。如果缺少以上任何一个方面的情报，必须在审计报告中建议有关人员补上。最难补的是安全政策。可是一个单位如果没有一个哪怕是很简单的安全政策，信息安全就只能是儿戏，充其量是某种权宜之计。如果缺失防火墙记录，能补的尽量补上，补不上的就从现在开始严格地做记录。根据笔者的经验，很多单位在这第一步就出问题。比如，根本没有任何的防火墙管理制度或维护日志。即使有，也是基本空白。防火墙的管理界面放到高危险区，防火墙的Internet端口接入的网络开关(NetworkSwitch)上接入了几个未登记的机器，等等。但如果这第一步没有问题，后边的问题也不会太多。 
(2)下一步就是查看防火墙的配置、环境、和运行情况。这其中包括逻辑的和物理的状况要调查的至少应包括以下几个方面： 
防火墙的硬件设置(这主要是查处理器的数目及速度，硬件防火墙免查这一项)。 
防火墙的操作系统及版本(硬件防火墙免查操作系统及版本)。 
防火墙的网卡设置速度。是不是halfduplex?是不是10Base-T?其速度跟网络开关的速度是否严格匹配? 
防火墙的日志是存在哪里的(存在自身的硬驱还是另一计算机的硬驱)?如果存在另外一台计算机上，那么是如何保护日志的(是否加密)?保存多长时间?有没有把日志备份到磁带上? 
如果防火墙的日志是存到自己的硬驱里，那么硬驱总共有多大存储空间?还剩多少存储空间?如果只剩有很少的空间，那么要赶快想办法。 
看一看防火墙的内存(RAM)使用情况。看看是否经常处于满负荷状态。如果是，就要在审计报告中建议考虑增加内存。 
看一看防火墙的中央处理器使用情况。看看是否经常处于满负荷状态。如果是，就要在审计报告中建议更换机器。 
对于软件防火墙，是不是定期将所有数据(包括操作系统)备份到磁带上? 
防火墙有没有failover设置?如果有，怎么测试它是否真的管用? 
有没有紧急情况应急方案?对方案有没有进行定期的实战训练? 
有关防火墙的文件是不是胡乱堆在哪个桌子上任人翻看?防火墙是放在哪里的?机房温度是否太高?防火墙的散热风扇是否在转?摸摸防火墙是不是烫手?机房的门是不是大敞开欢迎各方游客?机房有没有防火报警器?防火墙是不是随便堆在另一台计算机上面一碰就倒?所有的电缆是否用标签明确地说明网络界面及IP?电缆是不是吊在空中一不小心就会把人绊倒?电源是不是稳压的?有没有断电保护?机房地面是不是防静电的?机房的垃圾桶里面是不是有防火墙的示意图、半截烟头、香蕉皮、色情图文?一个随便乱丢机密文件、在机房吸烟、饱开口福、想入非非的防火墙管理员是难以胜任的。 
上面除第一个环节外，其它任何一个环节出问题，都有可能导致严重的后果。像防火墙操作系统的版本，如果还是SunSolaris2.6，就是个大问题。因为Sun(升阳公司)早就停止支持Solaris2.6，并不再为其写任何补钉了。这就是说，如果某黑客发现了一个新的SunSolaris2.6的漏洞，SunSolaris2.6的用户将毫无举措。 
(3)下一步就是了解防火墙的自身安全状况。防火墙是用来保护网络的，当然首先要有能力保护自己。自身不保的防火墙等于是放火墙。在这方面至少要把以下几点搞清楚： 
对于软件防火墙，查看防火墙的操作系统究竟有没有按照生产厂家的规定，安装足够的安全补钉。如果没有，那么将缺少的补钉一一列出来。 
查看防火墙本身的补钉–是否有按照生产厂家的规定，把安全补钉装够。如果没有，那么将缺少的补钉一一列出来。如果是硬件防火墙，那么就要查看防火墙的 Firmware版本。然后核对生产厂家的最新版本。如果防火墙的Firmware确版本不是最新的，那么就要在审计报告中把这个问题写上去。 
有多少人被授权进行防火墙的管理?他们是使用各自的用户名进入防火墙管理界面，还是否共享一个用户名?有没有一张示意图表明这些人的权限?他们是否被要求定期更换口令?是否允许使用脆弱口令?防火墙日志是否记详细记录每个管理员的进入系统的时间、输错口令的次数、被拒绝进入的次数，退出系统的时间，等等。 
有没有“后门”可以避开种种安全控制，进入防火墙。这是比较困难的。因为防火墙管理员一般不会说出这一类秘密。要做些研究，包括向生产厂家询问。特别是要向生产厂家打听系统安装时第一个使用的用户名及口令。然后看看那个用户名和口令是不是在系统安装好后已更改。 
防火墙管理是从哪台计算机进行操作的?那台计算机是不是有屏幕保护以防止外人随意操作?是不是谁都可以躲在后面偷看一把?翻开键盘底下，是不是写了一行口令? 
一般地说，防火墙的管理是远程操作的。那么，我们要了解这一远程操作过程是否自始至终加密。可以试试用Telnet远程登录。还要搞清楚是不是任何IP都可以允许进行远程管理。如果是，一定要在审计报告中要求对IP 加严格的限制。 
对于软件防火墙，还要仔细检查操作系统的设置。是不是有任何多余的系统过程(services)在运行?各用户口令是否定期改变?是否允许使用脆弱口令?是否有完备的操作系统安全日志?等等。 
(4)现在我们要进入审计的核心部分：检查防火墙的规则(ruleset)。这是防火墙审计过程中最困难、最复杂，最费时的一步。 
每一条防火墙的规则的产生或更改，都需要有详细的注释，写清楚是谁要求添加和修改的，原因何在，添加或更改的日期，以及时限等。我们首先要把全部的规则从防火墙调出(几乎所有品牌的防火墙都有这项功能)，然后打印出来。下面就要一条一条地去查看是否有注释……如果任何一条规则后面没有加注释，那么就要在审计报告中建议防火墙管理员补上。 
然后，我们要检查防火墙的第一条规则。防火墙的第一条规则就是拒绝一切数据流进入(“blockall”)。这一步极少出问题。 
下面的工作，就是要把所有时限并过时了的规则列在一起。这一步的目的就是防止那些应急策略变成永久策略。如果防火墙管理员对于每一条规则都做了详细的注释，这一步就很快可以完成。完成这一步可以为下一步减少许多工作量。找出了所有的过时了的规则后，最终目的是要把它们删除，或者把它们变成永久性的(在不违反安全政策的前提下)。如果防火墙管理员不能提供很好的注释，这一步就无法完成。下一步就要多一些工作量。要把这个问题写在审计报告上，以防再次出现。 
然后我们要一条一条地去核实防火墙规则的有效性。所谓有效性，是指两个方面。其一是指每一条规则是否需要存在。最简单的做法，就是核实每一条规则的起点和终点是否还存在。比如说一条规则要从内部IP192.168.24.20到外部IP201.30.33.11打开TCP端口3105，使公司某人可以参加某个网上会议。但是仔细一检查，IP201.30.33.11已关闭多时。也就是说这一条规则无效，必须删除，或者改到正确的IP上。有效性又是指每一条规则是否能够做要做的事情。还以上面的例子，假如两个IP都处于工作状态，但是公司里这个参加网上会议的人老是抱怨不能观看对方的实况样品电视解说。只可以看静态的图象。检查原因，TCP端口3105是打开了，但是对方的系统要求把UDP端口也打开，才能看到电视。这条规则须经修改，加开UDP端口3105. 
防火墙规则安全性的涵义较广。接受过专门培训的防火墙管理员一般是知道如何避免使用不安全的规则。但是现实中有很多复杂的情况，稍不留心就会使一条规则成为一个安全隐患。安全性方面大多数问题都是把“洞”开得太大，或开在不该开的地方。举个例子，假设在DMZ上有几十台互联网服务器(WebServer)在日夜运行。日常管理和监视这些服务器是通过一台设在内部网的Tivoli服务器来执行的。可是Tivoli服务器和DMZ上的几十台互联网服务器之间有一层防火墙挡着。根据IBM的技术文献，这就要在这一层防火墙开许多端口才行。有些还必需是双向的(bi-directional)。如果真听了IBM的话，那防火墙的安全性就大打折扣。因为攻破DMZ是相对来说较容易的事。攻破了DMZ，又有这么多端口大门敞开，攻入内部网络就不太费事了。解决这个问题的办法，是关掉这些端口，在DMZ上安装一个Tivoli数据中转服务器，然后只要在防火墙上开两个单向端口就行了。安全性还反映在是否执行单位的安全政策方面。比如说，某单位的安全政策规定不准随便安装SMTP服务器。但是某部门异想天开，要试验一下让客户能够自己开启用自己注册域名的Email帐户发送电子邮件的可行性。由于大家深知SMTP的危险性，就决定把它装在DMZ上，内外各有一层防火墙作屏障。可是由于SMTP端口在防火墙上已打开，而且由于是试验的缘故，对四面八方的邮件转发(MailRelay)的申请一概不拒。这一端口一开，立即被世界上众多的垃圾邮件发送装置自动扫描到。几小时后成千上万的垃圾邮件就潮水般地涌过来，寻找免费服务。可是那个防火墙后面的SMTP服务器却说不行，因为你们都不能通过我的身份鉴别。但那成千上万的垃圾邮件发送装置不管这一套。这个失败了，那个又来碰碰运气。这样一来，这台SMTP服务器一天到晚在被狂轰滥炸。炸几下并不会导致任何严重后果。问题是网络被阻塞。事实上，这个问题在国内比较严重。很多SMTP服务器根本没有任何防范垃圾邮件功能。它们深受国际垃圾邮件大佬们的青睐。解决这个问题很简单：在审计报告中建议：严格按照单位的安全政策办事，取消这类的不安全的SMTP服务器。中国的具体国情是，国家有严格规定阻挡特定的IP流通。那么这也是要查的一项。 
最后，我们要确保防火墙规则的合理性。合理的防火墙规则应没有重复，没有交叠，它们之间也不互相冲突。这方面的问题在多人管理的防火墙上较多。要把重复的，相互交叠的，还有互相冲突的规则列出来，在审计报告中建议修改它们。 
上面几件事做好了，防火墙的一团乱线就理清了，人为造成的漏洞堵住了。在美国很多单位有人仅凭做好这件事情，就会得到上面的嘉奖。因为它解决了很多实际问题。 
(5)上面几个环节，都是由经验丰富的人去做的。现在我们可以轻松一点了：让傻瓜机器去帮点忙。这就是对防火墙进行漏洞扫描(VulnerabilityScan)。这一类时髦的安全软件工具市场上至少已有一打。有些确实很好。要注意的是，对防火墙的每一个网络界面都要扫描一番，不要漏掉任何一个。如果你有更时髦的穿透试验(PenetrationTest)软件，当然也无妨拿过来用用。你手中的百般武艺尽可以拿来大显身手。笔者还建议，对用来做防火墙管理的计算机也不妨扫描一番，比如说看看是否有人已送了一个特洛伊木马去常驻。如果把存放防火墙日志的那台计算机也扫描一番，也不算过分。把所有扫描结果写到审计报告上。有一点要注意的是，不管你用何种方法对防火墙进行扫描，一定要把时间，扫描工具或人使用的IP都准确地记下来。在下一步的审计防火墙的日志时，一定要看看防火墙日志有没有把受到的攻击如实记录下来。有的防火墙设置有警报。要看看警报系统是否正常工作。 
(6)然后，我们来审计防火墙的日志。国内对这方面已有不少介绍。这里就不打算重复了。这方面的软件也不少。我想提醒两点：第一，对于软件防火墙，别忘了也审计防火墙操作系统的日志。如果一台防火墙也用来做VPN，那么也要注意有关VPN上各项活动的日志(一般来说这类VPN没有独立的日志)。如果一台防火墙也用来做代理服务器(Proxy)，那么也要审计代理服务器的日志。审计代理服务器的日志耗费时间，用软件工具可以大大提高效率。第二，审计防火墙的日志，并不单单是一个技术问题，有时也可能会引出人事，法律，隐私等问题。它在某种程度上可以监视跟踪员工上班时的网上行为。它可能导致员工丢饭碗，也可能暴露员工的工作效率，癖好，情绪，乃至性倾向。笔者在1996年某次查看防火墙员工浏揽互联网日志，发现某部门的一个挺不错的员工的“性”趣全是同性。在跟同事聊天时不慎说漏了嘴，很快这消息就长了翅膀。不久那个员工就在风言风雨中辞职了。这是笔者的一个永远的沉痛教训。审计防火墙的日志，最好由两人查看同一日志，以防任何一人隐瞒任何问题。但对于审计的结果，要严加保密。如果审计兵结果牵涉到人事、法律方面的问题，要把原始证据妥善保存好，以便复核。只有原始日志才能用于法律证据。在防火墙的审计报告中要隐去涉嫌人名。 
(7)最后的一步，就是对防火墙实施攻击测验(PenetrationTesting)，以测验防火墙的真实安全性。这需要最谨慎从事。这是只有专家才能做的事情。不同的专家由于经验和手段不同，会得出不同的结果。称职的这类专家人数极少。如果没有条件，这一步可以省略。 
对防火墙的审计工作本身，大致就是这些步骤。但要把工作善始善终，还有一件大事要做，这就是要把审计报告写出来。这是可以自动化的。把上述讲的所有结果列在一张表格上。然后给每一方面进行打分。打好分后把分数最低和最高的那几条写到总结里去。对需要改正的地方，提出相对的建议。然后再把几个大方面的结果画几张五颜六色的大饼图。最后再搞几个附录之类的。报告就做出来了。国内有些有关网络安全的文章，写的充满玄机，深不可测，把简单的事情搞复杂了。但是防火墙的审计报告，却要以简单明了的方式和格式，让客户看得懂，知道怎样去改正错误，避免再犯错误。这就要把复杂的事情弄简单一些。