通过ISA防火墙(2004)来允许域内通信

通过ISA防火墙(2004)来允许域内通信


译自Thomas W Shinder,“Allowing Intradomain Communications through the ISA Firewall (2004)”

新的ISA Server防火墙对于通过ISA Server的域内通信的支持进行了增强,通过网络访问规则,你可以很容易的允许连接到ISA防火墙的不同网络间的各种服务的访问。


例如,你可能想将一台为Internet服务的Exchange服务器或者进入的认证SMTP中继放置在DMZ段,但是为了让它们使用活动目录的用户数据库,你需要将它们加入到内部网络的活动目录中。此时,你就需要在ISA防火墙上进行配置,允许DMZ网段的服务器访问内部网络的域控制器上的某些服务。


注意,我们不是在ISA防火墙上“开放端口”。“开放端口”这个术语起源于简单包过滤的硬件防火墙。但是ISA防火墙知道协议,它可以对通过防火墙的所有通信执行状态过滤和应用层状态识别。我强烈建议你不要将你公司的重要资源放置在这种包过滤的硬件防火墙之后。

在这个例子中,我们使用以下的网络拓朴结构:




以下是域内通信需要的协议,以及我们即将建立的规则的细节:


  • Name:Member Server -> Internal DC
  • Action:Allow
  • Protocols:ADLogon/DirRep*


    Direct Host (TCP 445)**


    DNS


    Kerberos-Adm(UDP)


    Kerberos-Sec(TCP)


    Kerberos-Sec(UDP)


    LDAP (TCP)


    LDAP (UDP)


    LDAP GC (Global Catalog)


    RPC Endpoint Mapper (TCP 135)***


    NTP


    Ping

  • From:DMZ Member Server

    Internal Network DC

  • To:Internal Network DC

    DMZ Member Server

  • Users:All
  • Schedule:Always
  • Content Types:All content types


*ADLogon/DirRep:

主要连接:TCP 出站 50000 端口(需要在后端Exchange服务器上的RPC密钥集);

**Direct Host:

主要连接:TCP 出站 445 端口(需要在此文章中进行讨论);

***RPC Endpoint Mapper

主要连接:TCP 出站 135 端口(需要在此文章中进行讨论);

RPC服务通过在注册表中使用类似于GUID(全局唯一标识符)的UUID(通用唯一标识符)来进行注册,RPC UUID是通用的,并且对于每个服务是唯一的。

当一个RPC服务启动,它将获取一个高位端口,并且使用RPC服务的UUID来注册此端口。一些服务随机选取一个端口,而有些服务使用固定的端口(在此端口空闲的情况下)。当一个和RPC服务通信时,它不知道这个RPC服务使用的高位端口。RPC客户程序和服务器的RPC映射服务TCP 135端口进行连接,然后通过UUID来调用RPC服务。RPC端口映射器返回对应的高位端口号给客户,然后关闭端点映射程序。最后,客户使用从服务器端收到的这个高位端口来和服务器建立新的连接。因为客户不可能知道RPC服务使用什么端口,所以在防火墙上需要允许所有的高位端口通过。

在此,我们限制RPC使用单个端口,这样我们可以在防火墙上配置允许这个端口。或者,我们需要允许DMZ网络访问内部网络的所有高位端口。

我们可以通过在每个域控制器上修改注册表来,注册表键值是:

We can do this by making a Registry change on each domain controller. The Registry Key is:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\

新建一个DWORD值,命名为TCP/IP Port ,然后设置为你想让其使用的端口号。记住,你需要在你所有的域控制器修改。

注意:

其实我们不需要这样做,因为ISA防火墙的RPC过滤器可以自动控制端口的访问。RPC过滤器侦听RPC协商,然后动态开放需要的高位端口。但是,我宁愿选择手动设置端口,这样可以更容易分析日志还有跟踪DMZ网段和内部网络间的RPC通信。这就是为什么我说ISA防火墙没有“开放端口”的原因,因为ISA实际上理解需要的协议,而不仅仅停留在端口的开放上。

例如,在每个域控上执行以下步骤来修改RPC复制端口为 50000:


  1. 点击开始,然后运行 Regedit ;
  2. 定位到以下键值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\



  1. 然后新建一个DWORD值;
  2. 将其名字修改为TCP/IP Port,然后双击此项;
  3. 在编辑编辑DWORD值对话框,选择“十进制”,然后输入 50000 ,点击确定;
  4. 重启域控制器。

作为ISA Server 2004的一个重大改进,它允许你控制任何两个网络间的路由关系。在此例中,我们在DMZ和内部网络间使用路由关系。注意如果你使用模板来建立DMZ网段,那么在内部网络和DMZ间的默认关系是NAT。




