走走歪路,利用GFW来防DDOS攻击
一朋友的香港空间昨天挂了,起初是数据库连接出错,后来干脆不能访问了,出现Service Unavailable。
询问空间商,说是:
這個域名是由於有太多的連接連到這域名,已超出這個域名的連線上限,所以才會出現無法顯示或連不到數據庫。這個域名的網站連線限制是 500。
我查了站长统计,发现IP和PV数和以前皆无甚出入。
找空间商要了近两日的空间访问日志,发现前天的日志文件只有22M左右,而昨天的日志(未满24小时)竟达169M,相差甚大。
分析了昨天的日志,发现有500多个不同IP共100多万次访问都是针对 /xxx.asp ,这个页面是产品的详情页面, 而正常情况下,用户是不可能访问到这个页面的,而只能通过其他页面的链接访问到/xxx.asp?id=xxx(必须带ID)。
而恰恰朋友用的这套程序居然没对这种不带ID的情况做处理,直接让数据库查询失败而出错。这样的错误达到一定量必然引起数据库挂掉,后来我修复这个错误后,但随着攻击力度的加大,突破了IIS分配给空间连接数的上限,还是彻底挂掉了。
从技术上分析,这应该算是DDOS攻击,近年常有发生,一些大型网站都屡屡遭殃,这小小的虚拟空间又如何禁受得起?!
今日空间商帮忙更换了IP,我也是灵机一动,想到一个绝妙的办法,竟然可以利用GFW来防御DDOS :
若当访问者未带ID时,认为是非法访问,自动跳转到/?minghui。
注意问号后面的词,这是被GFW屏蔽的一个词,只要用户访问的网站URL中包含这种词,用户会在短时间内(大概一分钟吧)不能访问该网站。(相关示例)
这样一来,世界上最强大的防火墙就为我挡掉了许多攻击,一直被我们痛恨的GFW终于为我立功了!
最后总结一下,此法需要注意两点:
1. 所托管服务器必须非大陆空间(而攻击源来自大陆);
2. 真正应用时,要在你的程序中判断那些是来自DDOS的访问比较困难;
此文仅供技术参考,若发生不良反映,后果自负!
原文:http://soido.org/blog/857
聪明
呵呵,GFW立功了!