当一台肉鸡向WEB服务器发布TCP SYN洪水工具时,它是不会送任何TCP ACK回来的。如果保护层没有收到这个TCP ACK,就发现了这个源地址来的报文不是正常的报文,以后也不会让这个源地址来的报文通过了。从而达到了过滤DDOS网络流量的目的。
尝到了胜利的喜悦后,张大民也顾不上睡觉,又好好分析了TCP的状态装换图。这次,他主要是找有什么报文能使客户端自动终止一个TCP链接,然后在自动重试的。他发现,大部分应用层的协议,当一个TCP链接出现异常后,通常情况下都要进行重试,在建立新的TCP链接,直到三到四次。这样,当服务生敲门送上早饭的时候,黑客张大民又有了另一个TCP客户有效性验证方案。
图 4
这次,当保护层拦截到客户端发布来的TCP SYN报文后,保护层送一个TCPACK,而不是TCP SYNACK回去。根据TCP的状态转换图,当客户端接收到这个TCP ACK报文时,客户端认为TCP的链接出了问题,会向服务器端发一个TCP RST的报文来中断目前的TCP链接。而使用TCP的应用层协议,如HTTP通常情况下会重试。如果是一个有效的HTTP客户,而不是一个发送DDOS网络流量的肉鸡,这个客户会重试。保护层会让这个重试的报文通过,而到达正常的WEB服务器。
张大民已经有点崇拜自己了。这个想法就更天才了,这个办法只是拦截TCPSYN,然后送一个TCP ACK回去,如果收不到客户端发回来的TCP RST,那么客户端就肯定是发送DDOS网络流量的肉鸡。如果不是,客户端自己会重新建立另一个TCP链接。而保护层在收到这个客户发来的TCP RST后,会让这个客户的新的TCP链接通过。保持肉鸡的网络流量被掐断,也保证了有效的客户可以正常访问网站。
如果我是做市场的,我就把这个中间层叫作“智能Anti—DDOS防火墙”沾沾自喜的想。
DDOS防护方案的系统实现思路
这个系统设计最核心的思想就是保护层不保留任何TCP的状态信息。正是因为这样,保护层才能比一般的WEB服务器接收流量大的多的TCP网络流量。而且保护层也做到了对正常的网络流量和DDOS的网络流量的区分,保证让正常的网络流量通过,而拒绝DDOS的网络流量到达WEB服务器,从而保证了WEB服务器的资源只服务于正常访问网站的客户。
张大民一边想, 一边理顺着自己的思路
那么在一个实际运行的网站中,这个系统应该放在哪里呢?最直接的想法就是把这个保护层放在网站服务器的前面,就像一般的企业网把防火墙放在企业网的前面一样。这样,当没有DDOS攻击网站服务器时,保护层就让正常访问网站的网络流量通过。当有DDOS攻击网站服务器时,保护层就启动反击装置,把DDOS的网络流量过滤掉。
这样的设计应该是可行的。张大民想。但问题是,在打多数情况下网站都不会遭到DDOS的攻击,把这个保护层一直放在网站服务器前面,接收网络流量,是否有点太浪费了?最好的方法是,通过路由来指导网络流量,当没有DDOS网络流量攻击网站服务器时,让所有的网络流量都不经过保护层,直接到达网站服务器。一旦遭到攻击,就通过路由把所有的网络流量都现转到保护层,让保护层看一下,把DDOS的网络流量过滤掉。
这样的设计应该是比较优化的。张大民在想张大民知道,通过路由自动转移网络流量的方向不是什么困难的技术问题。当网络流量的建模和预警装置发现DDOS网络流量时,象网络中自动插入静态路由或者BGP路由来指导网络流量的方向,这些在现代网络中已经是很常用的技术了。
图 5
在这个方案中,保护层首先要对网站的流量进行统计建模。然后保护层一直监视着网络的流量状况,当流量出现异常时,保护层进入反击状态,首先改变访问网站服务器的网络流量的方向,让这些网络流量都首先都经过保护层。保护层就用源地址验证的方法对这些访问流量进行过滤,过滤掉DDOS的网络流量,让正常的网络流量传过保护层,正常访问网站服务器。
看着自己的设计方案,张大民突然想起了雷锋同志日记里的话。“对待同志要像春天般的温暖,对待工作要像夏天一样火热,对待个人主义要像秋风扫落叶一样,对待敌人要像严冬一样严酷无情。”
这也正是DDOS反击系统设计的准则之一啊,张大民不禁笑出声来:
“对待正常的网络访问流量要像春天般的温暖,对待访问网站的客户要像夏天一样火热,对待被利用的肉鸡要像秋风扫落叶一样,对待真正的DDOS网络流量要像严冬一样严酷无情。”
而且雷锋同志的这些可都是要手工去实现的。DDOS反击的方法必须是全自动化。
结束语
参考资料:
RIVERHEAD产品
ARBOR NETWORK产品
NANOG.ORG
附图1:不同类型DOS网络流量增长趋势分析
张大民站起身来,心中充满了工作的喜悦。这也正是他为什么热爱网络安全工作的原因之一。网络安全领域充满了挑战性。魔高一尺,道高一丈。亦或道高一尺,魔高一丈。攻防之间此消彼长,永远是在动态之中在寻找平衡。
不管是哪一方,当经过冥思苦想,找到解决方案,在攻防战中占据主动时,那种喜悦的心情,只有经历过的人才知道。在这次经历中,黑客张大民也深深感觉到基本功对于网络安全工作的重要。几乎所有学过计算机网络的人都知道TCP的状态图,但又有多少人认真的研究过呢?能否不但知其然,还知其所以然,往往是区别一个有创意的黑客还是一个循规蹈矩的网络安全工程师的主要原因。
张大民正高兴着,突然间一个想法又击中了自己。自己光顾考虑TCP了,那么哪些基于UDP的应用,如果遭到了DDOS的攻击该怎么办呢?张大民又开始挠脑袋了。因为他知道,同TCP不同,UDP是没有状态的,就和IP一样。UDP和IP唯一的区别就是UDP提供了应用层的端口。而他这两天冥思苦想出来的解决方案完全不适合UDP,因为自己的解决方案是以TCP的状态图为根据的。
这个就更难了。难道自己又要闭关一次不成?但张大民心里已经有了些准备。因为通过这两天的思考,他知道,验证一个客户主机是正常的主机,还是被OWN的肉鸡被用来发动攻击,关键就是看远程的客户主机是否遵循RFC的协议来运作。如果是,那就基本上是正常的主机。否则,就很有可能是被OWN的肉鸡。应该还是有办法的,张大民暗想。实在不行,如果自己实在没办法了,就去找江南小镇的神秘老人……
转截请注明:文章来自 pc捍卫者 http://www.pchwz.com
本站发布此文为传递更多信息之目的,不表明pc捍卫者赞同其观点