下面我们将建立一个规则,允许在DMZ的一台成员服务器和内部网络的域控之间允许域内通信,在此我只是为了演示,在你的实际网络中,没有必要只是简单的两台服务器。

执行以下步骤建立允许DMZ网段的计算机访问内部网络中的域控的域内通信规则:


  1. 在ISA Server管理控制台,展开服务器名,然后点击防火墙策略;
  2. 在防火墙策略节点,点击任务面板上的任务标签,然后点击新建访问规则链接;

  3. 在欢迎使用新建访问规则向导页,输入规则的名字,在此命名为
    Member Server --> Internal DC
    ,点击下一步;
  4. 在规则动作页,选择允许,然后点击下一步;
  5. 在规则应用到页,选择选择的协议,然后点击添加按钮;

  6. 在添加协议对话框,点击所有协议对话框,双击以下协议:




  1. 点击新建,然后点击协议;
  2. 在欢迎使用新建协议定义向导页,在协议名字上输入 ADLogon/DirRep ,点击下一步;

  3. 在主要连接信息页,点击新建;
  4. 在新建/编辑协议连接对话框,在协议类型列表选择TCP,然后在方向列表选择出站,在端口范围,在从和到输入50000,然后点击确定;





  1. 在主要连接信息页点击下一步;
  2. 在辅助连接页,选择No,然后点击下一步;
  3. 在完成新建协议定义向导页点击完成;
  4. 点击新建,然后点击协议;
  5. 在欢迎使用新建协议定义向导页,在协议名字上输入 Direct Host ,点击下一步;
  6. 在主要连接信息页,点击新建;
  7. 在新建/编辑协议连接对话框,在协议类型列表选择TCP,然后在方向列表选择出站,在端口范围,在从和到输入445,然后点击确定;
  8. 在主要连接信息页点击下一步;





  1. 在辅助连接页,选择No,然后点击下一步;
  2. 在完成新建协议定义向导页点击完成;
  3. 点击新建,然后点击协议;
  4. 在欢迎使用新建协议定义向导页,在协议名字上输入 RPC Endpoint Mapper (TCP 135),点击下一步;
  5. 在主要连接信息页,点击新建;
  6. 在新建/编辑协议连接对话框,在协议类型列表选择TCP,然后在方向列表选择出站,在端口范围,在从和到输入135
    ,然后点击确定;
  7. 在主要连接信息页点击下一步;
  8. 在辅助连接页,选择No,然后点击下一步;
  9. 在完成新建协议定义向导页点击完成;
  10. 在添加协议对话框,点击用户自定义目录,双击 ADLogon/DirRep、Direct Access
    和 RPC Endpoint Mapper (TCP 135) ,然后点击关闭。





  1. 在协议页点击下一步;
  2. 在访问规则源页,点击添加;
  3. 在添加网络实体对话框,点击新建,选择计算机;

  4. 在新建计算机规则元素对话框,在名字文本框中输入 DMZ Member Server ,在计算机IP地址输入172.16.0.2
    ,然后点击确定;





  1. 在添加网络实体对话框,点击新建,选择计算机;

  2. 在新建计算机规则元素对话框,在名字文本框中输入 Internal DC ,在计算机IP地址输入10.0.0.2 ,然后点击确定;





  1. 在添加网络实体对话框中,点开计算机目录,然后双击DMZ Member Server项,然后点击关闭;在访问规则源页点击下一步;
  2. 在访问规则目的页,点击添加;
  3. 在添加网络实体对话框中,点开计算机目录,然后双击Internal DC项,然后点击关闭;在访问规则源页点击下一步;
  4. 在用户集页,接受默认的所有用户,点击下一步;

  5. 在完成新建访问规则向导页回顾设置,然后点击完成;

  6. 点击应用保存修改和更新防火墙策略;建好的访问规则如下图所示:




 

希图显示了一些在成员服务器和域控制器之间的通信记录:



注意看上图,对于TCP 445端口,显示的协议是 Microsoft CIFS (TCP) 而不是我们定义的 Direct Host,这是因为Microsoft CIFS (TCP)是内建的协议,比用户自定义的协议具有更高的优先权。

 


后记:Tom在这篇文章中谈到了基于活动目录的域内通信。对于使用网上邻居通信的情况,则需要开放以下协议:


  • Netbios会话 (端口为TCP 139 出站)
  • Netbios名称服务 (UDP 端口为137 发送接收)
  • Netbios数据包 (端口为UDP 138 发送)
  • Microsoft CIFS (端口为TCP 445 出站)
  • Microsoft CIFS (端口为UDP 445 发送接收)


最后需要注意的是,在没有域的环境下,网上邻居是基于Netbios的广播,但是Netbios是不能路由的,所以不要指望可以在网上邻居中看见跨网段的计算机。


,

分享到