注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 《网络规划设计师教程》..
 帮助

深入剖析防火墙策略的执行过程:ISA2006系列之六


2008-07-02 00:03:49
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yuelei.blog.51cto.com/202879/84995
正确理解防火墙策略的执行过程
 
很多初次接触ISA的管理员,经常会发现自己的管理意图没有得到贯彻。自己明明禁止用户使用QQ聊天,可你看这个老兄正在和多个MM聊得热火朝天;早就禁止在上班时间访问游戏网站,可这个家伙不正在和别人下棋吗?最郁闷的是就连简单的禁止访问百度搜索引擎都做不到,照样有很多人用百度搜来搜去……不少深感智力受到侮辱的网管愤怒地发出了“ISA就是不灵”的吼声。ISA真是不灵吗?不是的,其实发生这些的主要原因是ISA管理员并没有真正理解防火墙策略的执行过程。今天我们就来好好地分析一下ISA防火墙策略的执行过程,避免在以后的工作中犯类似的错误。
首先声明,我们今天讨论的是ISA2006标准版的策略执行过程,企业版比标准版要复杂一些,以后我们再讨论。我们可以把ISA当作是信息高速公路上的一个检查站,当有数据包要通过ISA时,ISA就会利用策略对数据包进行检查,检查通过就放行,否则就拒绝。ISA检查数据包的顺序是:
检查是否符合网络规则
检查是否符合系统策略
检查是否符合防火墙策略
 
网络规则
一个数据包通过ISA时,ISA首先要检查的就是网络规则。网络规则是ISA中非常重要而又很容易被忽视的一个因素。ISA检查数据包时首先要考虑的就是这个数据包是从哪个网络到哪个网络,这两个网络间的网络规则是什么。也就是说ISA是基于网络进行控制,而不是很多朋友认为的基于主机进行控制。网络规则只有两种,路由或NAT。如果A网络到B网络的网络规则为路由,那么数据包从A网络到B网络或者从B网络到A网络都有可能;如果A网络到B网络的网络规则为NAT,那么数据包只有可能从AB,而不可能从BA。我们可以把两个网络比喻为两个城市,网络规则就象是城市之间的高速公路,如果两个网络之间的网络规则为路由,那就象是两个城市之间有一条双向高速公路;如果网络规则为NAT,则就相当于两个城市之间有一条单行高速公路。
明白了网络规则的作用,有些问题就很好解释了。有些ISA管理员问过这样一个问题:“我在ISA的防火墙策略中已经允许外网访问内网,为什么外网机器还是访问不进来?”现在来看这个问题就很简单了,因为ISA认为内网和外网之间的网络规则是NAT,如下图所示,NAT规则决定了只有可能从内网到外网而不可能从外网到内网,因此当外网访问内网时,ISA只需检查网络规则就。因此如果你确实需要外网访问内网,你就应该先把内网和外网之间的网络规则改为路由。
 
还有一个网络规则的例子,有一个管理员用ISADMZ区的一个FTP服务器发布到了外网和内网,结果外网用户访问正常,内网用户却无法访问。为什么,因为DMZ和外网是NAT关系,而DMZ和内网是路由关系。由于从DMZ到外网是NAT关系,外网用户无法通过访问规则直接访问,所以通过发布规则访问是合理的;而内网和DMZ是路由关系,因此内网用户就应该通过访问规则而不是发布规则来访问。
综上所述,网络规则是ISA进行访问控制时所要考虑的第一要务,只有从源网络到目标网络被网络规则许可了,ISA才会继续检查系统策略和防火墙策略;如果访问规则不许可,ISA会直接拒绝访问,根本不会再向下检查系统策略和防火墙策略。大家写访问规则时一定要注意这点。
系统策略
如果一个数据包通过了网络规则的检查,ISA接下来就要看看它是否符合系统策略了。ISA2006标准版中预设了30条系统策略,系统策略应用于ISA本地主机,控制着从其他网络到本地主机或者从本地主机到其他网络的通讯,系统策略中启用了一些诸如远程管理,日志,网络诊断等功能。一般情况下,我们对系统策略只能允许或禁止,或对少数策略的某些属性作一些修改。
以前曾经有朋友问我,为什么ISA安装后防火墙策略中明明禁止了所有通讯,但ISA主机还是可以ping到其他计算机,是否ISA本机有某些特权呢?不是的,ISA能对其他网络进行有限访问完全是由系统策略决定的,只是由于系统策略没有显示出来,因此安装完ISA后我们并没有注意到它。
我们来看看系统策略到底有哪些内容,打开ISA服务器管理,右键点击防火墙策略,如下图所示,在查看中选择“显示系统策略规则”。

 
如下图所示,我们看到了30条系统策略的内容。
 
