分享

告诉你检测DDOS攻击加追踪与缓解技术

 小木鱼医盲 2010-06-14
 1. 简介

  DDoS是英文Distributed Denial of Service的缩写,即“分布式拒绝服务”。凡是能导致合法用户不能够正常访问网络服务的行为都是DoS攻击,或拒绝服务攻击。在各种DoS攻击中,DDoS攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包,从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。DDoS攻击一旦被实施,攻击网络包就会犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDoS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。由于网络的分布式和开放式特性,使得DDos攻击很难防范。

  目前DDoS攻击的发展主要有4个趋势:(1)广分布的高强度攻击;(2)伪造源IP地址;(3)数据包结构位的随机性;(4)使用多种协议及多种形式。这4个趋势使得DDoS攻击的检测和防御变得更加困难。

  2. DDoS的检测

  DDoS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被耗尽,正常的网络包无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存、CPU或某个缓冲区耗尽而无法提供正常的服务。

  在遭受流量攻击,同一交换机上的主机都会受到影响。这时Ping同一个交换机上的主机会超时。理论上,如果攻击者能够发动超过主机带宽的傀儡机(群)发动流量攻击,并使用合法的方式与主机进行通信,主机一定难以幸免。流量攻击通常是从傀儡机发送大量无用的数据包将主机带宽或者主机所在的交换机(路由器)带宽耗尽。如果主机所在网络的带宽较小,比如10M,则无论怎样都无法应对流量攻击。要对付流量攻击,至少要有100M或更高的网络带宽。

  假如主机的服务非常缓慢或无法访问,而Ping还可以Ping通,则很可能遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping受害主机Ping超时,而Ping与受害主机在同一交换机上的主机则正常,造成这种原因是受害主机遭受攻击后CPU利用率达到100%无法回应Ping命令,其实带宽还是有的,否则就Ping不通接在同一交换机上的主机了。很多情况下,资源耗尽型攻击和流量攻击是同时进行的,比如SYN flood。通常资源耗尽型攻击比流量攻击流量耗尽型攻击需要的傀儡机要少,因此更容易攻击成功。

  当前资源耗攻击主要有三种类型:

  1、无连接攻击:

  这种攻击方法主要利用IP、TCP、ICMP等协议的漏洞,在无连接情况下或者连接建立过程中完成攻击。主要是通过向受害主机发送大量伪造源IP和源端口的SYN、ACK、UDP、 ICMP包等,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伪造的,故追踪起来比较困难。对于SYN Flood攻击,在服务器上用Netstat -na命令会观察到存在大量的SYN_RECEIVED状态。

  2、TCP全连接攻击:

  当主机突然收到比平时多得多的“合法”连接请求时,基本可以判定是这种类型。由于攻击采用的方式几乎无法与真正的合法流量区分,使得这种攻击很难自动防御。但是这种攻击会暴露傀儡机的IP地址,从而相对容易跟踪。然而DDoS攻击的追踪不仅是要找到傀儡机,还要找到隐藏在傀儡机背后的黑客主机。好的DDoS攻击工具可以伪造黑客主机的IP地址,使得对黑客主机的追踪要比对傀儡机的追踪困难的多。TCP全连接攻击的另一个缺点是需要控制大量的傀儡机来模拟合法的连接。

  3、Script脚本攻击:

  这种攻击是TCP全连接攻击的升级版,但是需要的傀儡机数量相对少一些。主要是针对存在于ASP、JSP、PHP、CGI等的脚本程序,并调用MSSQLServer、MySQLServer、Oracle等数据库的网站系统而设计的,对静态网页的服务器攻击效果不大。其特征是和服务器建立正常的TCP连接,并不断的向脚本程序提交查询、列表等大量耗费数据库资源的调用。一般来说,提交一个GET或POST指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录,这种处理过程对资源的耗费是很大的。攻击之后常见的现象ASP程序失效、PHP连接数据库失败、数据库主程序占用CPU偏高。

  笼统的讲,抵御无连接攻击主要是分析IP包,而对于有连接的攻击则需要分析包的内容。

