Web服务器发布完全攻略
ISA2006最常用的三大功能是访问控制,服务器发布和VPN。访问控制我们在之前的博文中已经谈了不少,今天我们来讨论一下服务器发布。ISA把服务器发布分为Web服务器发布和非Web服务器发布,Web服务器发布又可以细分为安全Web站点发布和Web站点发布,今天我们讨论的是Web站点发布,也就是不使用证书的Web服务器发布。本文将介绍发布Web站点常用的一些技巧以及注意事项,希望能对大家有所帮助。
服务器发布简单地说就是把内网或DMZ的服务器发布到ISA的外网网卡上,让外网用户通过ISA的外网IP就能访问到被发布的服务器。但为什么需要用发布规则呢?为什么不能用访问内规则呢?创建一条访问规则允许外网访问内网被发布的服务器岂不是很简单,而且有些朋友还真就这么做过。俺来解释一下这个问题,什么时候该用访问规则,什么时候该用发布规则取决于源网络和目标网络的网络规则(请参考[url]http://yuelei.blog.51cto.com/202879/84995[/url])。如果源网络和目标网络间的网络规则允许访问,那我们就应该使用访问规则;如果源网络和目标网络间的网络规则不允许访问,那我们就应该使用发布规则。举个例子,内网到外网的网络关系是NAT,网络规则允许从内网到外网单向访问。如果内网访问外网的服务器,我们应该用访问规则;但如果外网要访问内网的服务器,就只能通过发布规则了。 访问规则和发布规则还有一个地方有区别,访问规则使用的协议,方向都是出站;而发布规则使用的协议,方向都是入站。
介绍了一些发布规则的理论,接下来就通过几个实验来介绍如何发布Web服务器。实验拓扑如下图所示,Denver和Perth是内网的Web服务器,Istanbul是外网的测试计算机,Denver同时也是内网的DNS服务器,我们在内网部署了域环境,实际上域并非实验必须,在工作组环境下也是完全可以的。
一 发布单个Web站点
先处理一种最简单的发布场景,我们把内网的一个Web站点发布出来即可。我们要发布的目标是Denver上的默认Web站点,Denver的域名为Denver.contoso.com,现在我们来看看应该如何操作。
在ISA服务器上以此点击 开始-程序-Microsoft ISA Server-ISA服务器管理,右键点击防火墙策略,如下图所示,选择新建“网站发布规则”。
为新建的发布规则取名为“发布内网的Denver.contsoo.com”。
当访问请求符合规则要求时,ISA允许访问请求。
选择“发布单个网站或负载平衡器”。
由于此次发布没有使用证书,因此我们选择使用不安全的连接发布Web站点。
内部被发布的站点是Denver.contoso.com,如果担心ISA解析Denver.contoso.com有问题,可以输入Denver的IP地址10.1.1.5。
我们选择发布路径为 /*,/*代表根目录,意思是要把Denver网站的所有内容都发布出来。
接下来要设置被发布站点的公共名称,也就是外网访问被发布站点时应采用哪种形式。如下图所示,如果我们在接受请求中选择“任何域名”,那意味着外网的访问者可以不限定访问域名,只要访问者使用的域名能解析为ISA的外网IP就可以,甚至可以直接用IP访问。
接下来我们要使用侦听器来监听ISA的80端口,安装ISA时要求不能有进程监听80端口,就是为了避免和ISA的Web侦听器冲突。由于当前没有可用的侦听器,我们点击“新建”,准备创建一个侦听器。
出现新建侦听器向导,我们为侦听器取名为“Listen 80”。
此次发布没有使用证书,不需要于客户端建立SSL安全连接。
让侦听器监听外部网络,也就是说侦听器将监听192.168.1.254的80端口。
侦听器不需要对用户进行身份验证,我们选择“没有身份验证”。
这次发布不需要单一登录设置。
点击完成结束创建侦听器。
回到创建发布规则向导,选择使用刚刚创建的侦听器“Listen 80”。
不要求客户端进行身份验证。
此发布规则适用于所有用户。
点击完成结束发布向导的创建。
等发布规则生效后,我们在外网客户机Istanbul上测试一下发布效果。首先我们用IP直接访问,如下图所示,我们在浏览器中输入192.168.1.254,结果如下图所示,发布成功!
再用域名访问,为简单起见,我们在外网没有部署DNS,域名解析用hosts文件完成,hosts文件在\windows\system32\drivers\etc目录下,内容如下图所示。在真正的生产环境下,自然会有公网的DNS服务器帮助解析。
有了Hosts文件帮助解析,在Istanbul上用IE访问denver.contoso.com,结果如下图所示,也成功了!
由此可见,如果用ISA发布单个站点,还是一件相当容易的事情。
二 发布多个Web站点
现在我们要加点难度了,这次的发布任务是发布多个站点,内网的Denver和Perth上都有Web站点需要发布。我们该如何处理呢?解决思路有两个,一是创建两个侦听器,分别监听ISA外网IP的不同端口。然后创建两个发布规则,一个发布Denver,另一个发布Perth,两个发布规则中分别调用两个侦听器;二是只用一个侦听器,创建两个发布规则分别发布Denver和Perth,两个发布规则依靠ISA的Web过滤能力进行区分。
考虑到如果创建两个侦听器,那外网用户访问其中一个网站时肯定要用到非标准的80端口,这并非一个好的选择,因此我们倾向于采用第二种方法。那现在我们就面临一个问题,当外网用户访问ISA外网IP的80端口时,我们怎么能区分出访问者是要访问Denver还是Perth呢?我们可以利用发布网站的公共名称来加以区分,例如我们可以规定Denver网站的公共名称是Denver.contoso.com,Perth网站的公共名称是Perth.contoso.com,这样根据外网用户访问域名的不同,我们就可以区分出外网用户访问的目标网站到底是谁。
我们看看具体该如何去做,首先我们要为Perth网站创建一条发布规则,考虑到这条发布规则和发布Denver的规则有类似之处,我们就使用简单些的办法,将Denver的发布规则复制过来,然后稍加修改即可。如下图所示,在右键单击Denver的发布规则,选择“复制”。
在Denver的发布规则上中单击右键,选择“粘贴”,即可复制Denver的发布规则,如下图所示,就是复制发布规则后的场景。
接下来我们要修改复制的发布规则,让它能够用于发布Perth站点。编辑“发布内网的Denver.contoso.com(1)”,如下图所示,切换到常规标签,将发布规则名称改为“发布内网的Perth.contoso.com”。
切换至发布规则的“到”标签,将发布的站点改为“perth.contoso.com”。
切换到发布规则的“公共名称”标签处,选择此规则应用到“以下网站的请求”,如下图所示,点击“添加”按钮,在公共名称对话框中输入perth.contoso.com。这样以后访问者必须用域名perth.contoso.com访问,才能和这条发布规则匹配。
这样Perth的发布规则就修改完成了,接下来对Denver的发布规则也要进行修改,我们对Denver的发布规则只修改公共名称一项。原先的公共名称是允许“任何请求”,这样的公共名称可以匹配任何访问请求,外网用户无论是访问Perth还是Denver都能和这条规则匹配上,这样一来其他的Web站点发布规则就等于无用了。因此我们要把Denver发布规则的公共名称改为Denver.contsoo.com,如下图所示。
修改后的发布规则如下图所示。
好了,万事俱备,只欠测试了,我们在Istanbul上开始测试,首先用IE访问Perth,如下图所示,访问成功了。
再来访问Denver,如下图所示,也成功了!
有的朋友可能会想,如果Istanbul用IP访问,会访问到哪个内网的网站呢?看看下图的访问结果,大家很可能会大吃一惊,为什么用IP访问会被ISA拒绝呢?因为目前两个发布规则的公共名称没有一个能和192.168.1.254匹配,因此ISA认为Istanbul的访问请求无法匹配任何一条发布规则,只能用默认规则进行拒绝。
如果我们希望用IP访问能够访问到Denver,那就修改Denver的发布规则,在发布规则的公共名称加上一条IP地址,如下图所示。
这次再用IP访问,由于IP地址可以和Denver发布规则中的公共名称匹配上,因此顺理成章地访问到了Denver,如下图所示。
总结:由此可见,ISA可以根据发布规则的公共名称对外网的访问请求进行Web过滤,功能远远强于一般路由器的端口映射发布单个站点非常简单。从实验过程来看,发布单个站点非常简单,发布多个网站只要注意用公共名称区分发布规则,其实也不难。但发布Web站点还有不少棘手的问题,我们在后续文章中继续讨论。
本文出自 “岳雷的微软网络课堂” 博客,请务必保留此出处http://yuelei.blog.51cto.com/202879/86828