IIS防盗链,防迅雷的唯一方案(safe3if)
最近一周多公司的网站反应速度特别慢,ping一下速度都超过1000ms,会员也开始抱怨。向机房反映以后,机房说瓶颈在我们的防火墙设备那里,不在他们机房的线路。连到设备上一看,带宽占用稳定超过25m,这台设备的最大带宽也就是25m,看来的确是达到它的瓶颈了。
本来考虑换个更大的防火墙,但是后来想一想,以目前网站的pv和内容来看,也没有理由占用这么大带宽啊。
于是想办法分析日志,下载了几个比较大的日志文件,怎么分析呢?最后找到nihuo web log analyzer 3这个东西,虽然是试用,但是并没有功能限制(有时间限制),分析完之后清楚的列出访问量比较大的url(可惜只能按点击数列出来,不能按文件实际占用的流量,当然啦,这是日志文件本身的限制)。排在前两位的都是压缩文件,下面还有很多wmv的视频文件。而且2000多个ip发起了20几万次访问,而且,这些访问都不在google的访问记录里。很明显,这些都是多线程下载导致的。在文章页里想找到文件的下载地址需要登录,那几乎可以肯定,是迅雷的自动镜像功能了。
接下来就是想办法限制用户的下载,不让下载是不可能,于是搜索下载限速和限制每用户的线程的东西,找到了几个组件,包括2003server_chajianforiis,emiislimitts还有另外两个相似的东西,都是isapi的工作模式,但是都有一个共同的问题,就是狂占cpu,基本不会有空闲。而且也没有明显降低网站的流量。
直到今天下午再次研究这个问题,终于在一篇文章里看到一条线索,找到了safe3if,关键是,它没有限速功能,但是可以完全屏蔽迅雷。还有些其它的功能,比如防数据库注入之类的。作为isapi装上以后,网站的响应速度立马变快了,而且cpu使用率几乎没有变化。虽然可能会导致用户无法下载大文件,但是,作为目前最佳的也是唯一的解决方案,总算是解了燃眉之急。
下面附软件的下载地址:
下面是官方的介绍,经过测试确实不错
你的网站是否经常遭到非法攻击?是否因盗链或p2p多线程下载而耗尽带宽资源?是否没钱购买网上的此类软件?那么请使用safe3 iis firewall吧!safe3 iis firewall是一款完全免费的iis防护软件,内置如下功能,主要防止黑客攻击和多线程下载占用带宽。
safe3 iis firewall的功能:
防止sql注入式攻击;
防止溢出代码攻击;
防止特殊字符构成的url利用;
防止xss跨站提交;
防止构造危险的cookie;
防止迅雷等p2p多线程下载(限制只能用ie下载)
安装:
1 新建c:\windows\safe3和c:\windows\safe3\log\目录,将safe3if.dll, safe3if.ini复制到c:\windows\safe3(你也可以复制到其它适当的文件夹下面,注意若不能加载通常是权限问题,给这两个文件everyone完全控制权限就可以了)。
2 打开iis管理器,选择“默认网站”,右击“属性”,选择“isapi筛选器”,点击“添加”,输入筛选器名称:safe3if,可执行文件选择上面复制到c:\windows\safe3下面的safe3if.dll文件,点“确定”。
3重启iisadmin service服务。(在计算机管理—-windows服务里面,或使用命令net stop w3svc ,net start w3svc)
4 完成。
日志:
safe3 iis firewall能够将ini配置文件加载,黑客攻击记录都会保存到指定的日志文件里。因为它具有很大的性能开销,因此建议将它日志的记录等级设为0,只有需要查看攻击的时候,可以设置为110。
#非法日志记录位置
safe3log c:\windows\safe3\log\safe3 (会生成 例如:safe3.1078.log,注意不能生成日志是对该目录没有写权限,日志不要和safe3if.dll放于同目录)
#日志的记录等级
safe3loglevel 110
改为其它值则不记录日志
防迅雷下载:
safe3allowmultidown 0
设为0则阻止,1则放过
阻止所有多线程下载软件,如果文件被下载,你可以看下详细下载地址,这是迅雷从其它地方下载的。(对人解释真麻烦!还是简单说下吧!)
文件防盗链:(考虑效率问题,耗资源,而且网上也有免费的,所以去掉了)
可实现gif/jpg/png等图片或文件的防盗链,盗链页面显示的是/blocked.png。blocked.png放到网站根目录,我们可以在上面打上自己网站的版权标志和防盗链声明。
具体可查看safe3if.ini文件
#防盗链规则(允许自己的网站和搜索引擎)
#下面第一条规则改为自己的网站,去掉前面的#号就可以防盗链了
#rewritecond %{http_referer} ^(?!https?://(?:www\.)safe3\.cn/) [i]
rewritecond %{http_referer} ^(?!https?://(?:www\.)google\.com/) [i]
rewritecond %{http_referer} ^(?!https?://(?:www\.)baidu\.com/) [i]
rewriterule \.(?:gif|jpg|jpeg|png|bmp)$ /blocked.png [i,l]
要允许一些例外的网站比如google,baidu以及其它一些友情链接的网站引用。本方法基于http_referer判断,但对盗链已经足够了。
反黑客:
safe3urllenth 128
请求的url长度,超过此长度则阻止
内置如下功能
防止sql注入式攻击;
防止溢出代码攻击;
防止特殊字符构成的url利用;
防止xss跨站提交;
防止构造危险的cookie;
具体部分攻击记录就放在日志里,很强大,不多言了,自己测试去。
url重写:(考虑效率问题,耗资源,而且网上也有免费的,所以去掉了)
我也不在详细介绍。具体有关正则的说明大家可以用google搜索,主要有利于搜索优化。
格式:
rewriterule []
url-pattern:匹配的正则表达式(必需)
replacement-string:要替换的字符串(必需)
modifiers:有关对rewriterule的操作标记。可选选项。
上一篇: 解决HTML5中滚动到底部的事件问题