探讨防火墙内核监听
在前面的一系列博文中我们已经介绍了很多发布
Web
站点的内容,今天我们来发布一些其他的服务器,然后再来探讨一下发布这些服务器和发布
Web
站点有什么区别。我们先举两个例子,发布内网 的
DNS
服务器和终端服务器,拓扑如下图所示,
Perth
是要发布的终端服务器服务器,
Denver
是要发布的
DNS
服务器。
首先我们来发布
Perth
上的终端服务器,在
ISA
服务器上右键点击防火墙策略,如下图所示,选择新建“非
Web
服务器协议发布规则”。
为发布规则取名为“发布
Perth
上的终端服务器”。
终端服务器
Perth
的
IP
为
10.1.1
.6
。
选择使用的发布协议,注意,发布规则使用的协议 方向都是入站,而访问规则使用的协议方向都是出站。
监听外网的访问请求。
完成服务器发布规则向导。
终端服务器发布规则生效之后,我们在外网客户机
Istanbul
上测试一下。在
Istanbul
上依次点击
开始-程序-附件-通讯-远程桌面连接,如下 图所示,填入
ISA
服务器外网
IP
作为要连接的远程桌面服务器。
出现远程桌面的连接界面,如下图所示,输入用户名和口令登录系统。
OK
,我们用远程桌面登录进入了
Perth
,发布终端服务器成功了!
这个实验很简单,我们再来尝试一下发布内网的
DNS
服务器,如下图所示,在
ISA
服务器上新建“非
Web
服务器协议发布规则”。
为发布规则取名为“发布
Denver
上的
DNS
服务器”。
填入
DNS
服务器地址
10.1.1
.5
。
这次使用的发布协议是
DNS
服务器。
监听外网的访问请求。
结束发布规则。
好了,我们还是在
Istanbul
上测试一下发布的效果,如下图所示,
Istanbul
已经在
TCP/IP
的设置中将
DNS
服务器指向了
ISA
的外网网卡。
在
Istanbul
上测试一下
DNS
服务器的解析能力,如下图所示,域名解析成功,
DNS
服务器的发布也没有问题。
好了,举了两个发布服务器的例子之后,我们要考虑一下为什么
ISA
要强调这些服务器是非
Web
服务器,发布
Web
服务器和发布非
Web
服务器有什么区别呢?区别就在于监听模式,发布
Web
服务器时
ISA
委托
TCP
监听端口,而发布非
Web
服务器时
ISA
采用防火墙内核监听端口。
例如刚才我们发布了终端服务器,那
ISA
的外网
IP
肯定要开放
3389
端口,否则外网用户无法访问终端服务器。我们 在
ISA
上检查一下端口监听状况,如下图所示,我们 用
NETSTAT –ANO | FIND “3389”
来查看
3389
端口的监听状况。奇怪的事发生了,
3389
端口竟然没有进程监听,这是怎么一回事?外网访问者连接
3389
端口时为什么不报错呢?
其实,
3389
端口是有进程监听的,刚才我们说了,发布非
Web
服务器时由防火墙内核负责端口监听。由于防火墙内核工作在数据链路层和网卡驱动 之间,因此我们用
NETSTAT
命令查看不到防火墙内核对端口的监听状况。那怎么才能知道防火墙内核在监听哪些端口呢?我们可以使用 一个工具
fwengmon
,这个工具可以在微软网站下载,从文件名可以看出,这个工具可以监控防火墙内核引擎的工作。我们在
ISA
上允许
fwengmon /c
,如下图所示,我们可以很清楚地看到防火墙内核正在监听
3389
,
53
等端口
。这下我们明白了,端口监听不一定非要委托
TCP
或
UDP
,防火墙内核也可以进行隐性的端口监听。
那接下来再考虑这个问题,如果
ISA
用防火墙内核监听
3389
端口,同时又委托
TCP
监听
3389
端口,那两者的优先级哪个高呢?
从理论上分析,应该是 防火墙内核优先级更高,因为解码后的物理层数据先要经过防火墙内核才能到达
TCP
。我们用实验证实一下,我们先停止
ISA
的防火墙服务,然后在
ISA
上打开远程桌面连接,如下图所示,最后再启动防火墙服务。
如下图所示,现在
ISA
服务器上
TCP
驱动程序和防火墙内核都在监听
3389
端口,它们谁的优先级更高呢?我们用
Istanbul
连接
3389
来测试一下,如果能连接到
Perth
的远程桌面,那说明是防火墙内核优先级高;如果访问被
ISA
拒绝,那说明是
TCP
优先级高,因为
ISA
不允许外网访问本机的远程桌面。
在
Istanbul
上测试,结果如下图所示,
Instanbul
连接到了
Perth
,这证实了防火墙内核的优先级确实要比
TCP
驱动高。
总结:以后如果遇到
ISA
发布服务器的故障,一定不要忘了可以用
fwengmon
检查防火墙内核对端口的监听状况,防火墙内核的端口盗用非常隐蔽,引发的故障不易发现,大家要注意到这个环节的问题。