来源:(http://blog.sina.com.cn/s/blog_634fb9090100fw8e.html) - 告诉你检测DDOS攻击加追踪与缓解技术_DDOS网站攻击业务_新浪博客

  3. DDoS的追踪

  DDoS的追踪主要有两个目的:1是通过追踪攻击源获取攻击包的特征从而对流量进行过滤或者联系ISP寻求帮助;2是找到攻击源并搜集攻击证据,从而有可能通过法律手段对攻击者进行惩罚。无论能否最终找到攻击源,DDoS攻击的追踪技术对于DDoS的防御都是十分重要的。目前主要的DDoS追踪技术有Packet Marking、ICMP追踪、Logging以及Controlled Flooding。这些跟踪技术一般都需要路由器的支持,实际中也需要ISP的协助。

  Packet Marking是一大类方法,其基本思想是路由器在IP包中的Identification域加入额外信息以帮助确定包的来源或路径。由于IP包的Identification域在因特网中被使用到的比率只有0.25%,因此在大多数包中添加路由信息是十分可行。当然如果对每个包都做处理没有必要,因此大多数Packet Marking方法都是以一个较低的概率在IP包中加入标记信息。Packet Marking方法需要解决的主要问题是:由于IP包的Identification域只有16比特,因此加入的信息量很受限制,如果要追踪源地址或者路径就要精心构造加入的信息,这涉及到路由器如何更新已有的标记信息,如何降低标记信息被伪造的可能,如何应对网络中存在不支持Packet Marking的路由器的情况。比如,采用用异或和移位来实现标记信息的更新。

  Controlled Flooding是Burch和 Cheswick提出的方法。这种方法实际上就是制造flood攻击,通过观察路由器的状态来判断攻击路径。首先应该有一张上游的路径图,当受到攻击的时候,可以从受害主机的上级路由器开始依照路径图对上游的路由器进行受控的flood,因为这些数据包同攻击者发起的数据包共享了路由器,因此增加了路由器丢包的可能性。通过这种沿路径图不断向上进行,就能够接近攻击发起的源头。Controlled Flooding最大的缺点就是这种办法本身就是一种DOS攻击,会对一些信任路径也进行DOS。而且,Controlled Flooding要求有一个几乎覆盖整个网络的拓扑图。Burch和 Cheswick也指出,这种办法很难用于DDOS攻击的追踪。这种方法也只能对正在进行攻击有效。

  ICMP追踪主要依靠路由器自身产生的ICMP跟踪消息。每个路由器都以很低的概率(比如:1/20000),将数据包的内容复制到一个ICMP消息包中,并且包含了到临近源地址的路由器信息。当DDoS攻击开始的时候,受害主机就可以利用这些ICMP消息来重新构造攻击者的路径。这种方法的缺点是ICMP可能被从普通流量中过滤掉,并且,ICMP追踪消息依赖于路由器的相关功能,但是,可能一些路由器就没有这样的功能。同时ICMP Tracking必须考虑攻击者可能发送的伪造ICMP Traceback消息。

  Logging通过在主路由器上记录数据包,然后通过数据采集技术来决定这些数据包的穿越路径。虽然这种办法可以用于对攻击后的数据进行追踪,但也有很明显的缺点,如要求记录和处理大量的信息。

  需要指出,如果攻击者对攻击程序设计得足够精细,则要想找到真正的攻击者几乎是不可能的。比如攻击者可以使用两层甚至更多层傀儡机实施攻击,而对靠近攻击者的傀儡机做彻底的日志清理,使得跟踪技术无法找到攻击者。另外对于反射式攻击,由于攻击包是合法的,想要追踪到傀儡机本身就已经非常困难了。

  4. DDoS的缓解

  一个好的DDoS防御系统应该能做到快速的DDoS攻击检测和缓解,对攻击流量的处理不影响或少影响合法用户的流量,对网络配置的要求要低。目前还没有哪个系统能够很100%地达到以上目标,不过确实存在一些有效措施来缓解DDoS攻击。

  主要的DDoS缓解方法包括以下几个方面:

  1、Filter。对于特征明显的DDoS攻击包,在路由器或者防火墙就可以搞定。当然,如果跟踪技术能够确定攻击包的来源则可以设置路由器或防火墙过滤掉所有来自攻击源的包,在攻击源被伪造的情况下,是通过识别攻击包的一些特征来实现的。然而有些攻击包并不容易识别出来。

  2、随机丢包。如果不能非常有把握地识别攻击包,但是能对攻击包的做概率性的判断,则可以用随机丢包的方法来过滤一大部分的攻击流量,然而使用这种方法就必须考虑如何能够使合法用户的流量被尽可能好的保留。可以加上一些限制条件,如果判定一个包“一定是”合法的,则不对它做丢包。

  3、SYN Cookie等特定防御办法。针对一些固定的攻击手段来防御和过滤。这类方法主要是减少主机对一些可能的攻击的容忍能力。比如为了减轻SYN Flood攻击占用TCP半连接队列,在SYN Cookie的执行过程中,当服务器接收到一个SYN包的时候,返回一个SYN-ACK包,这个数据包的ACK序列号是经过加密的,也就是说,它由源地址,端口源次序,目标地址,目标端口和一个加密种子计算得出。然后SYN释放所有的状态。如果一个ACK包从客户端返回,服务器将重新计算它来判断它是不是上个SYN-ACK的返回包。如果这样,服务器就可以直接进入TCP连接状态并打开连接。这样,服务器就可以避免守侯半开放连接了。

  4、被动消极忽略。一般正常连接失败会重新尝试,但是攻击者一般不会重新。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。

  5、统计分析。即通过统计分析来得到攻击包的指纹,然后根据指纹来抛弃攻击包。思路很简单,关键是要保证合法的流量被误检和非法流量被漏检的概率足够低。这也是很多研究者研究的主要课题,目的就是识别攻击包。识别攻击报所需要的信息可能包括:流量速率大小、包大小和端口的分布、包到达时间的分布、并发流量数、高级协议特征、出入的速率、流量分类(源IP 源端口、目的端口、协议类型、连接量)、高层层协议分析:比如针对http的攻击。所有模式识别中的分类方法以及优化方法,比如人工神经网络等等都可以应用于统计和分析。不过,这种方法的实施难度较大,一个鲁棒的,自动更新识别函数的统计分析系统构造起来相当不容易。

  5. 总结

  DDoS攻击,这一对互联网危害极大的攻击,正在变得越来越频繁,越来越难以防范。本文介绍典型的DDoS检测、跟踪和缓解办法。目前尚无一种方法能够彻底根除DDoS隐患,大多数实际运作的系统都是多种防范和应对手段的集合体。一个实际的DDoS防御体系通常需要受保护主机与相邻网络以及ISP的有效沟通与合作。作者任沛然

来源:(http://blog.sina.com.cn/s/blog_634fb9090100fw8e.html) - 告诉你检测DDOS攻击加追踪与缓解技术_DDOS网站攻击业务_新浪博客

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多