编辑系统策略也可以用系统策略编辑器,系统策略编辑器为管理员提供了更为友好的管理界面,如下图所示,右键点击“防火墙策略”,选择“编辑系统策略”。
 
如下图所示,我们可以在系统策略编辑器中编辑系统策略。
 
系统策略的优先级比防火墙策略高,因此如果任务可以用系统策略完成,就不要用防火墙策略。例如有时候我们为了测试需要,允许从内网ping ISA服务器,这种需求完全可以用系统策略完成,如下图所示,我们只要把内部网络添加到允许ping本地主机的集合中,就可以完成任务了。
 
防火墙策略
防火墙策略用来控制源网络和目标网络的通讯,是ISA管理员控制网络访问的常规武器,也是本文讨论的重点所在。防火墙策略的优先级就是按照规则排列的顺序,而不是按照拒绝优先原则。由于系统策略优先级也是按照序号排列,和防火墙策略优先级完全一样,我们甚至可以把防火墙策略看成是从31开始编号的系统策略。
数据包通过网络规则的检查后,就要面临系统策略和防火墙策略的考验了。ISA将从第一条策略开始检查,检查数据包的访问请求是否匹配策略,如果匹配,就按照策略的规定执行,结果无非是禁止或允许。如果不匹配,ISA就将按顺序检查下一条策略,从第一条系统策略一直检查到最后一条防火墙策略。那有人要问了,如果把所有策略都检查完了还不匹配怎么办?呵呵,这是不可能的,ISA自带的最后一条防火墙策略内容是禁止所有网络间的一切通讯,如下图所示,这条防火墙策略可以与所有的网络访问相匹配,因此ISA实际上使用了隐式拒绝,也就是说如果某个访问请求如果没有被策略显式允许,那肯定会被最后一条防火墙策略所拒绝。
 
看了上面的介绍,我们要注意两点,一是策略顺序,二是策略匹配。
 
A 策略顺序
防火墙策略的排列顺序决定了优先级,排在前面的策略优先执行,根据这个原则,我们要好好设计一下防火墙策略的顺序。例如,我们写了两条防火墙策略,一条是允许内网用户任意访问,另外一条是拒绝内网用户访问联众游戏网站。如果排列顺序如下图所示,允许策略排在拒绝策略之前,那就是个错误的决定。拒绝访问联众的策略永远不会被执行,因为当用户访问联众时,访问请求匹配第一条防火墙策略,用户就被防火墙放行了,第二条策略根本没有执行的机会。正确的做法是将拒绝策略放到允许策略之前!
 
B 策略匹配
策略匹配是ISA管理员关注的核心问题。前面我们一直在提如果网络访问和防火墙策略匹配,则按防火墙策略执行允许或禁止的操作。那么,问题是,怎么才算和防火墙策略匹配呢?
只有把这个问题搞清楚了,才能写出符合你设计初衷的策略。
ISA检测到访问请求时,ISA会检查访问请求能否匹配防火墙策略中的策略元素,策略元素的检查顺序为 协议,从(源网络),计划时间,到(目标网络),用户,内容类型。如果和这些元素都能匹配,ISA就认为访问请求匹配防火墙策略。
从被检查的策略元素来看, 到(目标网络)元素最容易出问题。
目标网络元素的问题容易出在哪儿呢?容易出现在DNS上,确切地说是出现在DNS的反向解析上!这个结论估计是很多管理员始料未及的,还是举个例子加以说明吧,假设我们要禁止内网访问百度,我见过很多管理员的处理方法都是这样的,首先创建一个域名集,将[url]www.baidu.com[/url]包含进去,如下图所示。
 
然后就写出一条拒绝内网访问百度的访问规则,如下图所示
 
我们在一台内网计算机Denver上测试一下,Denver使用Web代理访问百度,如下图所示,错误信息表明ISA拒绝了Denver访问百度的请求。这说明访问请求和拒绝百度访问的防火墙策略匹配成功,哈哈,看样子大功告成了?且慢,再向下看。
 
我们在Denver上换用IP访问,在IE中输入202.108.22.5,如下图所示,熟悉的百度界面已经出来了,哈哈,貌似严谨的访问规则竟如此不堪一击!这说明这次的访问请求没有和拒绝百度访问的防火墙策略匹配成功,而是和第二条允许内网用户任意访问的防火墙策略匹配成功了。
 
