1、正确理解防火墙策略的执行过程很多初次接触 ISA 的管理员,经常会发现自己的管理意图没有得到贯彻。自己明明禁止用户使用 QQ 聊天,可你看这个老兄正在和多个 MM 聊得热火朝天;早就禁止在上班时间访问游戏网站,可这个家伙不正在和别人下棋吗?最郁闷的是就连简单的禁止访问百度搜索引擎都做不到,照样有很多人用百度搜来搜去不少深感智力受到侮辱的网管愤怒地发出了“ISA 就是不灵”的吼声。ISA 真是不灵吗?不是的,其实发生这些的主要原因是 ISA 管理员并没有真正理解防火墙策略的执行过程。今天我们就来好好地分析一下 ISA 防火墙策略的执行过程,避免在以后的工作中犯类似的错误。首先声明,我们今天讨论的
2、是 ISA2006 标准版的策略执行过程,企业版比标准版要复杂一些,以后我们再讨论。我们可以把 ISA 当作是信息高速公路上的一个检查站,当有数据包要通过 ISA 时,ISA 就会利用策略对数据包进行检查,检查通过就放行,否则就拒绝。ISA 检查数据包的顺序是:一 检查是否符合网络规则二 检查是否符合系统策略三 检查是否符合防火墙策略一 网络规则一个数据包通过 ISA 时,ISA 首先要检查的就是网络规则。网络规则是 ISA 中非常重要而又很容易被忽视的一个因素。ISA 检查数据包时首先要考虑的就是这个数据包是从哪个网络到哪个网络,这两个网络间的网络规则是什么。也就是说 ISA 是基于网络进行
3、控制,而不是很多朋友认为的基于主机进行控制。网络规则只有两种,路由或 NAT。如果 A 网络到 B 网络的网络规则为路由,那么数据包从 A 网络到 B 网络或者从 B 网络到 A 网络都有可能;如果 A 网络到 B 网络的网络规则为 NAT,那么数据包只有可能从 A 到 B,而不可能从 B 到 A。我们可以把两个网络比喻为两个城市,网络规则就象是城市之间的高速公路,如果两个网络之间的网络规则为路由,那就象是两个城市之间有一条双向高速公路;如果网络规则为 NAT,则就相当于两个城市之间有一条单行高速公路。明白了网络规则的作用,有些问题就很好解释了。有些 ISA 管理员问过这样一个问题:“我在 I
4、SA 的防火墙策略中已经允许外网访问内网,为什么外网机器还是访问不进来?”现在来看这个问题就很简单了,因为 ISA 认为内网和外网之间的网络规则是 NAT,如下图所示,NAT 规则决定了只有可能从内网到外网而不可能从外网到内网,因此当外网访问内网时,ISA 只需检查网络规则就。因此如果你确实需要外网访问内网,你就应该先把内网和外网之间的网络规则改为路由。还有一个网络规则的例子,有一个管理员用 ISA 把 DMZ 区的一个 FTP 服务器发布到了外网和内网,结果外网用户访问正常,内网用户却无法访问。为什么,因为 DMZ 和外网是 NAT 关系,而 DMZ 和内网是路由关系。由于从 DMZ 到外网
5、是NAT 关系,外网用户无法通过访问规则直接访问,所以通过发布规则访问是合理的;而内网和 DMZ 是路由关系,因此内网用户就应该通过访问规则而不是发布规则来访问。综上所述,网络规则是 ISA 进行访问控制时所要考虑的第一要务,只有从源网络到目标网络被网络规则许可了,ISA 才会继续检查系统策略和防火墙策略;如果网络规则不许可,ISA 会直接拒绝访问,根本不会再向下检查系统策略和防火墙策略。大家写访问规则时一定要注意这点。二 系统策略如果一个数据包通过了网络规则的检查,ISA 接下来就要看看它是否符合系统策略了。ISA2006 标准版中预设了 30 条系统策略,系统策略应用于 ISA 本地主机,
6、控制着从其他网络到本地主机或者从本地主机到其他网络的通讯,系统策略中启用了一些诸如远程管理,日志,网络诊断等功能。一般情况下,我们对系统策略只能允许或禁止,或对少数策略的某些属性作一些修改。以前曾经有朋友问我,为什么 ISA 安装后防火墙策略中明明禁止了所有通讯,但 ISA 主机还是可以 ping 到其他计算机,是否 ISA 本机有某些特权呢?不是的,ISA 能对其他网络进行有限访问完全是由系统策略决定的,只是由于系统策略没有显示出来,因此安装完 ISA 后我们并没有注意到它。我们来看看系统策略到底有哪些内容,打开 ISA 服务器管理,右键点击防火墙策略,如下图所示,在查看中选择“显示系统策略
7、规则”三 防火墙策略防火墙策略用来控制源网络和目标网络的通讯,是 ISA 管理员控制网络访问的常规武器,也是本文讨论的重点所在。防火墙策略的优先级就是按照规则排列的顺序,而不是按照拒绝优先原则。由于系统策略优先级也是按照序号排列,和防火墙策略优先级完全一样,我们甚至可以把防火墙策略看成是从 31 开始编号的系统策略。数据包通过网络规则的检查后,就要面临系统策略和防火墙策略的考验了。ISA将从第一条策略开始检查,检查数据包的访问请求是否匹配策略,如果匹配,就按照策略的规定执行,结果无非是禁止或允许。如果不匹配,ISA 就将按顺序检查下一条策略,从第一条系统策略一直检查到最后一条防火墙策略。那有人
8、要问了,如果把所有策略都检查完了还不匹配怎么办?呵呵,这是不可能的,ISA 自带的最后一条防火墙策略内容是禁止所有网络间的一切通讯,如下图所示,这条防火墙策略可以与所有的网络访问相匹配,因此 ISA 实际上使用了隐式拒绝,也就是说如果某个访问请求如果没有被策略显式允许,那肯定会被最后一条防火墙策略所拒绝。我们要注意两点,一是策略顺序,二是策略匹配。A 策略顺序防 火墙策略的排列顺序决定了优先级,排在前面的策略优先执行,根据这个原则,我们要好好设计一下防火墙策略的顺序。例如,我们写了两条防火墙策略,一条是允 许内网用户任意访问,另外一条是拒绝内网用户访问联众游戏网站。如果排列顺序如下图所示,允许
9、策略排在拒绝策略之前,那就是个错误的决定。拒绝访问联众的 策略永远不会被执行,因为当用户访问联众时,访问请求匹配第一条防火墙策略,用户就被防火墙放行了,第二条策略根本没有执行的机会。正确的做法是将拒绝策 略放到允许策略之前!B 策略匹配策略匹配是 ISA 管理员关注的核心问题。如果网络访问和防火墙策略匹配,则按防火墙策略执行允许或禁止的操作。那么,问题是,怎么才算和防火墙策略匹配呢?只有把这个问题搞清楚了,才能写出符合你设计初衷的策略。当 ISA 检测到访问请求时,ISA 会检查访问请求能否匹配防火墙策略中的策略元素,策略元素的检查顺序为 协议,从(源网络),计划时间,到(目标网络),用户,内容类型。如果和这些元素都能匹配,ISA就认为访问请求匹配防火墙策略。从被检查的策略元素来看, 到(目标网络)元素最容易出问题。写出一条拒绝内网访问百度的访问规则,