探讨防火墙内核监听
在前面的一系列博文中我们已经介绍了很多发布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检查防火墙内核对端口的监听状况,防火墙内核的端口盗用非常隐蔽,引发的故障不易发现,大家要注意到这个环节的问题。
本文转自yuelei51CTO博客,原文链接:http://blog.51cto.com/yuelei/89568 ,如需转载请自行联系原作者