通过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 易做图 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:
- 点击开始,然后运行 Regedit ;
- 定位到以下键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\
- 然后新建一个DWORD值;
- 将其名字修改为TCP/IP Port,然后双击此项;
- 在编辑编辑DWORD值对话框,选择“十进制”,然后输入 50000 ,点击确定;
- 重启域控制器。
作为ISA Server 2004的一个重大改进,它允许你控制任何两个网络间的路由关系。在此例中,我们在DMZ和内部网络间使用路由关系。注意如果你使用模板来建立DMZ网段,那么在内部网络和DMZ间的默认关系是NAT。
下面我们将建立一个规则,允许在DMZ的一台成员服务器和内部网络的域控之间允许域内通信,在此我只是为了演示,在你的实际网络中,没有必要只是简单的两台服务器。注意:
以下场景中,我们将建立两个协议定义,但是这是没有必要的,因为它们已经是ISA内建有的。建立它们,只是为了阐明一些重要的观点。
执行以下步骤建立允许DMZ网段的计算机访问内部网络中的域控的域内通信规则:
- 在ISA Server管理控制台,展开服务器名,然后点击防火墙策略;
- 在防火墙策略节点,点击任务面板上的任务标签,然后点击新建访问规则链接;
- 在欢迎使用新建访问规则向导页,输入规则的名字,在此命名为
Member Server --> Internal DC,点击下一步;- 在规则动作页,选择允许,然后点击下一步;
- 在规则应用到页,选择选择的协议,然后点击添加按钮;
- 在添加协议对话框,点击所有协议对话框,双击以下协议:
DNS
Kerberos-Adm (UDP)
Kerberos-Sec (TCP)
Kerberos-Sec (UDP)
LDAP
LDAP (UDP)
LDAP GC (Global Catalog)
NTP (UDP)
Ping
- 点击新建,然后点击协议;
- 在欢迎使用新建协议定义向导页,在协议名字上输入 ADLogon/DirRep ,点击下一步;
- 在主要连接信息页,点击新建;
- 在新建/编辑协议连接对话框,在协议类型列表选择TCP,然后在方向列表选择出站,在端口范围,在从和到输入50000,然后点击确定;
- 在主要连接信息页点击下一步;
- 在辅助连接页,选择No,然后点击下一步;
- 在完成新建协议定义向导页点击完成;
- 点击新建,然后点击协议;
- 在欢迎使用新建协议定义向导页,在协议名字上输入 Direct Host ,点击下一步;
- 在主要连接信息页,点击新建;
- 在新建/编辑协议连接对话框,在协议类型列表选择TCP,然后在方向列表选择出站,在端口范围,在从和到输入445,然后点击确定;
- 在主要连接信息页点击下一步;