使用签名封锁QQ出现的新问题及对策
<br> 前段时间在做禁止QQ使用HTTP代理的测试实验的时候,发现了一个新问题:在ISA2004的配置HTTP中签名中的“请求URL”填入“tencent.com”,在使用HTTP80类型的代理时,QQ依然能登陆。为了找出原因,我进行了以下的实验:<br> <br> <b>实验环境:</b><br> 所用客户端类型:SNAT<br> <br> ISA配置的策略:允许所有出站协议->从内部->外部—>应用于所有用户;<br> <br> 在此策略中配置HTTP,在签名中的“请求URL”填“tencent.com”<br> <br> 所使用的外网HTTP代理:218.30.17.115:80<br> <br> <b>问题描述:</b><br> 正常情况下,如果你进行了上述配置,测试HTTP代理的时候会得到下图的结果:<br> <center> <img src=/bbs/attachments/computer/20081204/200812510132818777801.png ></center><br> <center>图1</center><br> <br> 原因可以从下面的图中看出:<br> <center> <img src=/bbs/attachments/computer/20081204/200812510132823477802.png ></center><br> <center> <img src=/bbs/attachments/computer/20081204/200812510132828177803.jpg ></center><br> <center>图2、图3</center><br> <br> 但是为什么通过这个HTTP80代理,QQ还是可以登录呢?看下图:<br> <center> <img src=/bbs/attachments/computer/20081204/200812510132832877804.gif ></center><br> <center>图4</center><br> <br> 看到不同了吧?HTTP的请求URL中出现的竟然是服务器的IP地址!这就是QQ依然能够登录的原因!我尝试了几次登录,都成功了,而且出现的QQ服务器的IP地址也有多个(我看到的有2个,其他没有实验)。如果还是使用在签名中过滤请求,当服务器数量增加时,不是一种很好的方法。<br> <br> 解决方法<br> <br> 方法1:<br> <br> 我们可以换一个角度思考一下,看看HTTP请求中的数据包的特点:都使用了Connect Method。按照这个特点我们可以在http配置的“方法(methods)”上下手:<br> <center> <img src=/bbs/attachments/computer/20081204/200812510132832877805.png ></center><br> <center>图5</center><br> <br> 在“阻止指定的方法”添加一个Method:CONNECT(注意大小写)。<br> <br> 我们在来看看结果:<br> <center> <img src=/bbs/attachments/computer/20081204/200812510132842177806.png ></center><br> <center> <img src=/bbs/attachments/computer/20081204/200812510132842177807.jpg ></center><br> <center>图6、图7</center><br> <br> 这回使用HTTP80代理QQ就无法登录了,问题解决。<br> <br> 方法2:<br> <br> 按原来的思路,既然出现了IP,我们还是使用http过滤签名,不过这次新建一个签名选择“请求URL”签名内容为“218.18.95”,如下图<br> <center><img src=/bbs/attachments/computer/20081204/200812510132842177808.png ></center><br> <center>图8</center><br> <br> 说明:暂时发现的直接用IP连接的地址都是218.18.95.x,故直接阻止218.18.95,如果有其他段可以再添加相应IP段。<br> <br> <b>说明</b><br> 1、以上实验仅针对HTTP80代理进行,在开放所有出站协议的情况下,使用其他HTTP代理QQ还是能登录,这是由于配置http中的签名只对发往外部的tcp 80的数据进行检查。如果更换端口,那么就不会接收isa的检查,因为isa认为它不是http数据;<br> <br> 2、ShenXu关于CONNECT Method的说明:经过测试,使用外界代理,如果只浏览网页,只用到get ,post这两个命令,connect不会出现,只有在使代理服务器访问其它端口,比如抓到的443端口的时候才会出现connect命令,严格说, connect不是http的命令,它是proxy的命令,如果封connect的确会造成其它的非网页动作的中止,但是真正的http协议不会阻拦;<br> <br> 3、使用方法1后,针对QQ不再需要过滤http签名;<br> <br> 4、以上情况可能比较特殊,我没有时间测试其他HTTP80代理,各位可以测试一下。 <
页:
[1]