发布服务器向导-两种基本的方式
微软的最新防火墙Web代理软件ISA Server 2000发展的今天已经有将近1年的时间,它的功能强大和易于伸缩性给企业带来的非常巨大的方便。由于本文不是一片介绍ISA Server的文章,所以更多的特性请查询http://www.microsoft.com/isaserver。
在ISA SERVER 2000的众多特性之一,有一个非常引人瞩目的功能,那就是提供在ISA SERVER 2000上发布内部网络(没有Internet IP的网络)的各种服务器。但考虑到FTP服务的特殊性,(因为需要2个以上的端口,具体详情请参考《浅析FTP的工作原理》),在发布时会有些不方便,所以促使我提笔写此一文。
发布服务器,ISA SERVER 2000给我们提供的2种方法,一种是Web Publishing Rules,另一种是Server Publishing rules。这两种方式是有本质区别的,前者借助于ISA SERVER 2000的Web Proxy Service,后者借助于Firewall Service。两种方式中,有几点非常重要的区别:
好,了解了一些基本知识后,我们开始切入正题:如何使用ISAServer 2000发内部网络的FTP服务器。 我们分别以这两种方式介绍如何发布一台FTP服务器。
Server Publishing rules方式
首先,在内部运行FTP服务的计算机上设置IIS。具体如何设置,我想有耐心看到这里的朋友肯定是轻车熟路,所以我也不想在这里浪费笔墨了。请注意一点,你的FTP站点必须配置为监听21端口。
现在对于内部网络IIS的设置我们已经完成,接下来我们来到ISA Server 2000的计算机前,开始发布这个位于内部网络的FTP服务器。打开ISA管理器,展开Publishing结点,用鼠标右键点击Server Publishing rules,选择New-Rule,这时会出现图1。
图一
给这个规则起一个名字,不妨就是FTP Server。选择Next,出现图2。
图二
把运行IIS监听FTP请求的IP地址和ISA计算机外部接口的IP地址填写进去,然后单击Next,出现图3。
图三
选择FTP Server这个协议定义。单击Next,出现图4。
图四
在这里,你可以通过IP地址来控制你的访问者,如果没有这样的要求,那么选择Any Request,单击Next。 出现图5。
图五
ISA给了你一个简单明了的设置清单,核对后无误,单击Finish,我们的工作也就完成了。
在这个发布过程中我们用到了FTP Server这个协议定义(Protocol Definitions),这使我就不得不扯到FTP Access Filter这个应用程序过滤器,因为它在FTP服务器发布的过程中起到了至关重要的作用。FTP Access Filter作用在于为NAT客户端(现在内部网络的那台FTP服务器就是一个NAT客户端)动态打开其所需要的第二层连接,而管理员不必在ip packet filter中来添加静态的封包过虑条目来支持这个第二层连接。这样就会给管理员带来极大的方便,例如对于FTP的PASV连接模式,在客户端和服务器之间的数据传输通道所使用的端口都是动态的,管理员不可能把所有这些端口都添加的ip packet filter中,即使你是一个有耐心有时间的管理员,这样做也会极大损害网络的安全性。所以这种方法可以说根本是不可行的。FTP Access Filter在协议定义(Protocol Definitions)添加了如下条目:
FTP Server
FTP Download only
FTP
这3个协议定义用户是不能修改和删除的,它由FTP Access Filter来管理,并动态的在ip packet filter打开所需要的第二层连接。但是在实际使用的过程中,我也发现了这个FTP Access Filter的一些不足,它仅能支持标准端口21的FTP访问和服务器发布。如果内部网络的用户要访问非21端口的FTP服务器或者要发布非21端口的FTP服务器,那么你就不得不借助防火墙客户端,当然对于发布FTP服务器,还需要Wspcfg.ini的支持。有关这个问题我想已经超出了本文所以论述的问题,如果有机会我会在以后的文章中和大家一起探讨。以这种方式发布的FTP服务器,用户可以使用PASV和PORT中的任何模式来连接。
此外,还有两个相关的问题。也许有的朋友会问,我是否需要建立一个支持TCP 21的进入访问(在IP packet Filter中)来支持这一发布呢? 答案是肯定的:你不必! 你可以使用netstat命令来验证,你的ISA外部的网络接口已经在监听TCP 21端口了。还有一点Server Publishing的方法对于使用动态外部(Internet)IP地址的网络支持的不好,还记得我们在刚才的发布过程中指定ISA外部网络的IP地址的那个对话框么,就是图2所示的,当你重新拨号后,你的IP通常会变,那么你就必须手动的修改这个对话框中的ISA外部接口地址,来支持内部服务器的发布。唉,微软的产品就是这样,总是带着一点遗憾,不过没关系,下边的方法会满足你的要求。 Let’s go!
用Web Publishing Rules方式
方法不变,你必须先设置好内部网络的IIS,但是有一点不同,可以说是有了很大的选择端口的自由,因为你不必配置IIS监听21端口,只要你的设置FTP监听的端口没有被其他资源占用,那么就是可以的。至于为什么,请往下看。
打开ISA管理器,展开Policy Elements, 用鼠标右键点击Destination Sets, 选择New-Set,为你的目标集起个名字,并且把你的Internet上的FQDN添加进去,如图6。
图六
例如我这里的FQDN是USST.VICP.NET。建立这个目标集的作用是因为在Web Publishing rules中我们会引用这个设置。
展开Publishing结点,用鼠标右键点击Web Publishing rules,选择New-Rule,为你的发布规则确认一个容易辨认的名字,单击Next。接下来选择Specified Destination Set,并引用我们在上一步中设置好的目标集,如图7。
图七
单击Next,出现图8。
图八
和使用Server Publishing过程中比较,可以发现这里多出来了一个选项"Specific users and groups",通过选择这个选项,我们可以基于用户或者组来控制进入的访问,也就是说如果访问者没有一个合法的帐户,那么他将被拒绝访问。用户通过的合法帐户来源于你的网络的域帐户或者是ISA计算机上的本地帐户,这样看你的网络模式和ISA的安装模式。
一般情况下,我们也许不会有这样的要求,所以选择Any request,单击Next,再出现的对话框可就是最重要的一个环节了。选择Redirect the requests to internal Web Server,并给出内部网络监听FTP请求的计算机的IP地址,如果你选择使用名称的方式,那么你要首先确保你的网络内有一个有效的名称解析机制,DNS,WINS或者基于Computer Browser服务建立主浏览主机都是被允许的方法,当然DNS是最好的,因为它还可以提供用户上网的DNS查询缓存,这样被访问过一次的网站,那么当下一个用户再次访问时,DNS解析将在内部网络完成。在Connect to this port when bridging requests as FTP中写你在第一步中设置的端口号,注意一定要写对,否则就会发布失败。如图9。
图九
单击Next,设置清单会给你核对的机会,确认无误,单击Finish。但是我们的工作还没有完全结束,朗月繁星会提供给你一个更加优秀的设置,请双击刚才发布的规则,并打开Bridging选项卡,如图10。
图十
细心的朋友注意到了,在建立发布规则时,并没有出现这里的设置。确实,你必须以这种方式来进行这个"接桥"的设置。在这个选项卡中,ISA为我们提供了一些有趣的设置,我们可以把用户的HTTP请求重新接桥,转换为FTP请求或SSL请求。当然对于用户SSL请求,我们也同样可以设置接桥到HTTP或FTP。在这里我们设置把用户的HTTP请求转换接桥为FTP请求,那么单击OK。
这时,用户就可以使用http://usst.vicp.net(以我FQDN为例)来访问你的内部网络的FTP站点。还记得我刚才说这个方法比较优秀么,确实,这样带来了一些好处。一个基于用户访问的FTP安全站点,它只能使用基本的验证方式,也就是说密码是以明文发送的,任何在网络上使用嗅闻器(著名的SnifferPRO就是一个例子)的人都可以得到这个密码,所以是非常不安全的。采用这种方法,你就可以使用Windows身份验证并使用SSL连接加密,来强化安全性,因为进入的请求是HTTP,而不是FTP。
OK,现在我们的发布工作终于完成了。
--------------------------------------------------------------------------------
如何在发布位于ISA Server以及DMZ区域的FTP服务器
但是,本文所涉及的话题还没有完,继续!
"如果我想在ISA上发布ISA上运行的FTP服务怎么办?"我想这种情况在一些小企业里是常见的!如法炮制!我想说错,可是又不是完全错,因为用Web Publishing的方式是可以,你完全可以按照上边的方法来发布运行在ISA上的FTP服务,但是对于Server Publishing的方法就行不通了。原因其实很简单,因为微软的IIS默认时,会在0.0.0.0:21监听所有的FTP请求,尽管你在IIS中设置了只响应某一个ip地址的请求。为了验证这一事实,我们使用netstat命令来看看,如