让你的Web服务器不再裸奔:ISA2006系列之十二

    很多小型企业限于资金紧缺,无法让 Web 服务器得到很好的安全防护,往往就把一台 Web 服务器孤零零地扔在 IDC 机房里。这么处理的结果可想而知, Web 服务器要么被黑客们当成了练兵场,要么沦为肉鸡,成为下一次网络攻击的踏板,能够毫发无伤全身而退的基本是凤毛麟角。其实,只要在 Web 服务器上用防火墙保护一下,效果就要好上很多,一般普通的攻击都可以挡住。提到这里,有些老板又要邹眉头了,“防火墙好是好,就是这个成本,太,太高了一些 ….. ”。错!今天我们提供的这种保护 Web 服务器的方案并不需要额外的硬件投入,只要在 Web 服务器上安装上软件防火墙 ISA2006 ,利用 ISA Web 服务器发布功能就能享受到低投入高安全的乐趣。
我们准备了一台 Web 服务器 SERVER1 进行测试,如下图所示, SERVER1 有个测试用的网站,我们来看看如何利用 ISA2006 保护这个可怜的 Web 服务器。
 
大致思路是这样的,在 Web 服务器上安装一块虚拟网卡,将 Web 站点建在虚拟网卡上,在 ISA 上用 Web 发布规则把虚拟网卡上的 Web 站点发布到物理网卡上。 这个过程听起来平淡无奇,为什么还值得大书特书一番呢?关键就是要避免 IIS Web 侦听器的冲突 。两者都要监听80端口,前面安装 ISA 时,我们提到过 ISA 服务器上不应该有进程守护 80 端口,就是为了避免和 Web 侦听器冲突。但现在我们不得不考虑如何解决 80 端口的冲突问题,这篇文章关键之处就在这里。
解决冲突有两种方法,端口重定向和取消 HTTP 套接字 池,具体容我一一道来。但之前先将实验环境搭好,包括创建虚拟网卡,安装 ISA2006 等。搭好后的实验拓扑如下图所示。
 
安装虚拟网卡
要在 Web 服务器上安装 ISA ,首先要有两块以上的网卡,这倒用不着专门去买一块新网卡,我们在 Web 服务器上添加一块虚拟网卡就可以了。微软在系统中提供了 Loopback 回路网卡, Loopback 网卡就是能提供协议绑定的虚拟网卡,我们只要添加一块 Loopback 网卡就可以了。在 Web 服务器的控制面板中选择“添加硬件”,如下图所示,出现添加硬件向导。
 
选择硬件已连接好。
 
选择“添加新的硬件设备”。
 
选择手工添加硬件。
 
硬件类型为网络适配器。
 
网卡型号要选择微软公司的 Loopback 网卡。
 
安装完 Loopback 网卡后,如下图所示,计算机中有了两块网卡, Loopback 网卡的 IP 地址为 10.1.1 .254 255.255.255.0 ;物理网卡为 192.168.1.254 255.255.255.0 ,虽然添加的是一块虚拟网卡,但在 ISA 看来和物理网卡并没有区别。
 
安装 ISA2006
既然 Web 服务器上已经有了两块网卡,那安装 ISA2006 就没有问题了。 ISA2006 的安装过程就不具体介绍了,前面的博文已经提及,大家只要注意两点:
1)  ISA 内网的地址范围是 10.1.1 .0  255.255.255.0 ,和虚拟网卡关联。
2)  ISA 安装之前要关闭 IIS 网站,如下图所示,因为我们目前还没有找到解决冲突的办法,因此只能先把站点关闭。
 
ISA2006 安装完毕,如下图所示,好了,环境已经搭好,我们要开始了!
 
端口重定向
我们先考虑简单的解决方法,如果 Web 站点不放在 80 端口,而放在其他端口如 81 ,这样就不会和 Web 侦听器有冲突了。发布规则也恰好支持端口重定向,因此这个解决方法简单易行,如果网站对 80 端口没有特殊要求,建议用此方法解决问题。
首先我们修改网站端口,如下图所示,在默认站点的属性中将 TCP 端口改为 81
 
然后就可以启动 Web 站点了,如下图所示,右键点击默认网站,选择“启动”。
 
接下来要在服务器上创建一条 Web 发布规则,如下图所示,新建一条网站发布规则。
 
为发布规则取个名字。
 
当访问请求匹配发布规则时允许访问。
 
发布单个网站。
 
此次发布不使用证书加密。
 
被发布的网站是 10.1.1 .254 ,注意,目前 ISA 认为被发布的服务器在 10.1.1.254 80 端口,其实是在 81 端口,我们过一会要修改这个参数。
 
