2009年8月11日星期二

树大招风



郭德纲说“爷秀于林,孙必摧之”。继国内微博纷纷“被自杀”后,在美国的鼻祖 Twitter 也连连中刀(小道消息说黑手是北极熊),让 DDoS (Distributed Denial of Service) 整得半身不遂。这种攻击的可怕之处在于迄今没有完美的防范措施。三个月前的那次暴风影音事件后,我在饭否写下:

暴风影音再次告诉了我们 DDOS 的可怕,发动海量客户端集中火力向一个目标进攻,再强大的目标也抗不住。这方法不新鲜,文革就是这么个思路,多少显赫一时的大人物也没架住小将们的轮番批斗。
2009-05-21 14:00 通过手机上网


出于技术从业者卖弄的本能,我再补充两句。DoS,比较好防范,因为如果只有一个人骚扰你,你大可把他屏蔽掉。而加了一个 Distributed 事情就难办了,骚扰你的是“被一小撮别有用心的人煽动利用的不明真相的广大群众”,他们中哪些是善意的哪些是恶意的你根本无从筛选。结果只有崩溃...

给这个问题找出路,列举可能的对策如下:

1、启发民智,让他们不那么容易被煽动利用。这事微软一直在干,为了不让大家的电脑变成黑客控制的“肉鸡”,安全补丁一个接一个。这种做法和教育差不多,然而劝人向善不具强制性。有教育必有反教育。如果用户非要装一个 DDoS 的客户端程序(比如暴风影音),就像受过高等教育的博士研究生非要去参加邪教集会,你拦不住,这是他们的权利,这是自由的代价。

2、法律约束。比如 IE 默认的设置里,一个用户访问一个网站的同时链接数不能超过两个(这就是为什么你用 IE 无法在同一个网站同时下载多个文件。有解法,改个注册表值就能放开)。又比如 XP/Vista 里的一个系统文件(tcpip.sys)限制了用户同时开启的连接数(但电驴、BT 的老鸟都知道怎么替换掉这个文件)。与前者相比,这种做法多了一些强制性,但也并非不能破解。违法的事也有人干,只要收益和风险成比例,或法不责众。

3、追究首恶。经过事后分析,有时能找到最初煽动发起攻击的那“一小撮别有用心的”领头者,可对其惩戒,杀一儆百。与前面两种防范群众的方法相比,这方法的规模小成本低,但缺点也显而易见 —— 秋后算账于事无补,也不能保证下次同样的事不再发生。更无奈的是,煽动者往往可以逃脱制裁:如果对美国服务器的攻击真是罗刹国政府所为,如果街头排外打砸抢的“爱国主义运动”是本国政府默许甚或煽动,正如文化大革命是伟大领袖发动,谁来制裁呢?

4、认输服软。这说的是被攻击者。为了避免进一步的损失,放弃抵抗,不论对错先认错服输再说。互联网上的受攻击的服务器,拔线断电即可。陷入群众批斗或暴力围攻的受害者,乖乖认错,好汉不吃眼前亏,苟全性命待将来平反或死后昭雪 —— 伽利略就是这么干的 —— 他要是上了火刑架谁来帮他整理毕生的学术成果?

5、韬光养晦。出名是件好事,可出了名以后难免被贼惦记。我们的先贤在这方面有过很多至理名言,大意是教导我们,闷声发财,别强出头。可树欲静而风不止,比如本文开头提到的那个自称“非著名”的郭德纲,名人的麻烦一点也不少。

6、去中心化。如果 Google 只有一台服务器,它肯定活不到今天。Google 的强大在于它的构架在设计之初就保证了在部分节点失效的情况下,整个系统仍能正常工作。用分布式(Distributed)构架抵御分布式攻击。技术带给我们的启发就是:权力应尽可能分散。就此打住,再写下去就变成了枯燥的政论文了。

以上就是我现在能想到的所有防范 DDoS 攻击的方法,没啥新鲜的,不过是空谈些前人已经做了或正在实践的东西。或许该有更好的方法,以后想到了再补充。



—— 乱枪之下无人生还,Neo/"The One" 他只是个传说

1 条评论:

geoxia 说...

坦白地说,写这个是因为我刚参与了一起群体性事件。网上发起的明信片运动“郭宝峰,你妈喊你回家吃饭”我有心掺和,但没空去邮局。于是去 www.geekcook.org 参加捐款,认领了一个带 V 面具的打火机。对电影《V》的认同,和对星星之火寓意的心照不宣,说明我也有“不明真相”的潜质。