Tuesday, June 29, 2010

走走歪路,利用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的访问比较困难;

此文仅供技术参考,若发生不良反映,后果自负!

28 comments:

zerray said...

orz

Tweets that mention 走走歪路,利用GFW来防DDOS攻击 – 做爱做的事! Love it, so I do ! -- Topsy.com said...

[...] This post was mentioned on Twitter by Peter Guo, Jerry Lee ♺ , zhubaining and others. zhubaining said: RT: @akira_cn: http://soido.org/blog/857 牛人用GFW来防DDos攻击 // 赞,要好好利用政府的高科技。。。 [...]

fff said...

会不会到达一个阀值,然后服务器ip被gfw彻底block?

honk said...

回 #3
未知, 危险动作, 切勿模仿, 呵呵.

Ethan said...

博主这招很有创意,赞一个。

Eric said...

Haha, very nice ;)

honk said...

汗! 哪位兄弟转到Twitter上了, 今日访问量飙升, 低调! 低调!

L42y said...

做爱
做的事
做什么事?

ruyalplaza said...

防范cc页面攻击可能可以,ddos是发送无用的数据包,源地址为假 这个办法可能不行

赞一个 said...

强人

honk said...

回ruyalplaza,

是的,
首先空间必须在大陆之外而攻击源必须来自大陆,
其次要真正判断出哪些是攻击并不容易.

pf_miles said...

也不能说利用gfw完全把攻击挡住了吧,据我了解,gfw只是先于你的服务器往客户的浏览器发送了一个错误信息;但实际上这次请求还是到了你的服务器的,也就是说这次请求的资源消耗还是存在的

honk said...

回pf_miles ,
兄弟所言不假, 第一次请求总是会发送到服务器的.
我做了测试, 一分钟内,访问不带敏感词和带敏感词的url, 分别刷新20次, 查看服务器log发现:
不带敏感词的20次访问都写入了log, 而后者只写入了3次.
经多次测试, 有时候也不只3次, 但被过滤的还是大部分.

雅蠛蝶 said...

这种方法很危险的~

OceanBan said...

博主好想法。

OceanBan said...

博主的文中的广告是自动生成的还是手动添加到啊,请博主赐教。

honk said...

回OceanBan,

我是手动添加的Adsense代码, 其实WP有相关插件可以自动加

cho said...

厉害啊……

ruyalplaza said...

谁实验下利用gfw发动ddos攻击,哈哈

走走歪路,利用GFW来防DDOS攻击 | 细节的力量 said...

[...] 走走歪路,利用GFW来防DDOS攻击 Posted on 七月 3, 2010 by xijie 来源:http://soido.org/blog/857 [...]

走走歪路,利用GFW来防DDOS攻击 | 创造 said...

[...] 原始来源:http://soido.org/blog/857 备注说明:好神奇~~ 一朋友的香港空间昨天挂了,起初是数据库连接出错,后来干脆不能访问了,出现Service Unavailable。 询问空间商,说是: 這個域名是由於有太多的連接連到這域名,已超出這個域名的連線上限,所以才會出現無法顯示或連不到數據庫。這個域名的網站連線限制是 500。 [...]

ssggfish said...

哇哈哈,创意真是好啊。 从BUZZ过来

Twitter Weekly Updates for 2010-07-04 « 私房话 said...

[...] @dingchen: RT @CatChen: RT @akira_cn: http://soido.org/blog/857 牛人用GFW来防DDos攻击 [...]

darasion said...

这个办法好。推广之。

加固你的ECSHOP,阻止CC攻击 – 做爱做的事! Love it, so I do ! said...

[...] 继前几天帮朋友的一个站阻挡了DDOS攻击后,他的另一个站又遭受了CC攻击。 该站用的是ECSHOP系统,朋友给我截图,底部显示当前在线人数接近3000。呆我去访问时,网站已经挂掉,显示: The table ‘ecs_sessions’ is full [...]

瑶哥 said...

请问“若当访问者未带ID时,认为是非法访问,自动跳转到/?minghui。”
怎么让识别访问者是否带ID?这个ID是什么???
然后这个跳转是怎么做的?!

LuciferSheng said...

GFW检测是双向的。国外访问国内服务器如果链接也有敏感词照样无法访问。

328487492 said...

老大的这招真的不错啊。