小默

【转】使用ISA Server 部署三宿主的DMZ区域(未完)

http://www.microsoft.com/china/community/Column/72.mspx
-------------------------------------------------------------- 
这次笔者将介绍如何在企业中利用ISA Server部署一个DMZ区域。一般来讲利用ISA Server可以实现三宿主的DMZ区域,也可以实现背靠背的DMZ区域。本文讨论的焦点是三宿主的DMZ区域。

 首先,我们谈谈为何要部署DMZ区域,也就是说一旦部署了DMZ,他对你的网络产生什么样的积极作用。有些企业可能从ISP申请了一个地址段的IP,但是往往出现这些IP不能有效的利用,构建了DMZ区域后,这些IP可以灵活的分配到DMZ上的主机。此外,从DMZ区域到Internet流动的数据包是被路由的,而不是被NAT,从ISA处理数据包的效率角度讲,前者要优于后者。
 现在,我们来看看要部署DMZ需要哪些条件
 - ISA需要有至少3个网络接口卡
 - ISA Server是做为防火墙模式或者集成模式安装的,可以是单机模式也可以是阵列模式
 - 在IP PACKET Filter的全局设置中,必须启用Enable IP Routing
 - ISP分配了一个地址段的IP给你的公司
 - 配置在ISA外部接口的IP的子网掩码不能与DMZ区域的子网掩码相同

 在这篇文章里,笔者以一个模拟的真实环境来描述DMZ,试验的拓扑如图1所示。

