zoukankan      html  css  js  c++  java
  • DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)

           最近花了点时间把《破坏之王-DDOS攻击与防范深度剖析》看了一遍,坦白来说,这本书比较浅显,可以说是入门书,当然对于我这种对DDOS一知半解的人来说,也是一本不错的书,起码我学到了一些东西。
           DDOS是分布式拒绝服务(Distributed Denial of Service, DDOS)的简写,从名字可以看出,其攻击是分布式的,即多台(可能上万台,甚至更多)电脑同时对目标进行攻击,攻击的目的是让目标无法提供服务。从根本上来说,让目标无法提供服务,办法有很多,比如侵入目标服务器,删除关键服务或程序,或者其他的物理方式,这些确实有效,但是在隐蔽性上,以及目标恢复服务的难度上,都和DDOS相去甚远。DDOS本质来说是用一些方法消耗目标服务器的资源,一台服务器提供正常的对外服务,它必须拥有足够的硬件设备,如CPU、内存、足够快的硬盘,以及系统软件,如稳定的操作系统、稳定的应用服务器以及数据库等,还需要稳定的应用服务,比如基于JavaEE和PHP的程序,还需要足够的带宽,让用户可以访问。这些是提供服务的基础,也是DDOS攻击的关键,从这个角度来看,DDOS的攻击一般分为带宽攻击、系统资源攻击和应用资源供给。简单说明如下:
          1)带宽攻击:这个很容易理解,就是向目标服务器发送大量的数据包,让其他的正常用户无法连接上服务器,这个最好理解,也最容易实现,很多压力测试的工具都可以达到这种效果。但是这种压力测试工具很容易被通过IP黑名单的办法屏蔽掉。常见的攻击方式有ICMP/IGMP洪水攻击和UDP洪水攻击,这种攻击方式比较古老,很容易过滤,并且受制于攻击电脑的性能,往往达不到想要的效果。更好的方式是反射攻击技术,所谓的反射攻击,就是攻击电脑伪装成目标主机,向某些服务器(如DNS、NTP、ACK、SNMP)发送请求,这些服务器返回的报文远大于请求内容,并且其返回的数据是指向目标主机的,这即方便了攻击隐藏,也避免了攻击主机的性能限制,因为某些情况下,其放大效果能达到700倍。
         2)攻击系统资源:主要是指攻击TCP链接和攻击CPU、内存等资源,TCP连接被设计为可靠的三次握手模式,对。于后两次而言,每当有一次出现问题,就会引起等待和重传,没有完成的连接被称为半开连接,半开连接会很快耗尽服务器的连接资源,这就是常见的SYN洪水攻击;另外客户端发送完数据之后,会设置PSH标志,服务器收到这一信息后,就会清空缓冲区,将数据提交给服务进程,如果发送大量的PSH位的数据,也会造成服务器资源的占用。另外还有RST攻击和SocketStress攻击,前者相对困难,后者是一种慢速攻击,这是通过TCP连接中的传输窗口的特性进行攻击。另外还有利用SSL的特性,让服务器端耗费大量的资源进行加解密,进而耗尽资源导致其无法服务。
         3)攻击应用资源:常见的有攻击DNS和攻击HTTP服务,攻击DNS实际上一种无目的的、针对整个网络的攻击,相当于毁掉了整个城市的站牌和路标,自然就无法通行了。攻击HTTP服务是利用HTTP服务的一些设计缺陷,如HTTP洪水攻击,其实和攻击TCP连接类似,攻击者连接服务器之后,立刻切断连接,并重新连接,这样服务器的连接在超时之前需要保存,就会耗尽服务器资源;再比如Slowloris攻击,就是利用了HTTP头部的结束标志位" ",攻击者发送其他的Head字段,就是不发送" "标志,就会导致服务器的连接耗尽,IIS、Nginx进行修改,但是Apache似乎没有修改;再如慢速POST攻击,是利用了Content-Length指定了Body的传输长度这一特点,指定巨大的Content-Length值,然后缓慢的发送body信息,从而占有http连接,进而耗尽服务器资源。还有一些就是数据处理过程的攻击,如正则表达式和哈希冲突拒绝服务攻击,这些也是降低服务器的处理速度,占有关键资源,从而达到拒绝服务的目的。
          DDOS的治理:
          1)最可行的办法,其实就是杜绝IP地址伪造,其实这个处理起来并不难,只要让路由器判断这个包是否是从本网域发出来的,如果不是,则拒绝,但是由于成本和缺乏激励机制,还没有实现。还有一些类似的方案,如果能够独具IP地址伪造,那么DDOS攻击应该减少大部分。
           2)攻击流量的缓解主要是对网络流量进行清洗,清洗之前需要稀释,稀释的办法主要有CDN、AnyCast,前者是通过智能DNS,将用户的访问分布到不同的机器上,但是这种方法对指定IP的攻击无效,AnyCast可以解决针对IP攻击的问题。
          3)数据清洗的办法很多,但是并不是十分有效,常见的办法有IP信誉检查、攻击特征匹配、速度限制和检查、TCP代理和验证、协议完整性验证、客户端真实性验证等方法
  • 相关阅读:
    Codeforces Round #344 (Div. 2) C. Report 其他
    Codeforces Round #344 (Div. 2) B. Print Check 水题
    Codeforces Round #344 (Div. 2) A. Interview 水题
    8VC Venture Cup 2016
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂 中二版
    CDOJ 1280 772002画马尾 每周一题 div1 矩阵快速幂
    CDOJ 1279 班委选举 每周一题 div2 暴力
    每周算法讲堂 快速幂
    8VC Venture Cup 2016
    Educational Codeforces Round 9 F. Magic Matrix 最小生成树
  • 原文地址:https://www.cnblogs.com/stone-fly/p/5521899.html
Copyright © 2011-2022 走看看