在完成讨论之前,我得提醒你在使用访问策略代替发布策略来允许访问你的DMZ主机前将失去大量的安全性。ISA Server 2004比起PIX或者Netscrenn设备提供了很少的安全性。我们可能使用发布策略的原因包括:
为了达到我们的目标,你需要执行以下步骤:
-
配置上游路由器的路由表;
-
配置网络接口;
-
安装ISA Server 2004防火墙软件;
-
在DMZ服务器上安装和配置IIS WWW和SMTP服务;
-
配置DMZ网络;
-
在DMZ和外部网络之间、DMZ和内部网络之间建立网络规则;
-
建立一个服务器发布策略以允许DMZ发送DNS请求到内网;
-
建立一个访问策略以允许内网向外网发送DNS请求;
-
建立一个访问策略以允许外网向DMZ发送HTTP请求;
-
建立一个访问策略以允许外网向DMZ发送SMTP请求;
-
测试从外网到DMZ的访问策略;
-
通过修改访问策略禁止Web Proxy filter来允许外网向DMZ发送数据。
配置上游路由器的路由表
我见过的ISA防火墙管理的最常见的问题是在上游路由器的路由表中把DMZ网段和其他网段放在一起。当你建立一个公共地址的DMZ网段,你需要对你的公网地址进行子网划分,然后分配一个子网给DMZ网段。你可以绑定第一个分配给DMZ网段的有效的IP地址给DMZ接口,然后分配另外子网的第一个有效IP地址给公网接口。
这就是许多ISA防火墙管理员停止和出现问题的地方。你需要在上游路由器上配置DMZ网段的路由。你可以通过配置路由器使用ISA Server 2004防火墙的外部接口地址作为DMZ网段网络ID的网关地址。如果在上游路由器上丢失了这条路由项,那么对于DMZ网段,没有主要的进入连接、也没有对进入连接的回应、通信的出入可以正常工作。
在我们在这篇文章中使用的实验网络中,外部网络主机和ISA Server 2004防火墙的外部接口具有相同的网络ID192.168.1.0/24。ISA Server 2004防火墙的外部IP地址是192.168.1.70,外部主机将使用和它相同网络ID的IP地址。DMZ网段使用网络ID 172.16.0.0/16。因此,在这篇文章中我们使用的Windows XP外部网络主机中,我配置了一个路由项来告诉它使用ISA Server 2004防火墙的外部接口IP地址来到达网络172.16.0.0/16。我执行了以下命令:
route add 172.16.0.0 MASK 255.255.0.0 192.168.1.70
注意:这个例子中没有使用公网地址块的子网。在生产环境中,你可能会对你的公共地址块进行子网划分和在ISA Server 2004防火墙的上游路由器上为你的DMZ子网段建立对应的路由项。这意味着你必须得控制你的上游路由器,由于ISP的关系,这让公共地址的DMZ网段成为了难确定的一点。
配置网络接口
网络接口配置通常是ISA Server 2000管理员的争论焦点,并且我期望它能继续成为ISA Server 2004管理员的争论焦点。关于这个问题,有许多原因,主要的原因是你是否架设你的DNS服务。
对于ISA Server 2004防火墙来说,DNS是一个至关重要的服务,因为防火墙可以为Web Proxy和防火墙客户代理名字解析。ISA Server 2004防火墙使用它接口上的DNS设置来询问合适的DNS服务器。如果你配置了错误的DNS服务器,那么你将会体验缓慢的名字解析,或者根本不能解析名字,给予最终用户ISA Server 2004防火墙不能工作的印象。
我们可以使用以下的指导方法把ISA Server 2004防火墙正确的DNS配置进行摘要:
-
如果你在内部网络中拥有DNS服务器,你应该配置这个DNS服务器支持Internet的主机名字解析;
-
如果你不选择让你的内网DNS服务器执行Internet名字解析,你可以考虑在ISA Server 2004防火墙或者DMZ网段上放置一个缓存式DNS服务器。
-
如果你选择在DMZ网段放置一个为你可以公开访问的域进行授权的DNS服务器,不要允许这个DNS服务器解析DNS名字。它的意思是,你授权的DNS服务器应该只是对你架设的域解析进行解析,在用户想通过它解析其他域名时会返回一个错误。
-
如果你不想架设你自己的DNS服务器而且不想在内网里面使用DNS服务,那么配置ISA Server 2004防火墙使用公众的DNS服务器,例如你ISP的DNS服务器。注意这个配置在进行内部名字解析与在Web Proxy和防火墙客户端进行连接时将导致问题。因此,你应该为没有建立DNS基础结构的SOHO环境选择另外一种防火墙。但是,如果你具有SOHO环境而且具有DNS服务器,ISA Server 2004防火墙是保护你公司资产的理想防火墙。
永远不要在已经配置了内部DNS服务器地址的网络接口上再配置公众的DNS服务器地址。
-
DNS服务器地址应该在网络和拨号连接窗口的列表最顶端的接口上配置。例如,如果你有三个接口的ISA Server 2004防火墙:一个DMZ接口,一个内部接口和一个外网接口。那么内部接口应该是在列表最顶端并且DNS服务器IP应该配置在这个接口上。在你使用内网DNS服务器、DMZ DNS服务器、外网DNS服务器时,这是要值得注意的。
-
如果你不能理解这些规则,询问理解了的人。DNS设置非常重要,并且如果ISA Server 2004防火墙的DNS设置不正确,你将体验非常难调试的连通性问题,并且它会给你“ISA Server 2004防火墙不能工作”的坏印象。
-
最后一条:在发布你的公共地址的DMZ主机到Internet之前,正确的安排你的DNS服务器顺序。
安装ISA Server 2004防火墙软件
在处理完DNS之后,我们就可以安装ISA Server 2004防火墙软件了。至于安装说明,可以在本站http://www.isaservercn.org/info/info.php?sessid=&infoid=8 找到。
安装和配置IIS WWW和SMTP服务
在这篇文章中我们将把一台Windows Server 2003计算机放置在公共地址的DMZ中。这台计算机将安装IIS 6.0 WWW和SMTP服务,我们使用访问策略来发布它们。在生产环境中,根据你的需要,可能还会有前端的Exchange发布OWA、OMA、RPC over HTTP等服务。在DMZ网段中的主机使用有效的DMZ子网块的IP地址。发布的DMZ主机使用ISA Server 2004防火墙的DMZ接口作为它的默认网关。DMZ主机不能使用内部网络的IP地址作为它的默认网关,因为它没有访问内部网络的权限,除非我们给予它这个权限但是我们不会这样做。
DMZ主机网络接口的DNS服务器地址是ISA Server 2004防火墙DMZ接口的IP地址。因为我们将在DMZ网段和内部网络之间配置NAT关系并且一个服务器发布策略将把DNS服务器发布到DMZ接口的IP地址上。
内部网络DNS服务器已经为解析Internet主机名做好了配置。这个在你想使用DMZ网段的SMTP服务作为SMTP中继时很有效。SMTP中继需要为每个出去的邮件解析域名的MX记录并且这样它可以使用内部网络的DNS服务器完成这一点。
建立DMZ网络
当位于DMZ的服务器配置以后,我们现在可以进入ISA Server 2004管理控制台来建立DMZ区域。首先是建立DMZ网络,ISA Server 2004防火墙需要指导这个网络中使用的IP地址和它连接到其他网络时的路由关系。在我们当前的例子中,DMZ网络将会命名为DMZ,并且我们将分配给它所属网络ID的整个IP地址范围。在生产环境中,你需要包含你为DMZ网段建立的子网块的所有IP地址。
重要提示:
你或许会注意到ISA Server 2004自带的网络模板可以简化多网络(DMZ)环境下的配置。但是,我不推荐你使用这些模板,因为它们假设在你的网络之间具有路由关系,而且要求你非正式的配置防火墙访问策略。这个不能被ISA Server 2004的初学者很好的理解。我已经看到了许多因为使用网络模板导致的网络配置问题。它们这些问题可以通过使用手动设置防火墙来避免。通过避免使用这些网络模板,你可以确定你拥有一个安全的配置而且你的防火墙配置和访问策略正好符合你的需求。
执行以下步骤来建立DMZ网络:
1.在 Microsoft Internet Security and Acceleration Server 2004 管理控制台,展开服务器,然后展开 Configuration ,点击 the Networks 。
2.在 Networks ,在细节面板中点击 Networks 标签,在 Tasks 标签,点击 Create a New Network 。
3. 在 Welcome to the New Network Wizard 页,在Network name文本框中输入一个名字,此例中我们命名为DMZ,点击 Next。
4. 在 Network Type 页,选择 Perimeter Network ,点击 Next。
5.在 Network Addresses 页,点击 Add Adapter 按钮。
6.在 Select Network Adapters 对话框,勾选DMZ 网络接口。注意你可以直接勾选而不需要选择网络适配器先。但是,如果你不选择网络适配器,你不能在Network Interface Information看见正确的信息。点击 OK。
7.在Network Addresses 页点击 Next 。
8.在Completing the New Network Wizard页回顾你的设置,然后点击 Finish。
在DMZ和外部网络之间、DMZ和内部网络之间建立网络规则
现在DMZ网络已经定义好了,下一步是配置DMZ网络和内部网络、Internet(外部网络,除了已定义网络的任何网络)之间的路由关系。
在我们的例子中,我们想在DMZ网络和Internet网络之间是路由关系,在DMZ网络和内部网络之间是NAT关系。这允许我们使用访问策略来允许外部主机访问DMZ网段和一个服务器发布策略来隐藏内部网络的DNS服务器的IP地址。注意就算是我们在DMZ和内部网络之间使用路由关系,我们也可以建立一个服务器发布策略来允许DMZ主机访问内部网络的DNS服务器。至关重要的是我们使用服务器发布策略来替代访问策略,这样我们可以让DNS过滤器保护内部网络的DNS服务器。
执行以下步骤来建立网络规则控制DMZ网络和Internet之间的路由关系:
1. 在左面板的Networks 节点,点击细节面板的Network Rules标签。点击任务面板Tasks标签中的 Create a New Network Rule 链接。
2. 在 Welcome to the New Network Rule Wizard 页,在Network rule name文本框中输入名字,在此例中我们输入DMZvsExternal,点击 Next。
3. 在Network Traffic Sources 页,点击 Add 按钮。
4. 在 Add Network Entities 对话框,点击 Networks 目录,然后点击 DMZ 网络,然后点击 Close。
5.在Network Traffic Sources页上点击 Next 。
6.在 Network Traffic Destinations 页,点击 Add按钮。
7.在 Add Network Entities 对话框,点击 Networks 目录,然后双击 External,然后点击 Close。
8.在Network Traffic Destinations 页上点击Next 。
9.在Network Relationship 页,选择Route 然后点击 Next。
10.在Completing the New Network Wizard页,回顾你的设置,然后点击Finish。
下一步是建立DMZ和内部网络之间的路由关系,在这个例子中,我们选择NAT。执行步骤和上面的一样,其中名字设置为DMZvsInternal,网络通信源选择为Internal,网络通信的目的地选择为DMZ,网络关系选择为NAT。
建立一个服务器发布策略以允许DMZ发送DNS请求到内网
DMZ主机需要解析Internet主机名字。例如在DMZ主机需要通过名字和Internet的主机建立连接的时候,如SMTP中继服务。
我们在这个例子中使用服务器发布策略所以DNS过滤器可以应用到从DMZ主机到内部网络中DNS服务器的访问。
执行以下步骤以建立服务器发布策略:
1. 在 Microsoft Internet Security and Acceleration Server 2004 管理控制台,点击 Firewall Policy ,在任务面板,点击Tasks 标签,然后点击 Create a New Server Publishing Rule 链接。
2. 在 Welcome to the New Server Publishing Rule Wizard 页,在Server publishing rule name 文本框中输入名字,在此例中,我们命名为 Publish Internal DNS Server,点击 Next。
3.在 Select Server 页,输入内部网络DNS服务器的IP地址,在这个例子中是10.0.0.2,输入后点击 Next。
4.在 Select Protocol 页,在Selected protocol 列表中选择 DNS Server 协议,点击 Next。
5.在 IP Addresses 页,勾选 DMZ ,这指出服务器发布规则将在哪个接口上侦听通往内部DNS服务器的连接请求。点击 Next。
6. 在Completing the New Server Publishing Rule 页回顾设置,然后点击Finish。
建立一个访问策略以允许内网向外网发送DNS请求
内部DNS服务器需要通过查询Internet的DNS服务器来解析Internet主机名。我们可以建立一个DNS访问策略将允许内部网络的DNS服务器使用DNS协议访问Internet DNS服务器。执行以下步骤:
1. 在 Microsoft Internet Security and Acceleration Server 2004 管理控制台,点击左面板的 Firewall Policy 。
2.在任务面板中点击 Tasks 标签,然后点击 Create New Access Rule 链接。
3. 在 Welcome to the New Access Rule Wizard 页,在 Access Rule name 文本框中输入一个名字,在此例中,我们命名为Outbound DNS Internal DNS Server,点击Next。
4.在 Rule Action 页,选择 Allow 然后点击,Next。
5.在 Protocols 页,从This rule applies to 列表中选择 Selected protocols 项,点击Add 按钮。
6.在 Add Protocols 对话框,点击Common Protocols 目录,然后双击 DNS 项,点击 Close。
7. 在Protocols 页上点击 Next 。
8. 在 Access Rule Sources 页,点击 Add 按钮。
9.在 Add Network Entities 对话框,点击 New 按钮,点击 Computer 项。
10.在 New Computer Rule Element 对话框,在Name 文本框中输入计算机的名字,在此例中,我们输入 Internal DNS Server,在 Computer IP Address 文本框中,输入内部网络DNS服务器的IP,此例中是10.0.0.2,点击OK。
11.在 Computers 目录下双击 Internal DNS Server 项,点击 Close。
12.在 Access Rule Sources 页,点击 Next。
13.在 Access Rule Destinations 页,点击 Add 按钮。
14.在 Add Network Entities 对话框,点击 Networks 目录,然后双击 External 项,点击 Close。
15.在Access Rule Destinations 页点击 Next 。
16.在 User Sets 页,接受默认设置点击Next。
17.在Completing the New Access Rule Wizard 页回顾设置,然后点击Finish。
建立一个访问策略以允许外网向DMZ发送HTTP请求
下一步是建立一个访问策略来允许外网向DMZ主机发送HTTP请求。当你没有从Web发布策略提供的完全的防火墙特性集中受益,这个选项允许你把Web服务器的实际IP保留在Internet之上,而且HTTP安全过滤器仍然应用到了这个访问策略上。HTTP安全过滤器的基本配置提供了一个很好级别的保护,你可以自定义HTTP安全过滤器来对你使用访问策略发布的为Web服务器提供增强级别的保护。
执行步骤和上面的一样,不同的地方:
规则命名为Inbound to DMZ Web Server,协议只选择HTTP,
源网络选择为External ,目的地为新建一个Computer 项,命名为DMZ Web Server,IP为发布的DMZ Web服务器的计算机IP地址(在这个例子中,是172.16.0.2)。
建立一个访问策略以允许外网向DMZ发送SMTP请求
现在Web服务器已经发布了,我们将建立一个访问策略以发布位于DMZ网络的SMTP服务器。执行步骤如上,不同的地方:
策略命名为Inbound to DMZ SMTP Server,协议选择为SMTP,源网络为External ,目的地为DMZ Web Server(此例中SMTP和Web服务位于同一台服务器上)。
点击Apply保存修改并且更新防火墙策略,在Apply New Configuration 对话框上点击OK 。
你的防火墙策略应该如下图所示,
测试从外网到DMZ的访问策略
现在我们来测试访问策略,执行以下步骤来完成测试:
1. 在外部主机上打开Web浏览器,然后输入DMZ Web服务器的IP地址。在这个例子中,DMZ Web服务器的IP地址是172.16.0.2,所以我们在Web浏览器的地址栏中输入http://172.16.0.2然后回车。
2. IIS Web站点的默认页面将会显示。在这个例子中,我们没有指定一个特性的默认页,所以我们看见Under Construction 页(注:正在建设中),这个表明允许访问DMZ 站点的访问策略工作正常。
3. 现在,让我们看看Web站点的log文件。打开对应的日志文件(C:/WINDOWS/system32/LogFiles/W3SVC1目录下),你可以看见如下图显示的信息。注意高亮的项,它指出在Web服务器日志中记录下了源IP地址。在这个例子中,源IP是ISA Server 2004防火墙的DMZ接口的IP地址。这不是让我们可疑的,原因是Web Proxy过滤器自动和HTTP协议联系到了一起。我们可以后文章的后面看到如何禁止Web Proxy过滤器。
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2004-06-18 05:47:14
2004-06-18 05:56:21 172.16.0.2 GET /iisstart.htm - 80 - 172.16.0.1 Mozilla/4.0+ (compatible;+MSIE+6.0;+Windows+NT+5.1) 200 0 0
2004-06-18 05:56:25 172.16.0.2 GET /pagerror.gif - 80 - 172.16.0.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) 200 0 0
4. 接下来,到位于DMZ的Web Server上,打开Internet Information Services (IIS) Manager 控制台。
5.在 Internet Information Services (IIS) Manager 控制台,右击 Default Virtual SMTP Server 然后点击 Properties。在 General 勾选 Enable Logging ,点击 Apply 然后点击 OK。
6. 在外部计算机上,打开一个命令提示符,输入 telnet 172.16.0.2 25 然后回车;
7.你可以看见SMTP服务的信息,输入 help 然后回车,你可以看见服务器支持的一些命令,然后输入quit断开。
8.进入到DMZ主机的 C:/WINDOWS/system32/LogFiles/SMTPSVC1 目录,打开对应的日志文件。你可以看到如下的一些信息。这是访问DMZ SMTP服务的外部主机IP。在这个例子中显示的是原始的客户IP信息,因为没有应用程序过滤器处理了这个连接和使用ISA Server 2004防火墙的IP地址替换了原始的IP地址。
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2004-06-18 06:07:22
#Fields: time c-ip cs-method cs-uri-stem sc-status
06:07:22 192.168.1.187 QUIT - 240
测试DMZ到内部网络的DNS规则
在前面一节中,我们证明了从Internet到DMZ主机的访问策略控制工作正常。下一步我们确认服务器发布策略允许DMZ主机正常的访问内部网络的DNS服务器。
执行以下步骤测试DNS服务器发布策略:
1. 在DMZ主机上打开一个命令提示符,输入nslookup www.hotmail.com 然后敲回车。
2.你将会看到下图的结果。注意我们先触发了Publish Internal DNS Server 策略,然后触发了Outbound DNS Internal DNS Server 策略。这样显示了DMZ查询了网络的DNS服务器,并且内网的DNS服务器查询了Internet的DNS服务器来解析这个名字。
3.你可以在实时监控中看到如下图显示的内容
通过修改访问策略禁止Web Proxy filter来允许外网向DMZ发送数据
你可能希望在你使用访问策略发布的Web服务器中看见原始的IP地址信息,而不是看见ISA Server 2004的外部接口的IP地址。当你使用访问策略,你可以通过禁止Web Proxy filter来达到这一目的,这个可以通过修改你在前面建立的HTTP访问策略来实现。
执行以下步骤:
1. 在 Microsoft Internet Security and Acceleration Server 2004 管理控制台,右击 Inbound to Web Server 策略,然后点击 Properties。
2.在 Inbound to Web Server Properties 对话框,点击 Protocols 标签。
3.在 Protocols 标签,点击Protocols 列表中的HTTP项,然后点击 Edit按钮。
4.在 HTTP Properties 对话框,点击 Parameters 标签,在 Parameters 标签,不要勾选Application Filters 框中的Web Proxy Filter ,然后点击 Apply 再点击 OK。
5.在Inbound to Web Server Properties对话框中点击 OK 。
6. 点击Apply 保存修改并更新防火墙策略。
7.在Apply New Configuration 对话框中点击OK 。
现在我们再重新连接一下Web站点:
1. 在外部客户计算机上打开Web浏览器,然后在地址栏中输入http://172.16.0.2 ,然后敲回车。
2. 显示出了 Under Construction (正在建设中)页。按住 CTRL 键,然后点击Refresh 按钮。
3. 回到DMZ的Web服务器,然后打开对应的日志文件,你可以看见如下面所示的一些信息,注意,显示的是实际的客户IP信息。
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2004-06-18 07:42:37
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status
2004-06-18 07:42:37 172.16.0.2 GET /iisstart.htm - 80 - 192.168.1.187 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) 200 0 0
2004-06-18 07:42:37 172.16.0.2 GET /pagerror.gif - 80 - 192.168.1.187 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1) 200 0 0
当通过禁止Web Proxy过滤器来解决了使用访问策略发布Web服务器的源IP地址问题后,你也对所有的不是通过Web Proxy产生的Web通信失去了安全过滤特性。它的意思是如果SecureNAT 和 Firewall clients发起的HTTP通信不会经过Web Proxy filter 的处理,它们将不能从Web Proxy缓存和其他特性中受益。此外,可能还对Web发布策略有一些意料不到的影响。也许是我在此胡说,因为我还没有完全的测试完禁止Web Proxy filter后对于HTTP协议的影响。:-)
另外一个可以选择的方法是建立你自己的协议定义,定义出去的TCP 80。你可以通过访问策略来使用自定义协议来发布DMZ HTTP服务器。但是这样的大问题是你没有受到HTTP安全过滤和Web Proxy filter的保护。在这种情况下,你手中真正的需要一个PIX防火墙。