(图1)
 我们假设,你的公司从ISP购买了一个C类的IP段,172.16.1.0/24。我们将172.16.1.33分配给ISA的外部接口。把172.16.1.64/26从172.16.1.0/24划分出来分配给DMZ区域。注意,DMZ区域和ISA外部接口连接的区域是不同的逻辑网络。一个常见的错误是把DMZ区域和ISA外部接口规划在一个IP逻辑网络里。记住,从DMZ和外部网络的通讯角度讲,ISA扮演一个有过滤功能的路由器,而不是网桥,这也是为什么必需要启用Enable IP Routing的原因。

 ISA Server的网络接口配置如下

 Internal NIC
 IP:192.168.100.20/24
 Defaul Gateway(DG):None
 DNS:192.168.100.100

 DMZ NIC
 IP:192.168.100.65/26
 DG:None
 DNS:None

 External NIC
 IP:172.16.1.33/24
 DG:172.16.254
 DNS:10.10.10.10

 DMZ上的主机的网络接口配置
 IP:172.16.1.66-126/26
 DG:172.16.1.65
 DNS:None

 内部网络(Internal)上的计算机
 IP:192.168.100.x/24
 DG:192.168.100.20
 DNS:192.168.100.100

 请特别注意以上的配置。对于ISA来讲,缺省网关一定要配置在外部接口,原因很简单,一个去往未知IP的数据包,目标一定位于Internet上,如果这个IP是在你的公司内部网络,那么你的网络中的路由设置肯定存在问题。既然是去往Internet上的,ISA必须可以将这个数据包从外部接口上送出去,所以缺省网关一定要配置在外部接口上。如果你的其他接口也配置的缺省网关,那么就一定会出现问题,因为默认情况下,各个网络接口上配置的缺省网关的Metric都是1,所以去往未知IP的数据包,就会从所有配置了缺省网关的网卡送出,也就是负载均衡,但是另一个不应该配置缺省网关的网卡不能将数据包成功的送到目的IP,所以导致丢包,甚至无法通讯。内部接口的DNS指向公司内部的DNS服务器。外部接口的DNS指向一个可以解析Internet上所有域名的DNS服务器,这一点很重要,别忘了ISA要代理Web Proxy Client和FWC进行DNS解析。DMZ接口上,我们并没有配置DNS,当然你也可以配置。对于DMZ区域上的主机,我们把网关指向ISA的DMZ网络接口,因为DMZ区域上的主机需要与Internet通讯,确切的讲是被Internet用户访问,而ISA是Internet出口的持有者。DNS指向我们也没有在DMZ上的主机配置,因为DMZ应该是一个无人区,也就是说DMZ上应该是一个服务器农场,而不是被用户使用,浏览Internet的计算机,所以它没有必要配置DNS,除非某台服务器运行的服务必须依赖与DNS。内部网络的主机设置不是此文讨论的重点,所以在这里不展开讨论。
 另外,如果你对路由非常了解,从上边给出的ISA的网络接口配置看,你马上会发现一个问题。ISA外网接口连接172.16.1.0/24网段、而DMZ区域在172.16.1.64/26网段。我们假设这两个网段的物理介质是以太网标准,当172.16.1.64/26网段中的某个主机发起和172.16.1.0/24网段中某台主机通讯时,不妨假设172.16.1.69/26和172.16.1.254/24通讯,对于172.16.1.69/26,它认为172.16.1.254/24和自己不同属一个逻辑网段,所以它知道要把去往172.16.1.254/24的数据包发送给自己的网关172.16.1.65/26,由于172.16.1.69/26和172.16.1.65/26在一个广播域,所以ARP解析不会出现问题。但是反过来,当172.16.1.254/24要路由或者始发一个数据包到172.16.1.69/26时,问题就出现了。对于172.16.1.254/24来讲,它认为172.16.1.69和自己在一个逻辑网段,所以这个数据包应该是直接发送到172.16.1.69/26,因此它就会ARP解析172.16.1.69/26的MAC地址,然而它们并不在同一个广播域,所以这个ARP解析得不到答案,因此这个数据包就无法发送,然而,如果172.16.1.254/24可以成功的把去往172.16.1.69/26的数据包发送给172.16.1.33/24,也就是ISA Server,则这个数据包就可以被最终送往172.16.1.69/26。要解决这个问题,我们应该从两个方面出发。如果ISA Server连接ISP的链路层协议是通过广播技术寻址的,则解决的方法有3种,一是,与你的ISP联系,使得和ISA相连的路由器中有一条明确的到172.16.1.64/26网络下一跳为172.16.1.33/24的路由;二是,在ISA上实施一种对于链路层寻址的欺骗手段,例如,以太网的链路层寻址是通过ARP协议,所以你的ISA计算机上必须可以实现Proxy ARP功能,使得ISA计算机可以以自己外网接口的MAC地址回应对172.16.1.64/26网络中主机的ARP查询;三是,把172.16.1.0/24和172.16.1.64/26网络规划到一个广播域之中,如果采用这种方法,请注意ISA只能做“半过滤”来保护DMZ区域,但是这种保护也是有效的。换句浅显易懂的话说,从外网到DMZ区域的数据包是直接发送的,但是从DMZ区域到外网的数据包是经由ISA Server送出到外网的。如果,ISA Server连接ISP的链路层协议是点对点的,那么你不用做任何事情,因为只要是去往172.16.1.x的数据包,不论子网掩码是24位还是26位还是27位,数据包都会正确无误的发送到你的ISA Server的外网接口。在笔者的测试环境中,ISA和ISP的路由器之间的链路层协议是以太网,笔者对这个路由器有管理权力,所以采用了在路由器上添加路由的方法解决上述问题。

 请在你安装ISA Server之前,将这些配置设置好。一旦安装好ISA Server,在ISA计算机上添加或者删除网卡可能会引起意想不到的错误。此外,最好在安装好ISA Server后,不要修改IP的配置,如果你不得不这样做,请遵循以下步骤:
 1, 在命令行中输入net stop mspfltex
 2, 在命令行中输入net stop gksvc
 3, 在命令行中输入net stop IPNAT
 4, 修改相应网卡的IP设置
 5, 在命令行中输入net start mspfltex
 6, 在命令行中输入net start IPNAT
 7, 在命令行中输入net start isactrl
 8, 在命令行中输入net start “Microsoft Web Proxy”
 9, 在命令行中输入net start “Microsoft Firewall”
 10,在命令行中输入net start “Microsoft Scheduled Cache Content Download”

 为了验证网络层的连通性,我们通常会使用Ping工具。Ping工具实际上是ICMP协议的一种应用实例。为了实现目的,你需要对ICMP协议有一些了解。当一台主机Ping一个远端计算机时,会以ICMP协议 类型8 代码0(也就是通常所说的ICMP Ping Query或者是ICMP Ping Request)封装一个数据包发送出去,当远端计算机收到这个数据包后,会以ICMP 协议类型0代码0封装(ICMP Ping Reply)回应的数据包发送给源端。为了使DMZ上的主机可以Ping通Internet上的主机,你需要允许DMZ主机发送的ICMP Ping Query能够被ISA Server发送到Internet上,反过来,要允许ICMP Ping Reply进入到DMZ区域。这需要你在IP PACKET FILTER中建立2个封包过滤,具体内容如图2-图9。

 完成之后,等待一会儿以便新建的封包过滤生效,也可以重新启动一下Firewall Service服务。之后验证DMZ的主机是否可以Ping通Internet上的主机(也就是我们模拟的10.10.10.10那台计算机)。没有问题,DMZ和Internet的网络层确实具有连通性,但是反过来10.10.10.10却无法Ping通DMZ上的主机,也许这恰巧是你的愿望。如果你希望Internet的主机可以Ping通DMZ的主机,也很简单,只要把刚才建立的2个封包过滤的Direction 设置为Both即可,原理不再冗述。讲到这里,如果你希望Internet上的计算机可以Ping通你的ISA Server的外部接口,就会变得极其简单,笔者也就不必浪费笔墨。值得注意的是你不需要添加2个封包过滤,而是1个,如果你注意到IP PACKET FILTER中,已经有默认的名为ICMP outbound的封包过滤就不难理解,这个封包过滤允许ICMP 所有类型和代码的数据包从ISA的外部接口送出,也就是说你只需为进入的ICMP Ping Query设置一个允许的封包过滤即可。如果你想了解ICMP协议的更多细节,可以参考TechNet CD或者微软帮助站点中的Q170292文档。

 在验证了DMZ区域和Internet的网络层连通性后,我们要立刻切入正题:实现对DMZ区域的应用。我们的目的是要使得DMZ区域的各种服务能够被Internet上的用户访问。你可以将Web服务、FTP服务、邮件服务等等部署在DMZ区域,从而提供Internet用户的访问。笔者举3个典型的例子来说明ISA如何发布DMZ区域的服务器。

