ISA Server 2004 (ISA防火墙)为企业网络基础服务提供了大量的安全性增强性能,其中特别突出的是ISA防火墙包含的应用程序过滤器。
RPC(远程过程调用)协议被许多微软网络应用程序所使用,是非常重要的;但是许多IT人员都没有理解RPC协议是如何工作的。他们不理解许多潜在的问题是通过RPC协议而产生的,并且,他们不知道如何保护 网络中的基础服务器。在通常情况下,网络和防火墙管理员只会认为RPC是不安全的,并且从来没有考虑过安全的配置RPC访问。
这篇文章中讨论了RPC协议和为什么ISA防火墙可以为需要RPC访问的服务器提供高安全性的访问。在这篇文章中,我们会使用一个基本的 网络拓朴结构来模拟部署RPC状态过滤,不过在任何更为复杂的网络拓朴结构中进行部署也是一样的。
介绍防火墙、过滤和识别,三层 vs 应用层防火墙
大部分组织只是依赖三层包过滤系统来保护他们的公司网络。三层过滤(有时被认为是状态包过滤识别)只是打开和关闭TCP或者UDP端口 。由于网络攻击技术和协议的不断进化,工作在网络层和传输层(OSI模型中的第三层和第四层)已经不再拥有高级别的安全,并且只依赖于状态识别包过滤不能给予足够的网络保护。我们需要将防火墙放置在OSI模型中的更高层-应用层。
在只部署有状态包过滤功能的防火墙的网络环境中,如果你想过滤RPC传输,你需要打开TCP端口135(RPC端口映射器,RPC客户通过此端口来搜寻远程RPC服务的TCP端口),并且,我们不知道RPC应用程序所使用的端口,所以你还需要打开从1024到65535的高端端口。
我们用下面的图来表示上面的配置:
通过上面的图,你可以看到一条防火墙规则开放了到受保护的网络中的RPC服务器的大量的端口,传统的防火墙和网络安全管理员或工程师将认为这样的配置是不安全的,并且不会接受。从另一方面来说,大部分微软的服务器向企业网络中的其他网段中的主机开放大量的服务,而传统的网络和防火墙管理员在内部网络间一般不会再部署防火墙。
这就是问题的现状,在20世纪中我们认为Internet是不可信任的网络而认为企业内部网络是可信任的;但是在21世纪,我们不能再这样进行区分。现在没有网络可以认为是可信任的。企业内部网络中的蠕虫、病毒或者其他恶意代码, 还有不管是有意还是无意的攻击者,这些都应该让你把企业网络当成Internet一样不可信任的网络来对待。
更智能的保护网络?使用应用层状态过滤识别
因为你不能信任任何网络,我们需要使用更先进的方法来保护我们的服务器和服务。通过ISA防火墙,我们可以更为智能的保护我们的服务器。为了达到这一目标,我们需要执行应用层过滤或者应用层状态识别。
应用层过滤或识别意味着对数据帧中的负载进行识别,并且确定数据的传输是否是通过了授权、有效的或者对企业网络是无害的。
当ISA防火墙执行应用层识别,需要进行扫描的数据量远大于只进行状态包过滤的防火墙。ISA防火墙实际上是作为协议来识别数据流,并且验证协议的头部和数据。
例如,SMTP应用层过滤器可以丢弃所有包含RSET命令的或者数据包大于X个字符的帧,SMTP过滤器实际上扫描、限制和验证帧的应用层信息。
当ISA防火墙对RPC协议执行应用层状态过滤时,它分析数据帧的UUID(通用唯一标识符)部分,这是运行在服务器上的RPC服务的标识符。Microsoft Exchange服务器是一个极好的例子,因为Exchange服务中包含了多个RPC服务侦听器。
下图是一个RPC客户端应用程序连接RPC服务器时发生的会话的例子:
- 在上图中,左边黄色标识的计算机需要和RPC服务器上的黄色标识的应用程序建立RPC连接,黄色RPC客户端先通过RPC服务器的TCP 135端口来联系RPC服务器,并且说:“hey,UUID E1AF8308-5D1F-11C9-91A4-08002B14A0FA的高端端口是多少?”ISA防火墙的RPC应用层状态过滤器允许它进行访问,因为有条防火墙规则允许这个UUID的RPC通信;
- 黄色RPC服务器回复动态分配的TCP端口(例如2345)给请求的UUID(黄色的应用程序);黄色的应用程序回复此端口给RPC客户端;ISA防火墙的RPC过滤器允许黄色的应用程序 回复客户端。
- 客户端使用TCP 2345连接远程的RPC服务器,然后ISA防火墙允许此连接(用黄色隧道线路表示)。
通过识别实际的协议而不是简单的开放端口,ISA防火墙检测到这些RPC通信是授权的和有效的,因为它理解UUIDs和通过ISA防火墙的RPC通讯。
上图中蓝色计算机使用同样的访问步骤来连接RPC服务器上的蓝色应用程序,唯一的区别是在于UUID不同,訰PC服务侦听的端口也不同,为5678。
当然,如果一个计算机试图连接RPC服务器上的一个没有被ISA防火墙规则允许的RPC UUID,连接将被拒绝,ISA防火墙丢弃客户发起的数据帧。
通过上面的图像说明,我们可以丢弃所有无效的和非授权的RPC连接,我们可以保护内部服务器不受到Internet或者其他外部网络甚至内部网络中的攻击者的骚扰。
介绍ISA防火墙的RPC应用层过滤器
现在我们来看看RPC协议是如何工作的例子,现在我们先深入介绍一下ISA防火墙的结构和网络组件。
下图是从网络监视器中捕获的数据帧,所有的RPC连接以包含请求的RPC服务的UUID的数据帧开头,ISA防火墙识别帧的种类,然后验证和对它们进行授权。
下图也是在发布安全RPC服务器发布规则时ISA防火墙授权的所有UUIDs的屏幕截图,如果RPC连接请求的UUID不在这个列表中,ISA防火墙将拒绝客户端的连接。
现在我们知道了ISA防火墙RPC过滤的基本原理(其实不仅仅是UUID识别),我们将使用一个基本的网络环境并进行安全发布RPC服务。
就算微软提供了一些支持的RPC服务的UUIDs的清单,例如Microsoft Exchange服务器所使用的UUID,有时我们也需要建立自己所使用的RPC协议定义。例如,你可能需要建立一个自定义的RPC协议定义来允许位于不是你所信任的网络中的两个域控制器通过ISA防火墙来进行复制。
在我们的示范中,我们新建一个自定义的RPC协议,此RPC协议是允许ISA MMC远程管理ISA防火墙,并且允许管理计算机访问ISA防火墙的此协议。
挑战:发现ISA防火墙MMC使用的RPC UUIDs
我们看到允许对TCP 135端口和高端端口的的未检查的访问对于网络安全来说不是一个好的办法,所以我们将看到如何通过ISA防火墙的RPC应用层识别来更方便的实现。
但是为了建立这条规则,我们需要识别ISA防火墙MMC使用的UUID。
我建立了一个测试实验室,下图是我使用的实验室:
- 安装了ISA MMC的工作站;
- 一台ISA 2004防火墙;
在建立我们的智能的RPC防火墙规则前,我们得先知道需要允许哪种类型的RPC通信。不幸的没有关于所有RPC服务的UUID的官方数据库,所以最好的办法是使用网络监视器来分析。
为了分析数据流,我先建立了一个防火墙规则允许在管理计算机和ISA防火墙的本地主机网络间进行所有协议的通信。
然后通过ISA MMC来连接ISA防火墙时运行微软网络监视器捕获数据,下图是我捕获的数据:
在上图中,你可以看到管理计算机发起的RPC通信,你可以看到UUID:
这就是ISA MMC所使用的UUID,我已经检查了所有的数据帧,只有这一个UUID存在。
新建RPC协议定义
我们需要发布的UUID(在你的环境中可能不只一个),我们需要建立防火墙规则来实现。
首先,我们需要建立我们的RPC协议,用于发布规则。
点击新建,然后选择RPC协议;
这启动了新建RPC协议向导,输入RPC协议的名字,点击下一步;

