很多小型企业限于资金紧缺,无法让
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
侦听器监听其他端口,但其实缺乏可行性。