理解ISA 2004访问规则的处理过程(转载)
2009-09-03 17:01:13| 分类: ISA | 标签: |字号大中小 订阅
1.摘要
与ISA Server 2000简单的信任与不信任网络模型相比,ISA Server 2004使用了更为成熟灵活的网络模型。因此,ISA Server 2004定义网络和防火墙策略的方式完全不同,其处理访问规则的逻辑亦是如此。这可能会导致你的防火墙策略的配置结果与你的期望不同,我们将在这篇文章中探讨ISA Server 2004如何处理不同的规则列表以及某条特定规则是如何被选取以满足特定出站请求的。
2.总论
为了从功能角度描述在被定义的网络间何种通讯是被允许的,ISA Server 2004使用了一组三个规则列表的集合:
网络规则:此列表定义并描述了网络的拓扑结构。这些规则用于决定两个网络实体间是否具有路由关系、以及何种路由关系被定义(路由还是NAT)。当网络实体间没有配置任何关系,那么ISA Server将丢弃两个网络间的所有通讯数据。正确定义网络对象和它们之间的路由关系对于ISA 2004的显得尤为重要。
系统策略:此列表包含了30条ISA Server 2004预定义的、应用于本地主机的访问策略。因此,它们控制着ISA Server本身“从/到”的通讯,并启用需要的诸如验证、网络诊断、日志、远程管理等功能。记住:这些规则只是“允许”规则,你只可以启用或者禁用这些规则,或者对其中的一些规则属性进行少量的修改。
防火墙策略:此列表包含了你自定义的所有规则。这是一个经过排序的简单列表,包含了两种可能的规则类型:访问规则和发布规则。在此列表的最后包含了一条预定义的默认规则:Deny 4 ALL(Deny ALL users use ALL protocols from ALL networks to ALL networks),拒绝 所有用户发起的从所有网络到所有网络的所有协议的访问。这个默认规则不能修改或者删除,所以,对于任何允许或者阻止的通讯都由ISA Server 2004的一条明确的规则来完成。
注意:系统策略和防火墙策略的组合定义并描述了完整的防火墙策略系统。
对于所有的访问请求,ISA Server 2004如何应用上述三条规则列表可以用下图来表述:
注意:连接点1,2,3将在第六部分的另一个流程图中使用。
首先,ISA Server检查网络规则以确定两个网络实体间是否定义了路由关系,如果源网络和目的网络之间定义了路由关系,ISA Server将进一步处理客户的出站请求,否则拒绝。
然后,ISA Server按顺序检查系统策略规则和防火墙策略规则。如果某个系统或者防火墙策略规则允许了此请求,ISA Server将进一步处理出站请求,否则拒绝。
最后,ISA Serve再次检查网络规则以确定数据包的路由方式是路由还是NAT,如果是Web Proxy客户端请求对象,ISA Server也检查Web链路规则,以确定请求如何被处理。
很明显,网络规则处理的逻辑是简单明了的:要么定义了两者之间的路由关系要么没有。但是对于ISA Server如何确定有一个系统策略或者防火墙策略的规则允许或者禁止此通讯却并没有那么简单明了。到此为止,我们所知道的只有系统策略优先于防火墙策略进行处理以及ISA Server对系统策略和防火墙策略的处理方式是一致的
3.防火墙策略
ISA Server的主要工作是控制源网络和目标网络之间的通讯。以下是一个重要的概念和结论:源主机和目标主机必须位于不同的网络。换言之,你不能通过ISA Server去回环访问与你主机在同一个网段的资源(虽然这样可以实现,但是会给ISA Server带来很大的性能负担)。另一个重要概念是ISA Server是严格按照顺序评估防火墙策略。如果一条访问规则匹配某个请求的参数,此规则将被应用,然后ISA Server将不再将此请求与其它任何规则进行匹配。
同样,需要记住的是系统策略优先于防火墙策略进行处理,并且ISA Server对系统策略和防火墙策略的处理方式是一致的。换言之,一个完整的防火墙策略系统可以被认为一个单一排序的序号从1到30的系统策略规则加上从序号31开始的防火墙策略规则以及最后的默认规则LAST的列表。因此,如果一条系统策略规则和一条防火墙策略规则同时匹配某个客户发起的请求,那么总是会应用系统策略规则。
需要注意的是,访问规则是按照出站方向的主要连接端口来进行处理。因此,在创建访问规则时,不能使用入站方向的协议。
在进一步讨论规则评估前,有必要先总结一下几种ISA客户端类型的不同点。下表总结了三种ISA客户端 是如何发送请求以及是否支持身份认证:
ISA客户类型 | 如何发送请求 | 是否支持身份认证 |
Web代理客户 | 根据用户的输入使用FQDN或者IP地址 | Yes |
防火墙客户 | 总是使用IP地址 | Yes |
SNat客户 | 总是使用IP地址 | No |
备注:对于所有的非HTTP/HTTPS请求来说是正确的 ,对于HTTP/HTTPS请求,ISA Server总是检查HTTP头中的主机字段,而不是请求的目标主机地址(3层地址)。 对于Web代理客户,HTTP主机头的值依赖于用户的输入。
ISA 客户发送请求到ISA Server的方式将决定ISA是否必须执行正向/反向DNS解析以将客户的请求匹配到某个访问规则,因此,拥有一个稳定的DNS服务显得极为重要。
4.匹配标准
现在的问题在于客户的访问请求怎样才能够匹配访问规则中定义的策略元素?如果请求匹配访问规则的策略元素,ISA Server则运用此规则处理客户的访问请求。检查规则元素的顺序如下:
-
协议:访问规则中为出站方向定义的主要连接端口范围,可以为一个或者多个协议;
-
从(源网络):发起连接的一个或者更多的网络对象,可以包含网络、网络集、计算机、计算机集、地址范围或者子网;
-
计划时间:定义的任何计划时间;
-
到(目的网络):连接到的一个或者更多的目的网络,可以包含网络、网络集、计算机、计算机集、地址范围、子网、域名集或者URL集;
-
用户:一个或者更多的用户对象,可以包含所有用户、所有经过认证的用户、系统和网络服务和其他自定义的用户集;
-
内容类型:定义的任何内容类型;
上面的有些元素项可以很好的理解,例如协议、从(源网络)和计划时间,对于它们很容易区分匹配还是不匹配。但是,对于到(目的网络)、用户集和内容类型这三个条件,则不是那么容易理解的。例如,在一条访问规则要求认证而客户端发起的请求不能通过认证时,ISA会对这个请求采取什么方法呢?在一条允许指定的URL或者内容类型并且包含HTTP或非HTTP协议的访问规则中,ISA将会怎么处理呢?让我们再对它们的细节做进一步的描述。
4.1. 到(目的网络)
如果你检查策略元素,你可以发现对于到(目的网络),会有三个候选值:IP地址、完全限定域名(FQDN)或者URL地址。让我们先分析使用IP地址或者FQDN时的情况,再分析使用URL时的情况。
域名集和计算机集
为了进行分析,我们将限制只能对目的地址www.cevi.be和www.pouseele.be进行访问,并且做好了以下DNS解析:
目的集
正向DNS
反向DNS
www.cevi.be
193.75.143.142
www.cevi.be
cesar.cevi.bewww.pouseele.be
194.150.224.42
comsec17.win2k.combell.com
在ISA中已经做好了以下的防火墙策略:
序号
协议
从
计划时间
到
用户集
内容类型
动作
1
FTP
HTTP内部
Always
FQDNs
所有用户
全部
允许
2
FTP
HTTP内部
Always
IPs
所有用户
全部
允许
Last
All
All
Always
All
所有用户
全部
拒绝
注意: 域名集是www.cevi.be和www.pouseele.be;IP地址是193.75.143.142和194.150.224.42。我们使用CMD下的Ftp命令(非封装的FTP)和IE浏览器来分别进行FTP和HTTP访问。
不管内部网络中的客户配置为防火墙客户还是SNat客户,对于它们发起的FTP访问,结果如下:
-
到达目的集www.cevi.be的FTP访问将被规则1允许
当ISA按照顺序进行规则评估时,ISA发现内部客户的请求匹配规则1的协议、从(源网络)和计划时间这三个元素。为了检查是否匹配到(目的网络),ISA会对客户请求连接到的IP地址193.75.143.142进行反向DNS解析。这个IP地址反向解析为域名www.cevi.be,匹配这条规则的到(目的网络),然后ISA Server检查用户集和内容类型,这也都是匹配的。所以客户的请求完全匹配第1条访问规则,然后ISA根据规则1定义的动作,允许客户的连接。 -
到达目的集www.pouseele.be的FTP访问将被规则2允许
当ISA按照顺序进行规则评估时,ISA发现内部客户的请求匹配规则1的协议、从(源网络)和计划时间这三个元素。为了检查是否匹配到(目的网络),ISA会对客户端连接到的IP地址194.150.224.42执行反向DNS解析。这个IP地址反向解析为域名comsec17.win2k.combell.com,和规则1中的到(目的网络)中的FQDN不匹配,所以ISA停止对规则1的匹配,然后开始对下一条规则的评估。
现在ISA对规则2进行匹配检查,首先,ISA发现客户的请求匹配规则2的协议、从(源网络)和计划时间这三个元素,同时,也匹配剩下的到(目的网络)、用户集和内容类型,所以,ISA执行规则2定义的动作,允许客户的连接。
HTTP访问和上面的FTP访问是有很大区别的,ISA会试图匹配HTTP主机头而不仅仅是第三层的目的地址。HTTP主机头是用户在浏览器的地址栏输入的值,无论内部客户是作为Web代理客户、防火墙客户还是SNat客户,对于它们的HTTP访问,结果如下:
-
对于http://www.cevi.be和http://www.pouseele.be的访问,会通过规则1允许;因为HTTP主机头和规则1中的FQDN完全匹配。
-
对于http://193.75.143.142的访问将被规则1允许;同样通过反向DNS解析后,目的地址匹配规则1中的到(目的网络)。
-
对于http://194.150.224.42的访问将被规则2允许;原理同FTP的访问。
通过上面的分析,我们可以看出,DNS服务对于ISA Server是至关重要的,所以,如果你需要使用FQDN来建立防火墙策略,请确保DNS能够正确的进行 前向和反向的解析。
作为一个练习,我们建立一个简单的防火墙策略,拒绝到www.cevi.be和www.pouseele.be的访问,然后允许到其他站点的访问。你可以使用两种方法来实现:
-
首先建立一个拒绝www.cevi.be和www.pouseele.be的规则(规则1),然后允许所有其他站点(规则2)。问题在于规则1中的到(目的网络)应该包含什么内容?答案是FQDN和主机的IP地址。否则到达www.pouseele.be的访问将不会被规则1阻止。
-
其次,你可以建立一个允许的访问规则,允许除www.cevi.be和www.pouseele.be的所有其他站点(规则1)。请记住,在防火墙策略的最后,有条拒绝所有的访问规则。同样的问题在于,在规则的到(目的网络)中应该包含什么?答案同样是FQDN和主机的IP地址。否则到达www.pouseele.be的访问可能会被规则1允许
-
URL集
当我们在策略元素的到(目的网络)中指定URL集,然后访问规则的协议中包含非Web协议(非HTTP、HTTPS和封装的FTP的协议),ISA会怎么样处理呢?当ISA处理到(目的网络)包含有URL集的规则时,规则到(目的网络)中的URL集只对Web协议(HTTP、HTTPS和封装的FTP)有效,但是,对于HTTPS传输,URL集只有在没有指定路径时才进行匹配 。如果客户使用其他协议进行访问,那么ISA Server会忽略规则中的URL集元素。
为了进行验证,我们修改防火墙策略,修改后的防火墙策略如下表所示:
序号
协议
从
计划时间
到
用户集
内容类型
动作
1
FTP
HTTP内部
Always
URLs
所有用户
全部
允许
2
FTP
HTTP内部
Always
IPs
所有用户
全部
允许
Last
All
All
Always
All
All Users
All
Deny
当我们使用FTP(非封装的FTP)访问www.cevi.be和www.pouseele.be时,你可以看到客户是被规则2允许的,这意味这ISA不能匹配规则1。 从另一方面来说,当ISA为非Web协议的访问忽略了访问规则中的URL集而在访问规则的到(目的网络)中没有指定其他值时,那么ISA将不能匹配这条规则,这条规则就永远不会执行,而不管它是允许还是拒绝。如果我们在规则1的目的网络中添加FQDN后再进行策略,你可以发现到达www.cevi.be的FTP访问将被规则1允许,而到达www.pouseele.be的Ftp访问将被规则2允许。
4.2.用户集
当你建立防火墙策略时,你可以将它们应用到指定的客户IP地址或者用户集。当你指定用户集时,此用户必须进行验证,出示它的验证信息,然后ISA对规则进行匹配。用户集可以包含任何认证方式的一个或者多个用户,例如,一个用户集可以包含Windows用户、RADIUS用户和SecurID用户。ISA Server预定义了以下用户集:
-
所有经过认证的用户:表示为所有通过验证的用户,注意SNat客户端将不会进行认证,除非它们是VPN客户 (VPN客户用于登陆VPN所用的VPN用户可用于身份认证);
-
所有用户:表示为所有用户,不管是否通过了身份验证。
-
系统和网络服务:表示为ISA计算机上的本地系统和网络服务账户,被ISA Server用于部分系统策略。
客户端如何进行认证取决于客户端的类型:
-
防火墙客户:在会话建立后,ISA Server要求客户进行身份验证,所以当防火墙客户后来再进行访问时,ISA不会再询问客户端的身份验证信息,因为会话已经被验证过了。记住在防火墙客户端软件和ISA Server进行连接时就已经验证了用户。
-
Web代理客户:在允许Web代理客户访问后,你可以配置Web代理客户的身份验证。如果你在Web代理侦听器的属性中选择了要求所有用户进行认证,ISA Server将总是在检查防火墙策略之前要求用户提供身份验证信息;否则ISA Server只会在访问规则要求时才要求客户进行身份验证。
此外,你应该知道关于用户身份验证的两个注意事项:
-
如果规则是应用到所有用户,那么ISA Server将不会要求用户进行身份验证。但是,防火墙客户总是会发送自己的身份验证信息给ISA Server,你可以在ISA管理控制台的会话标签中看到用户名后面有个“?”,这表明用户提供了身份验证信息,但是ISA Server并没有进行验证。
-
如果你配置访问规则要求客户进行身份验证,而客户由于某种原因不能提交身份验证信息,那么客户的请求将被拒绝,就算规则是允许的。同样的原理,在要求身份验证的规则配置,ISA Server会拒绝非VPN客户的SNat客户。这是允许规则却拒绝连接请求的第一种情况。
我们同样通过配置防火墙策略来进行验证,建立的防火墙策略如下表所示:
序号
协议
从
计划时间
到
用户集
内容类型
动作
1
FTP
HTTP内部
Always
外部
Tom
All
允许
2
FTP
HTTP内部
Always
外部
所有经过认证的用户
All
允许
Last
All
All
Always
All
All Users
All
Deny
对于Web代理客户和防火墙客户的访问请求,结果如下:
-
通过规则1,用户Tom允许使用HTTP和FTP访问任何站点;
-
通过规则2,其他经过认证的用户可以使用HTTP和FTP访问任何站点;
在ISA Server进行策略的评估时,虽然其他用户也提交了身份验证信息,但是不匹配规则1的用户集,所以ISA Server会跳过规则1检查下一条规则,然后发现完全匹配规则2,就按照规则2中定义的动作来允许客户的访问。
对于非VPN客户的SNat客户,结果如下所示:
-
在规则1就拒绝了匿名用户的HTTP和FTP访问;
当ISA Server对规则1进行评估时,会发现客户发起的连接请求匹配规则1的协议、从(源网络)、计划、到(目的网络)元素,所以会要求客户提交身份信息进行验证,但是SNat客户不能提交身份验证信息,当ISA Server不能进行验证时,ISA会立即丢弃客户发起的请求,也不会再进行下一条规则的评估。
最后,希望你能记住本节中非常重要的内容:当客户不能提交身份验证信息时,ISA Server会在第一条要求它提交身份验证信息的规则(匹配规则的协议、从(源网络)、计划、到(目的网络)元素)时拒绝它的请求
-
-
4.3.内容类型
当你建立访问规则时,你可以限制访问规则应用到的内容类型。内容类型通过配置MIME和文件扩展名来指定,它只能应用到HTTP和封装的FTP协议,对于其他的协议,包含HTTPS,ISA Server会总是忽略规则中的内容类型元素。
为了进行验证,我们建立以下的防火墙策略:
序号
协议
从
计划
到
用户集
内容类型
动作
1
FTP
HTTP内部
Always
外部
所有用户
HTML
允许
2
FTP
HTTP内部
Always
外部
所有用户
所有
允许
Last
All
All
Always
All
All Users
所有
Deny
注意:我们使用预定义的内容类型组HTML,同样,我们使用CMD下的FTP(非封装的FTP)和IE浏览器访问来进行测试。
当我们使用HTTP来访问一个Web站点,你可以看到HTML对象文件是通过规则1允许,而其他对象文件是通过规则2允许的。ISA Server在规则1中没有找到非HTML对象文件的匹配,所以跳过规则1而检查下面的规则,发现规则2匹配,然后执行规则2定义的动作。
对于FTP访问,ISA忽略规则1中定义的内容类型,但是由于规则1的内容类型不是定义的所有类型,所以ISA无法匹配规则1,将跳过规则1而对下面的规则进行评估。规则2中允许所有类型,匹配客户的FTP访问,所以ISA会按照规则2定义的动作来允许客户的访问。这表明,当规则的内容类型不是所有类型时,对于非HTTP和封装的FTP的协议,这条规则将永远不会匹配执行,而不管这条规则是允许还是拒绝。
5.过滤标准
除了在前一部分中我们讨论的匹配标准外,某条允许的规则还可以绑定一些过滤标准。注意只能为允许规则指定过滤标准,不能为拒绝规则指定。ISA Server支持HTTP、FTP和RPC协议的过滤标准,不过一条允许规则可以使用它们中的一个或多个协议,所以你也可以在一条规则中指定不同的过滤标准。你可以通过右键点击的规则来访问过滤标准,如下图所示:
配置HTTP:这个选项允许你配置HTTP安全过滤以通过ISA Server高级的应用层状态过滤发挥ISA Server对HTTP连接访问控制的能力。
配置FTP:这个选项允许你开启或者关闭FTP上传的功能。
配置RPC协议:这个选项允许你开启或者关闭强制严格符合RPC,这个功能要求Outlook MAPI客户使用加密的通道进行连接。
讨论过滤标准这些内容不在本文的讨论范围的之内,我们的本意是描述它们与访问策略处理时的交互。一个非常重要的概念是过滤标准的配置是基于某个协议的,只有在客户的连接请求与某个允许规则完全匹配的情况下才检查这些过滤标准。因此,如果ISA Server认为客户的某个连接请求匹配过滤标准,则客户的连接请求会被这个允许规则所禁止,因为ISA Server不会再将这个请求与其它规则进行匹配。这是允许规则却拒绝连接请求的第二种情况。
为了确认这种行为,我们来创建下列简单的防火墙策略:
序号
协议
从
计划
到
用户集
内容类型
动作
1
FTP
HTTP内部
Always
外部
所有用户
所有
允许
2
FTP
HTTP内部
Always
外部
所有用户
所有
允许
Last
All
All
Always
All
All Users
All
Deny
然后,我们只为规则1配置如下HTTP过滤标准:
最后,确认你通过在内置的日志查看器中的显示列中添加“过滤信息”字段启用了HTTP安全过滤日志,这个字段包含了Web过滤器记录的信息。比如,当HTTP安全过滤器拒绝了某个请求,拒绝的原因将被记录。
现在在浏览器里面打开http://www.isacn.org,你将发现后缀名为gif,jpg,png的图片都被禁止显示了。为了确认,检查ISA的日志,你会发现大量规则1允许的请求,但也有大量被规则1阻拦的请求。如果你进一步查看日志,你会发现拒绝请求的列过滤信息中有如下内容:Blocked by the HTTP Security filter: URL contains an extension which is disallowed。因此,那些请求的确是被允许规则1所阻拦的。
-
6.回顾
最后,做为提示,ISA Server用于评估防火墙策略的方法学可以总结如下面的流程图:
注意:连接点1,2,3同第二部分中的流程图含义相同。
到现在为止,请你注意以下事实:在确保你的防火墙策略按你所期望的方式工作时,如何排列你的访问规则极其重要。作为最佳实践,建议以下列顺序排列防火墙策略:
-
将Web和服务器发布规则放在列表的顶部 ;
-
然后,按照下面的顺序放置匿名访问规则:先拒绝,再允许;这些规则不需要验证。
-
最后,按照下面的顺序放置需要验证的访问规则:先拒绝,再允许 ;这些规则需要验证。
关于防火墙规则的部署,强烈建议你看看“部署防火墙策略的十六条守则”一文。
最后要注意,请将更为具体的规则放置在大众化的规则之前,另外,最好不要在两条规则中使用完全相同的策略元素。
7.总结
在这篇文章中,我们论述了ISA Server 2004如何使用三个规则列表:网络规则,系统策略和防火墙策略来决定通讯应该被允许还是拒绝。你应该谨记ISA Server依赖于正确稳定的DNS服务来正确评估防火墙策略;同时,注意规则的排序是非常重要的,有两种情况下一条允许的策略可能会拒绝客户的请求。
-