发布DMZ区域的Web服务
     1. 首先,设置好DMZ区域的Web 服务器,默认情况下它应该在80端口监听Web请求,如图10。设置完成后,请利用netstat 工具查看Web服务器是否在0.0.0.0上监听80端口(笔者假设你没有禁用SocketPooling)
   2. 在ISA Server上利用IP PACKET FILTER将Web服务发布。其实说发布有些过于牵强,ISA实际上是一个具有过滤功能的路由器,所以我们只是允许来自Internet用户的Web请求可以进入到DMZ上的Web服务器。设置的内容如图11-图14所示。
   3. 在Internet上的计算机验证是否可以正确访问位于DMZ区域的Web服务器。可以看到我们可以正确的访问Web页面,正如图15显示的那样。在验证之前,你应该等待一会儿以使刚刚建立的封包过滤生效,或者重新启动Firewall Service服务。

 完成了,上边的设置后,不仅Internet上的用户可以访问这台Web服务器,ISA Server连接的内部网络中的用户也可以访问,因为我们在图14中的Remote Computer中选择的是All Remote Computers。

发布DMZ区域的FTP服务

 由于FTP有两种工作模式,PORT和PASV模式,具体区别详见本刊杂志2002年第九期《浅析FTP工作原理》。

 发布PORT模式的FTP的步骤如下
  1,设置好DMZ区域的FTP服务器,使其在21端口上监听。如图16。当然你也可以使用其他端口,只不过要在配置IP PACKET FILTER时要做相应的调整。
  2,不论哪种模式的FTP,都需要允许远端用户连接FTP服务器21端口的进入请求,所以需要为此建立一个封包过滤,具体设置如图17-图20。
  3,为FTP的数据通道的建立设置一个封包过滤。由于PORT模式的数据通道的建立请求是由FTP服务器主动发起的,所以封包过滤的direction 应该是Outbound而不是Inbound。具体的设置如图21-图22。

 发布PASV模式的FTP的步骤如下
  1,设置FTP服务器在21端口监听,如上边所述
  2,由于PASV模式的所有连接都是有FTP客户端发起的,并且使用的端口并不是固定的,因此只需要一个“非安全”的封包过滤即可完成PASV模式的FTP服务器发布。如图23-图26。

 完成FTP的发布后,我们在Internet上的FTP客户端验证是否可以正确的以PORT和PASV模式连接到位于DMZ的FTP服务器,可以看到,如图27和图28,连接成功。在发布PASV模式的FTP服务器时,我们设置了一个安全性较差的封包过滤,但是这也是发布位于DMZ区域的PASV模式FTP的无奈之举。因为我们知道FTP的数据通道使用的端口是动态的,而且动态的范围我们不易控制,特别是使用微软IIS中提供的FTP服务,我们根本无法控制。不过你可以选择另一款FTP服务器端软件:ServU。这个服务器端软件可以控制PASV模式建立数据通道时使用的端口范围,通过设置这个端口范围我们可以控制本地FTP数据通道使用的端口,但是相应的,在IP PACKET FILTER中的设置也会麻烦许多,你要为这个端口范围中包含的所有端口都设置一个进入的封包过滤。如果你对安全性很重视,这个一劳永逸但是绝对麻烦的工作还是有必要的。笔者认为,将FTP服务器部署在DMZ区域也许并不是一个明智之举,除非你可以承受这台FTP服务器可以受到攻击的事实,或者你放弃使用PASV模式的FTP。然而,将FTP服务器部署在内部网络,可以在保证安全性的前提下(甚至是加强安全性)减轻许多工作,因为动态端口的问题你不必劳神,FTP Application Filter和MS Proxy Protocol可以很好的为你解决,有关在内部网络部署FTP服务器的问题请参考《使用ISA Server发布非标准端口的FTP服务器》以及《用ISA Server 2000发布内部网络的IIS FTP 服务器》。

 此外,如果你决定为在DMZ区域部署的FTP设置那个“非安全”封包过滤,笔者有必要做一些安全警告:你的这台FTP服务器完全暴露给Internet上的所有用户,任何Internet用户可以连接这台服务器的任意端口。ISA Server唯一可以做的是利用IP PACKET FILTER中的全局配置(Instruction Detection )为这台FTP服务器做一些保护。在这种情况下,你可以在FTP服务器上,安装一款单机版的防火墙软件来加强对这台服务器的保护,这种保护是确实有效的,但是相应的也会增加成本。笔者推荐以下几款单机版防火墙软件:Norton Internet Security、BlackICE、ZoneAlarm、天网防火墙。

 下边,笔者介绍一个很有意思的发布DMZ区域的Mail Relay Server的案例。在很多企业中,邮件服务是非常重要的,所以要有一种可行的措施有效的保护企业内部的邮件服务器不被攻击。如果这个邮件服务器必须被漫游的用户使用,那么这台邮件服务器就必须可以通过Internet被访问,这样就面临两种选择,一是把邮件服务器部署在内部网络,然后通过ISA发布出去;另一种是把邮件服务器部署在DMZ区域利用IP PACKET FILTER发布。我们可以综合一下以上两种方案的安全和性能的平衡点,把邮件服务器部署在内部网络,在DMZ区域部署一台邮件转发服务器,通过ISA只发布位于DMZ区域的邮件转发服务器,这样不仅可以有效的保护邮件系统的真实宿主不被攻击,因为你发布的只是一个邮件转发服务器,同时也能够利用邮件转发服务器和ISA的SMTP Filter实施分级的邮件过滤。

 完成这个发布工作我们需要做以下几件事情
 - 在企业内部部署Exchange Server 2000(本文不讨论)
 - 在DMZ区域部署邮件转发服务器
 - 发布内部网络的邮件服务器给DMZ区域的邮件转发服务器
 - 利用IP PACKET Filter发布邮件转发服务器

 

 

posted on 2010-04-27 09:23 小默 阅读(909) 评论(0)  编辑 收藏 引用 所属分类: Security


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