发布整个网站,从根目录开始。
 
对访问请求的格式不作任何限制,域名或 IP 均可。
 
目前还没有 Web 侦听器,选择“新建”。
 
为侦听器取个名字。
 
侦听器不对访问请求加密。
 
侦听器负责监听外网。
 
不对用户进行身份验证。
 
不使用 SSO 单一登录设置。
 
选择使用新创建的 Web 侦听器。
 
被发布的服务器不要求身份验证。
 
发布规则适用于所有用户。
 
如下图所示,发布规则已经创建,只是此规则中认为发布的网站在 10.1.1 .254 80 端口,我们要修改端口。
 
切换到发布规则属性的“桥接”标签,如下图所示,勾选“将请求重定向到 HTTP 端口”,端口值填写 81
 
好了,我们来测试一下发布规则,如下图所示,客户机访问 ISA 的外网地址,访问到了内网网卡 81 端口上的网站,发布 ISA 服务器上的网站成功了!
 
配置 HTTP 套接字池
端口重定向为我们提供了一种简单的解决方法,但它改变了发布网站的端口,如果某些网站出于某种原因必须在 80 端口,那我们就必须想想其他办法了。我们能否让 IIS 监听内网的 80 端口, Web 侦听器监听外网的 80 端口,这样不就可以和平共处了?有些朋友立刻想到了 IIS 中可以把网站绑定到一个指定的 IP 上,他们说干就干,立即动手,如下图所示,在 IIS 中将网站绑定到了 10.1.1 .254 上,这么做是否能如愿以偿呢?
 
如下图所示,我们用 netstat 检查端口监听情况,如下图所示,发现 IIS 监听的可不止 10.1.1 .254 81 端口,而是在所有 IP 81 端口都进行监听,这是为什么呢?
 
IIS 的这种特性称为 Socket Pooling (套接字池)。套接字( Socket )是 IP 地址和端口的组合,用于进行网络通讯,任何应用程序需要和网络上的其他应用程序进行通讯时,必须具有相应的套接字。例如 Web 站点侦听客 户的 HTTP 请求,那么它就绑定在相应的套接字( IP 地址和端口,例如端口为标准的 TCP 80 )上。在 IIS 4.0 中,微软发现当多个 Web 站点分别通过不同的套接字绑定在不同的 IP 地址时,会占用较多的系统资源,于是在 IIS 5.0 中引入了 Socket Pool (套接字池)这个概念。它的工作原理是这样的: IIS 启动时会将所有 Web 站点配置的服务端口绑定在计算机的所有 IP 地址上,而不管这些 IP 地址是否分配给了这些 Web 站点, IIS 把绑定的这些套接字称为套接字池;然后 IIS 再将套接字池中的套接字根据 Web 站点的配置分配到相应的 Web 站点,这样 避免了不同 Web 站点占用不同 IP 地址的相同 Web 服务端口时需要不同的套接字,从而减少了系统资源的占用,提高了 IIS 的性能。
听了上面的介绍,您明白了套接字池是怎么回事,在目前的实验环境中,套接字池显然起了负作用,我们要想办法消除套接字池。 Win2003 安装光盘的支持工具集中有一个工具 httpcfg 可以帮我们完成这个任务,我们先安装支持工具,在服务器上放入 Win2003 的安装光盘,如下图所示,在安装光盘的 \Support\Tools 目录下,双击 suptools.msi
 
启动安装向导。
 
同意最终用户许可协议。
 
回答完软件安装路径等问题后开始安装支持工具了。
 
支持工具很快安装完成。
 
在服务器上依次点击 开始-程序- Windows Support Tools Command Prompt ,如下图所示,输入 httpcfg set iplisten �Ci 10.1.1 .254 ,这条指令的目的是让 IIS 只在 10.1.1.254 上监听端口。
 
重启服务器让配置生效,然后我们在 IIS 中将默认网站的端口从 81 改为 80 ,如下图所示,用 netstat 查看端口状况,我们发现构想已经实验, ISA 监听外网 80 端口, IIS 监听内网 80 端口。
 
对发布规则进行修改,如下图所示,将发布网站从 81 端口改为 80 端口。
 
好了,现在测试一下,如下图所示,发布网站工作正常, HTTP 套接字池配置成功!
 
总结:两种方法中端口重定向比较简单,如果网站对端口没有特殊要求,推荐使用这种方法,否则只能借助 HTTPCFG 配置套接字池了。理论上可以考虑让 Web 侦听器监听其他端口,但其实缺乏可行性。

你可能感兴趣的:(Web,服务器,休闲,ISA,裸奔)