看到这儿,有些朋友可能得出结论了,哦,原来用域名禁止访问某个网站是不成立的。错!如果202.108.22.5的反向解析结果为[url]www.baidu.com[/url],那么拒绝百度的防火墙策略就是成立的!
还是来认真分析一下原理吧,当客户机用HTTP协议访问目标网络时,ISA判断目标网络的根据是HTTP主机头,主机头的内容显然源自我们在浏览器中的输入。当我们在浏览器中输入[url]www.baidu.com[/url]时,ISA开始检查访问请求能否匹配第一条防火墙策略,也就是拒绝内网访问百度的那条策略。ISA先检查协议,从(源网络),计划时间三个元素,这三个元素都能和访问请求匹配,然后ISA检查到(目标网络)元素,ISA根据主机头内容判断访问请求中的目标网络是[url]www.baidu.com[/url],而防火墙策略中的目标网络元素也包含了[url]www.baidu.com[/url],因此ISA判断访问请求和到(目标网络)元素也能匹配上。然后ISA检查用户和内容类型两个元素也可以匹配,所以ISA判断访问请求和拒绝访问百度的防火墙策略完全匹配,于是按照防火墙策略的要求拒绝了这次访问请求。
当我们在浏览器中输入202.108.22.5时,ISA是这么检查的。首先还是判断 协议,从(源网络),计划时间三个元素匹配策略,然后检查到(目标网络)元素,ISA判断访问请求的目标是202.108.22.5,而防火墙策略的目标网络是包含[url]www.baidu.com[/url]的域名集,这时ISA会对202.108.22.5进行DNS反向解析,如果解析的结果等于[url]www.baidu.com[/url]。,ISA就认为访问请求的目标网络和策略的目标网络也是匹配的。如果反向解析的结果不等于[url]www.baidu.com[/url](解析的结果确实不是百度的域名),ISA就认为访问请求的目标网络和防火墙策略的目标网络不匹配。这样ISA就会停止匹配第一条拒绝访问百度的防火墙策略,转而匹配第二条允许内网任意访问的防火墙策略,匹配结果是完全成功,因此ISA执行第二条防火墙策略规定的动作,允许了对202.108.22.5的访问。
如果客户机不是用HTTP协议访问目标网络,那么匹配的过程又稍微有些不同。例如客户机用FTP协议访问[url]www.baidu.com[/url],那么客户机在发送访问请求时不会把[url]www.baidu.com[/url]作为目标网络,而是先对[url]www.baidu.com[/url]进行域名解析,然后把解析出来的IP作为目标网络发送给ISAISA对访问请求进行匹配时,如果被匹配的防火墙策略用域名描述目标网络,ISA就会对访问请求发来的IP进行反向解析,看解析出的域名能否和防火墙策略的目标网络相匹配。根据这个结论,我们用IE访问[url]www.baidu.com[/url]会被拒绝,因为刚才分析过了,此时客户机将域名[url]www.baidu.com[/url]作为访问请求中的目标网络发送给ISAISA认为访问请求和拒绝访问百度的防火墙策略完全匹配,因此客户机被拒绝访问。但如果客户机在命令行下输入telnet [url]www.baidu.com[/url] 80,如下图所示,直接连接百度的80端口,ISA会如何处理呢?
 
如下图所示,ISA对访问请求放行了,显然这次的访问请求没有和拒绝访问百度的策略匹配上,原因是什么呢?
 
客户机telnet百度80端口时,我在ISA上启用了实时日志,日志记录的结果如下图所示。从日志上我们很清楚地看到,客户机先对[url]www.baidu.com[/url]进行了DNS解析,解析结果为202.108.22.5,然后客户机把202.108.22.5作为访问请求的目标网络发送给ISAISA202.108.22.5进行反向解析,解析出的域名并不是[url]www.baidu.com[/url],因此ISA认为访问请求和第一条防火墙策略并不匹配。然后ISA将访问请求和第二条策略进行匹配,匹配成功后正从我们在日志中看到的那样,访问请求被第二条允许内网用户任意访问的策略放行了。
 
我们可以总结一下,客户机使用HTTP协议访问时,目标网络取决于主机头,而访问者输入的主机头既可能是域名也有可能是IP(一般以域名居多);。客户机使用其他协议访问时,目标网络一定是以IP进行描述!
现在我们考虑一下应该如果用ISA禁止用户访问某个目标网络,那这个目标网络应该如何描述,显然只用域名描述是不严谨的,除非你确信DNS反向解析的结果对你有利(大部分情况下你会失望的)。如果保险一些,我们应该用域名+IP来描述目标网络。以刚才的限制百度为例,用nslookkup查出[url]www.baidu.com[/url]的域名解析结果为202.108.22.43202.108.22.5。创建一个计算机集将这两个地址包含进去,如下图所示。
 
