分类:
2008-09-10 10:27:16
DDoS攻击的主要手段是通过大于管道处理能力的流量淹没管道或通过超过处理能力的任务使系统瘫痪,所以理论上只要攻击者能够获得比目标更强大的“动力”,目标是注定会被攻陷的。对于DDoS攻击来说并没有100%有效的防御手段。但是由于攻击者必须付出比防御者大得多的资源和努力才能拥有这样的“动力”,所以只要我们更好的了解DDoS攻击,积极部署防御措施,还是能够在很大程度上缓解和抵御这类威胁的。
增强防御力
对抗DDoS攻击一个很重要的要素就是增强自身的防御能力。使用更大的带宽及提升相关设备的性能是面对DDoS攻击最直接的处理方法。虽然这必定需要耗用一定的资源,但是对于那些将生存寄托于这些在线系统的企业来说,进行这种投入是具备足够理由的。只是在执行这类“硬性增幅”的时候,我们需要把握适度的原则。
因为我们的资源是有限的,如果增加100%的投入仅能在相关性能及DDoS防御力上获得10%的提升,明显是一种得不偿失的处理方式,毕竟这并不是我们仅有的选择。而且攻击者的资源同样是有限的,在我们增加防御强度的同时,就意味着攻击者必须集合比原来多得多的攻击傀儡机来实施攻击,并且会提高攻击者暴露的风险。不过应该记住的是,真正有效的DDoS防御并不是陷入与攻击者“角力”的恶性循环当中,而是应该综合各种方法,为攻击者设置足够的障碍。
目标系统处理
攻击者的最终目标可能是一台主机,也可能是一台。除了对其目标的硬件能力进行增强之外,我们同样应该充分发挥系统自身的潜能,通过对目标系统的针对性处理,可以有效地放大现有资源的能量。最基本的任务是做好更新补丁的工作。特别是一些操作系统的通讯堆栈存在着问题,很容易成为拒绝服务攻击的利用对象。因为利用漏洞实施拒绝服务攻击相对于纯粹的设施能力比拼要容易的多。如果不能保证消除明显可被拒绝服务攻击利用的漏洞,其它的防御工作将只能成为摆设。
好在现在各类系统的补丁更新速度还是比较令人满意的,只要根据自身环境的情况注意对相关系统的补丁发布情况进行跟踪就可以了。一些经常被使用的方法还包括限制连接队列的长度以及减少处理延时等。前者可以缓解系统资源的耗尽,虽然不能完全避免“拒绝服务”的发生,但是至少在一定程度上降低了系统崩溃的可能性。而后者能够加强系统的处理能力,通过减少延时,我们可以以更快的速度抛弃队列里等待的连接,而不是任其堆满队列;不过这种方法也不是在所有情况下都有效,因为很多DDoS的攻击机制并不是建立在类似SYN Flood这样以畸形连接淹没队列的方式之上。
纵深防御
攻击者和目标通常并非直接相连,两者之间要经过很多网络节点才能进行通信。所以我们可以在受保护系统之前尽可能部署有效的屏障,以缓解系统的压力。设置屏障最主要的工具就是,先进的产品能够有效识别和处理数据包的深层内容,这样有助于我们设置更加细致的过滤。
现在有很多防火墙产品集成了反DDoS功能,进一步提高了对常见DDoS攻击包的识别能力(比如常见的专业级抗DDOS攻击的冰盾防火墙)。这样的产品可以在很大程度上增强DDoS防御能力,并且可以做到不对数据包进行完全检查就可以发现“恶意行为”。这是非常有帮助的能力,因为如果判断DDoS攻击所耗费的处理越少,就越不容易被耗尽处理能力,从而极大的增加攻击者的成本。包括很多器产品在内的都具备一些_blank">防火墙功能,我们应该尽可能充分的利用。
特别是路由器本身负责对数据流进行导向,应尽可能将其置于“前哨”位置。这样既可以起到御敌于千里之外的作用,又可以灵活地将攻击包导向到其它无害的位置甚至化攻击于虚无。当然,攻击者对这些防御层也会有或浅或深的体认,不会一味地以目标系统作为惟一的打击点,他们很可能会在受到这些设施的阻挠之后转而组织针对这些设施的攻击,这就需要我们动态的对防御设施进行调整,随机应变。
除了以上这些基础的方法和工具之外,还有一些更高级的技巧可以利用,例如我们可以进行冗余设计,以在系统瘫痪于攻击发生时有可以随时启用的应急机制;也可以部署一些陷阱部件,既可以用于吸引攻击流量,也可以对攻击者起到一定的迷惑作用。
知己者胜
其实在对我们进行防御时,最重要的因素之一是对系统的透彻了解。例如我们必须清楚地知道系统对外开放了哪些服务,哪些访问是被禁止的。同时,当有DDoS攻击迹象发生的时候,我们也应该很好地判断攻击利用了系统的哪些处理机制。虽然我们已经听过无数人无数次的重复“关闭不必要服务”,但显然其重要性仍未被充分认知。
有时一个端口没有开放我们就认为其处于安全状态,其实事实并非如此。很多时候,一些关闭的端口由于设计上的原因仍会响应某些查询,这一点经常被DDoS攻击所利用。攻击者通过向这些看似沉睡的端口发送海量的查询耗尽目标系统的资源从而达到自己的目的。我们经常利用一个称为Shields UP!!的基于Web接口的工具检查端口的真实状态。
我们在一台联网的工作站上登录其页面并执行All Service Ports检测,返回的结果页会列出从0到1055端口状态的方格图,绿色的小块儿表示该端口处于安全的隐秘(Stealth)状态,将不会对外界做出任何响应。如果小块儿是代表危险的红色,说明该端口处于开放状态。而如果小块儿是蓝色的话,说明该端口处于关闭状态,虽然大部分程序无法使用这些端口,但不代表其绝对安全。通过类似的工具我们可以更透彻的了解我们暴露在网络上的都是什么,也才能进行真正有效的处理,同时不会忽视存在的隐患。