ISA防火墙同时是网络防火墙和Web代理服务器ISA Server的防火墙组件允许它同时执行数据包过滤和应用层状态识别而Web代理组件允许它作为CERN兼容的HTTP Web代理服务器Web代理组件(实际上是ISA Server 防火墙内部的Web代理过滤器)可以对HTTP通信进行解码执行应用层状态过滤然后在转发给外部的目的Web服务器时重建HTTP通信
可是对于在受ISA防火墙保护的网络中的主机和一台外部网络的Web服务器间建立的SSL连接有点不一样当内部主机通过ISA防火墙的Web代理组件发起SSL请求时ISA防火墙可以检查HTTP头或者根据访问规则来执行过滤但是当它们之间的SSL连接建立后由于在它们之间传输的数据实行了SSL隧道加密ISA防火墙将不能再检查它们之间传输的数据
在内部Web客户和目的Web服务器之间建立SSL隧道的过程如下所示
内部的Web客户通过在Web浏览器的地址栏中发起一个对目的Web服务器的SSL对象的请求如
https:URL_Name
用户将把这个请求发送到ISA防火墙的端口(默认的Web代理侦听端口)
CONNECT URL_name: HTTP/
ISA防火墙连接目的Web服务器的端口
当连接建立后ISA防火墙返回数据给Web客户
HTTP/ connection established
从此时开始客户直接和外部的Web服务器通信而不再经过ISA防火墙的Web代理组件因此ISA防火墙不能再对封装在SSL隧道中的数据和命令执行应用层状态识别
当外部Web服务器使用标准的SSL端口TCP 时一切都是很正常的但是有时候你的Web代理客户也会使用其他的端口来访问SSLWeb站点例如Web代理客户可能会使用端口替代来访问银行的Web站点这样会导致SNAT客户和防火墙客户产生错误因为ISA防火墙默认会转发SNAT客户和防火墙客户的HTTP连接到Web代理过滤器客户可能会看见空白页或者指出该页面不能访问的错误页
这个问题就是Web代理过滤器会转发SSL连接到TCP端口如果客户想连接其他不使用TCP 端口的SSL站点那么连接尝试将会失败你可以通过扩展SSL隧道端口范围来解决这个问题为了做到这一点你需要下载Jim Harrison的脚本然后运行时输入你想让ISA防火墙Web代理组件使用的SSL隧道端口范围
执行以下步骤以扩展SSL隧道端口范围
下载 isa_tprjs 文件(_tprjs)然后将其复制到ISA防火墙计算机上注意不要使用ISA防火墙上的浏览器也不要在ISA防火墙上运行其他客户端程序如电子邮件客户端等等
双击运行 isa_tprjs 在第一个对话框上你可以看到你当前的状态信息This is your current Tunnel Port Range list点击确定
此时NNTP端口显示出来了点击确定
然后SSL端口显示出来了点击确定
现在复制isa_tprjs这个文件到C盘根目录然后打开一个命名提示符窗口输入以下命令
isa_tprjs /?
你会看到以下对话框
为了添加一个新的SSL隧道端口例如 则输入以下命名行敲回车
Cscript isa_tprjs /add Ext
此时你可以看到如下的信息提示你命令运行成功
另外你还可以下载Steven Soekrasno编写的NET程序ISATprezip()然后在ISA防火墙上安装这个程序提供了一种更为简单的方法来允许你修改SSL隧道端口范围下图是此程序的运行界面
输入你想定义的端口范围和名字然后点击Add Tunnel Range按钮再点击Refresh你就可以看见列表中新的SSL隧道端口范围
注意以上的情况都只是通过Web代理过滤器访问HTTP协议的情况如果你对HTTP协议取消了Web代理过滤器的识别SNAT客户和防火墙客户通过ISA防火墙的HTTP访问将不会转发到Web代理过滤器此时你可以通过定义一个使用其他SSL端口的协议和允许访问此协议的出站访问规则来实现客户对外部非标准SSL端口(TCP )的Web站点的访问