在下一步中你有两个选项:
选项1 - 选择接口:这个选项将列出(点击浏览按钮)ISA防火墙上运行的RPC应用程序,所以你可以勾选你想发布的服务。这个选项很不错,但是没有列出所有的RPC服务(我也不知道为什么)。由于大部分时候RPC服务不是在ISA防火墙上运行,所以这个选项是很少用的。

选项2 - 手动添加接口: 这个选项将提供一个接口,允许你手动输入你想发布的UUID:选项2 ->Add interfaces manually->点击下一步;
点击接口,再点击添加按钮;
当你点击添加按钮,在弹出的添加/编辑接口对话框中你就可以输入你的RPC协议的UUID了,输入你从网络监视器中获得的UUID,并且为它输入一个名字。
在大部分时候,保留Publish on a Dynamically Assigned Port按钮上的选择,只有在你强制RPC服务使用某个端口时才选择其他选项(只有很少的RPC服务才强制使用某个端口)。
为了保证你没有输错UUID(有点长),你可以将从网络监视器中捕获的数据复制到记事本中,再通过记事本来复制,再粘贴过来。
在这个试验中,我们只需要发布一个UUID,如果你需要发布多个UUID,你需要添加每个UUID。
完成后点击确定,最后在正在完成新建RPC协议向导页,点击完成。

使用自定义的RPC协议定义建立访问规则
现在我们已经建立了自定义的RPC协议定义,我们现在使用它在ISA防火墙中建立一个访问规则。
下图第五项访问规则是我们通过自定义的RPC协议定义所建立的访问规则,规则的各个元素如下图所示:
最后点击应用按钮保存修改和更新防火墙策略。
【转自世纪安全网 http://www.21safe.com】
|