然后就可以在拒绝访问百度的策略中加入刚创建的计算机集,如下图所示,这样做效果如何大家可以自己试试看,肯定比只用域名要好得多。
 
 

本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/84995



类别:ISA 技术圈()阅读() ┆ 评论()推送到技术圈返回首页  


    文章评论
 
2008-07-02 21:11:02
使用域名和IP结合的方法来禁止访问网站很不错.看了大有收获!

2008-07-02 21:38:25
呵呵,欢迎多来做客!

2008-07-02 22:53:39
而内网和NAT是路由关系,应是内网和DMZ是路由关系,岳老师打错了。

2008-07-02 23:05:21
一般情况下,大部分公司的网站是可以通过禁用域名来访问的,但有反向区域记录或是多个A记录于一个网站域名的。就一定要采用这种方法了。不知是否这种理解也是正确的。

这些同样可以通过NSLOOKUP查询后得知一二。

2008-07-02 23:07:05
C:\Users\Administrator>nslookup
默认服务器: gjjline.bta.net.cn
Address: 202.106.0.20

> www.baidu.com
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

非权威应答:
名称:   www.a.shifen.com
Addresses: 202.108.22.5
      202.108.22.43
Aliases: www.baidu.com

> type=A
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

*** gjjline.bta.net.cn 找不到 type=A: Non-existent domain
> 202.108.22.5
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

名称:   xd-22-5-a8.bta.net.cn
Address: 202.108.22.5

> www.beidabiz.com
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

非权威应答:
名称:   www.beidabiz.com
Address: 211.103.155.170

> type=A
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

*** gjjline.bta.net.cn 找不到 type=A: Non-existent domain
> 211.103.155.170
服务器: gjjline.bta.net.cn
Address: 202.106.0.20

*** gjjline.bta.net.cn 找不到 211.103.155.170: Non-existent domain
> exit

C:\Users\Administrator>ping xd-22-5-a8.bta.net.cn

正在 Ping xd-22-5-a8.bta.net.cn [202.108.22.5] 具有 32 字节的数据:
来自 202.108.22.5 的回复: 字节=32 时间=20ms TTL=57
来自 202.108.22.5 的回复: 字节=32 时间=10ms TTL=57
来自 202.108.22.5 的回复: 字节=32 时间=9ms TTL=57
来自 202.108.22.5 的回复: 字节=32 时间=12ms TTL=57

202.108.22.5 的 Ping 统计信息:
  数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
  最短 = 9ms,最长 = 20ms,平均 = 12ms

C:\Users\Administrator>

2008-07-03 00:01:45
呵呵,打错的地方已更正,多谢老方细心纠错。
只要域名对应的IP能够反向解析为域名,我们就可以只使用域名进行访问控制,否则的话就应考虑使用域名+IP来控制。因为此时用户在浏览器中用IP进行访问,ISA会认为访问请求和拒绝策略不匹配。
有可能某些域名对应的IP无法反向解析为域名,而我们只用域名进行访问控制也成功了,但我觉得这不是ISA的功劳,而是目标网站做了虚拟主机,虚拟主机限制用户必须使用域名访问,因此才会出现用户使用IP访问无法成功。
欢迎继续讨论。

2008-07-03 00:54:16
的确如此,当我打完上面我说的话,提交后,发现说法有问题时,因是匿名竟然无法更改。

1、也有这样的一种情况,不知您如何看法,就是当一个IP绑定两个域名,或是有别名时。


2、另外,SNIFFER分析时,访问BAIDU,看到客户端DNS解析BAIDU时就用IP或是shifen.com。而BAIDU字眼就没有出现。此时,如果防火墙策略里有DNS流量外出的策略。也是会出现您所说的情况。不知此种说法妥否?

2008-07-03 12:55:08
回rickyfang,一个IP绑定了多个域名,要看这个IP反向解析的具体结果,如果和其中一个域名吻合,那我们就可以只用域名集限制访问这个站点。客户机访问百度,如果使用http协议,那么客户机把浏览器中主机头作为目标网络发送给ISA,如果使用其他协议,客户机把IP作为目标网络发送给ISA,因此你在客户机抓包和在ISA上抓包效果是不一样的。

2008-07-05 18:22:38
今天进来学到不少东西,我太高兴了,谢谢大家,我才接触ISA,以后请各们多多学习!!

2008-11-13 17:18:08
看到各位资深人士的讨论,获益匪浅。

岳老师的课比TECHNET上的网络广播还要精细,涉及的知识面很广,学到了之前从未了解过的。

2008-11-13 17:19:26
看到各位资深人士的讨论,获益匪浅。

