标题:
应对Mini-DDoS攻击
[打印本页]
作者:
凌哥
时间:
2004-5-25 17:46
标题:
应对Mini-DDoS攻击
Mini-DDoS (mDDoS)是一种新的危险,这种危险威胁着互联网上的所有商业用户和个人用户。这种分布式拒绝服务攻击(Distributed Denial of Service)规模很小,小到足以躲过ISP和代理的安全雷达,但是却强大得足以切断Cable modem或者DSL modem连接。我曾经经历过一次对于我连接的攻击(我用它来完成工作,其他的家庭成员也使用它),当时我完全无能为力,作恶者能够肆无忌惮地进行攻击,而不用担心遭到报复。
Cable modem和DSL modem连接帐户对于美国经济做出了越来越巨大的贡献。只要想想使用这些连接的远程往返者和中小型企业,想想通过这些连接进行的电子商务你就能明白这种连接的意义。整个国家安全依赖于经济的活力,从这个意义上说,mDDoS将会极大地危害国家安全。
最近,我收到了不计其数的、有趣的建议,这些建议告诉我如何能够阻止针对我家庭办公室连接的mDDoS攻击。最普通的建议是拔掉我的路由器,然后再重新插上它。这个建议背后的假设是如果我的Linksys路由器能够在每次重新连接后,都从我的ISP那里获得一个IP地址,所以重启我的路由器能够迫使我的ISP为路由器分配一个新的地址,然后mDDoS(它是针对旧的IP地址的)就会失去攻击的方向。
不幸的是由于种种原因,这个方法并不能够解决问题。首先,虽然我的ISP分配的是动态的IP地址,但是分配给我的IP地址却无论如何都不会改变。虽然我想尽方法想要摆脱就的IP地址,获得一个新的IP地址,我的路由器总是会获得同一个IP地址。而且,即使这个方法能够奏效,这也只能阻止一次攻击。却不能够阻止这种攻击再次发生。而攻击者迟早会找到新的IP地址。我不希望每一次在我觉得自己遭到mDDoS攻击的时候,都要跑到地下室去,重新启动路由器。
很多读者问到个人防火墙是不是会有帮助。对于我来说(我有好几台PC都使用Linksys防火墙/路由器,并分享同一个互联网连接),答案是否定的。我的电脑里已经有防火墙了。在我家的局域网里,PC互相之间对话毫无问题。MDDoS所攻击的是连接到cable modem的Linksys路由器。换句话说,mDDoS攻击所产生的通信从来没有达到我网络内部的PC机上。
有几家ISP写信来说他们已经意识到了这个问题,并且希望做些什么来阻止这种攻击,但是令我吃惊的是:对于他们来说确定问题所在是如此困难。主要的问题在于解决anti-DDoS解决方案的载波信号的可量测性。这些解决方案显然采用了正确的技术来解决ISP和载波问题,但是当遇到大ISP的巨大通信流量时,它就显得力不从心了。
我所得到的最好的建议来自于Greg Scott,他是InfraSupport Corp.的CTO和创始人。Scott的一个特长就是用Linux自定义防火墙。Scott建议我在我的路由器上进行一个简单的安全漏洞测试,以检查它的设置是不是帮助了mDDoS攻击,而不是采取措施。Scott怀疑攻击者使用的技术依赖于让路由器告诉他们哪一个端口是开放的,并等待下一个指令。在网络行话里,这是一种确认或者“ACK(Acknowledgment)”。除了告诉攻击者端口的状况,ACK还占用了路由器的处理能力。
我所说的端口可能和你路由器上连接以太线缆的端口不同。互联网所使用的协议(也就是互联网协议或IP)使用端口的概念,根据产生通信应用的不同区分网络通信。例如,如果你使用浏览器去浏览一个网络服务器,你的浏览器产生的大部分通信都使用80端口(HTTP的默认端口,HTTP是使网络得以工作的基础协议)。在接收端当通信到达物理服务器,该服务器就用这个端口的信息以决定服务器上哪一个应用应该为这个请求提供服务。如果是80端口,它就把这个请求转给网络服务软件(比如Apache或者微软的Internet Information Server)。如果是25端口(SMTP的默认端口,这个协议是电子邮件使用的),服务器就把请求发给电子邮件服务器(比如Lotus Notes或者Microsoft Exchange)。在很多情况下,尤其是在大型的公司里,一台物理服务器往往只承担一个应用(而不是同时承担多个应用),比如说一台服务器是网络服务器,一台是FTP服务器,另一台是邮件服务器,路由器使用端口信息来判断究竟应该把通信送往哪台服务器上。
在我的情况里,我从路由器的日志里发现mDDoS攻击的是113端口。从两个系统里发出的所有的通信都是攻击这一端口的。Scott怀疑我的路由器上的113端口确实给了攻击者为了继续攻击所需要的反馈信息(通过ACK)。
为了检查我的路由器上的113端口的ACK是否打开,Scott建议我使用Gibson Research的ShieldsUp服务。它可以检查有哪些端口在不应该打开ACK的情况下打开了ACK。当ShieldsUp扫描你的端口的时候,它会告诉你它们是开放、关闭还是有秘密行动。开放没有什么,如果是为了正常的使用。
由于我有网络服务器,所以我让我的Linksys路由器把所有的80端口的通信都发送到网络服务器上,ShieldsUp显示80端口是开放的。开放的端口可能会有问题,因为他们不仅仅有ACK,它们还提供一个通向防火墙内系统的开放的连接,很多网络服务器负责侦听80端口。如果你象我一样有开放的端口,你也知道他们为什么开放,你就应该非常小心地保护你运行的软件不受利用。绝大部分人都不需要这些端口,因此他们会发现没有端口是开放的。如果你需要让任何端口开放,你就需要一个更强大的防火墙(就象Scott会给你的那种)以判断来自某一地点的请求是否合法。
如果ShieldsUp告诉你某一个端口是关闭的,这个消息可能比它上开放的好,但还是会有问题。可能你的网络里没有系统会需要使用这些端口来获得服务。但是这些端口仍然具有ACK。除了80端口,113端口是唯一具有ACK的端口--也就是mDDoS攻击者所利用的端口。
ShieldsUp报告说其余的端口都在隐藏(stealth)。换句话说,如果一个攻击者在扫描我的IP地址上的开放端口,其余的端口都不会响应,如果我的80端口和113端口也是隐藏状态,对于攻击者来说,我的IP地址就如同不存在一样。
那么一旦有了这个信息,该怎么做呢?
我很失望地发现在Linksys BEFSX41路由器上113端口是默认关闭的,但关闭状态仍然具有ACK能力(因此会帮助mDDoS攻击者,而不是把自己隐藏起来),1002和1055端口也有同样的问题。
通过和另一位ZDNet的编辑的讨论,我发现相比较而言,他的NetGear ProSafe Firewall FR114B经过ShieldsUp扫描,端口被100%地隐藏了。他的NetGear上没有一个端口是开放或关闭的。这让我很嫉妒。
InfraSupport的Scott建议我说也许有一种方法可以把关闭的端口变成隐藏的。事实上,确实有这样一种方法。使用路由器的管理工具,你可以发现那些有问题的端口,然后把他们指向一个你网络中不存在的IP地址上。这个建议是来自于Gibson Research Web的网站。当我这样做了以后,再使用ShieldsUp进行扫描,我发现原来显示为“关闭”的端口现在都变成“隐藏”了。
它管用吗?我是否能够抵挡下一次的mDDoS攻击?到目前为止,我还不知道。BEFSX41有一个非常棒的功能,就是如果它认为在经受DDoS攻击,它能够对你选择的电子邮件地址发出警报。到目前为止,我没有使用过该功能。由于在上一次攻击之后我没有在经历过故障,我想我的网络应该是安全了。
不过虽然这些方法能够有效地抵挡业余的攻击者,但是对于更为专业的攻击,它们可能就很难奏效。Scott认为由于113端口的漏洞,“小”路由器很难抵挡大规模的攻击。另一些类型的攻击,比如大量使用UDP包的攻击(一种建筑在IP之上的协议),就不需要依靠ACK,它们依然可以得手。
考虑到DDoS攻击的日益成熟,发动这种攻击的容易程度和它所能造成的损失,我想我们会看见cable modem路由器/防火墙会具备一些原来企业级设备才具有的安全功能和带宽能力,这只是迟早的问题。
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2