岳老师的课比TECHNET上的网络广播还要精细,涉及的知识面很广,学到了之前从未了解过的。
短消息通知评论者

博主回复:
呵呵,多谢inkomi鼓励,说实话Technet讲师比我要厉害得多。
2008-11-14 13:21:24

2009-03-29 10:27:16
岳老师的文章写得真不错,看了之后长进不少。我有个问题,为什么内网和外网关系为NAT时,只允许内网访问外网,而不允许外网访问内网。我建一条访问规则,允许内网到外网的HTTP协议。这样内网就能访问外网的WEB服务器。在这个过程中,WEB服务器把我请求的网页发给我,这不是外网能访问内网了吗?
还有,WEB服务器把我请求的网页发到ISA的时候,ISA是不是也要检查有没有匹配的规则呢,或者说要不要建一条规则,允许外网到内网的HTTP协议呢

博主回复:
内网访问外网指的是内网的计算机向外网的服务器发出访问请求,判断依据是三次握手的发起者,就像您给别人打电话,您属于主叫方,虽然您也在电话里听到了别人说的话。NAT导致两个网络之间是单向访问也可以用打电话这个例子说明,您使用了公司的分机给别人打电话,您的分机号码会被转换成公司的总机,这样别人就没法知道到底是哪个分机给他打的电话。
2009-03-30 11:06:53

2009-03-30 11:47:37
哦,明白了,多谢岳老师

2009-03-30 19:41:25
岳老师,我做了实验,在外网搭建一台FTP服务器,FTP目录具有写入权限,NTFS权限是EVERYONE完全控制。然后在ISA上创建一条访问规则,允许内网到外网的FTP协议。这样内网就能访问外网的FTP服务器了,也能下载文档。但当我想上传文件的到时候,被拒绝,这是不是ISA阻止了,

博主回复:
是被ISA阻止了,右键点击你创建的访问规则,选择配置ftp,然后你会发现默认ftp协议只被允许从服务器读数据,改成允许写入就行了。
2009-03-31 11:18:30

2009-03-31 16:20:15
哦,知道了,谢谢

2009-07-03 14:44:58
岳老师:
引用您的一段:
有一个管理员用ISA把DMZ区的一个FTP服务器发布到了外网和内网,结果外网用户访问正常,内网用户却无法访问。为什么,因为DMZ和外网是NAT关系,而DMZ和内网是路由关系。由于从DMZ到外网是NAT关系,外网用户无法通过访问规则直接访问,所以通过发布规则访问是合理的;而内网和DMZ是路由关系,因此内网用户就应该通过访问规则而不是路由规则来访问。


问题1:
因为DMZ和外网是NAT关系,而DMZ和内网是路由关系
怎么看得出来它们是nat关系,还是路由关系?

问题2:
外网用户无法通过访问规则直接访问,所以通过发布规则访问是合理的;

它们之间是nat关系,所以就要通过发布规则访问??
这个发布规则和访问规则的区别是什么啊??


问题3:

而内网和DMZ是路由关系,因此内网用户就应该通过访问规则而不是路由规则来访问。

为什么这里又变成了访问规则和路由规则了呢?
这个路由规则是什么啊??是发布规则吗??

博主回复:
问题3中的路由规则是发布规则的笔误,其余的问题可以参考http://yuelei.blog.51cto.com/202879/101982一文中的介绍。
2009-07-03 19:48:56

2009-07-03 15:33:43
岳老师:

还有就是网络规则的问题。
您讲的前面五章都没有用到要新建网络规则的问题(路由和NAT)

一般都没有用到这个新建网络规则的问题?都是默认用ISA定义的好的3条规则. 对这个还是不理解。是不是建立一条规则之间,要首先想清楚这个网络规则问题,是从哪个网络访问到哪个网络,它们之间是路由的关系,还是NAT的关系呢??我之前学习您的1-5章从来没有知道有这一点,现在看了您写的这篇文章之后,才感到难,因为之前都不知道。之前总是以为只要按照isa规则向导做就可以了。这一章该怎么学好呢??我现在看第二遍了,昨天看了第一遍还不是很能理解??

2009-07-03 16:12:05
岳老师:
引用您的原话:
防火墙策略的优先级就是按照规则排列的顺序,而不是按照拒绝优先原则。


防火墙策略的优先级是不是就是指在创建防火墙策略时候,它自动的顺序排序??例如: 1,2,3 这样。那么先执行1,然后2,最后3

2009-07-03 16:28:18
岳老师:
  这个域名集和url 区别在哪里呢??
例如: www.baidu.com 。 baidu.com 应该被称为域名吧。

为什么不用url 呢???

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: