最近花了点时间把《破坏之王-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头部的结束标志位"\r\n\r\n",攻击者发送其他的Head字段,就是不发送"\r\n\r\n"标志,就会导致服务器的连接耗尽,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代理和验证、协议完整性验证、客户端真实性验证等方法

DDOS学习笔记(《破坏之王-DDOS攻击与防范深度剖析》)的更多相关文章

  1. 破坏之王-DDoS攻击与防范深度剖析

    破坏之王-DDoS攻击与防范深度剖析 下载:链接:https://pan.baidu.com/s/1bzVT6YkZGGg7anpQWDknjA 提取码:j7ns 网际空间的发展带来了机遇,也带来了威 ...

  2. 破坏之王DDoS攻击与防范深度剖析【学习笔记】

    一.DDoS初步印象 1.什么是分布式拒绝服务攻击? 1)首先它是一种拒绝服务攻击 我们可以这么认为,凡是导致合法用户不能访问服务的行为,就是拒绝服务攻击. 注:早期的拒绝服务主要基于系统和应用程序的 ...

  3. Metasploit学习笔记——客户端渗透攻击

    1.浏览器渗透攻击实例——MS11-050安全漏洞 示例代码如下 msf > use windows/browser/ms11_050_mshtml_cobjectelement msf exp ...

  4. DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络

    介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录. 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程 ...

  5. DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络

    一.深层神经网络 深层神经网络的符号与浅层的不同,记录如下: 用\(L\)表示层数,该神经网络\(L=4\) \(n^{[l]}\)表示第\(l\)层的神经元的数量,例如\(n^{[1]}=n^{[2 ...

  6. Android学习笔记_48_若水新闻客户端源码剖析

    一.新闻客户端布局代码 1.1 主界面布局 使用GridView实现左右可滑动菜单项,使用标签HorizontalScrollView实现水平滚动条,将创建的GridView添加到布局文件中. < ...

  7. iOS学习——布局利器Masonry框架源码深度剖析

    iOS开发过程中很大一部分内容就是界面布局和跳转,iOS的布局方式也经历了 显式坐标定位方式 --> autoresizingMask --> iOS 6.0推出的自动布局(Auto La ...

  8. C51学习笔记

    转自:http://blog.csdn.net/gongyuan073/article/details/7856878 单片机C51学习笔记 一,   C51内存结构深度剖析 二,   reg51.头 ...

  9. DeepLearning.ai学习笔记汇总

    第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...

随机推荐

  1. 使用sshkey的方式访问gitlab

    在使用jenkins创建jobs的时候配置git为ssh访问的方式报错 记录错误信息 Failed to connect to repository : Command "/usr/bin/ ...

  2. Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

    故障是在所难免的,容器可能崩溃,Docker Host 可能宕机,不过幸运的是,Swarm 已经内置了 failover 策略. 创建 service 的时候,我们没有告诉 swarm 发生故障时该如 ...

  3. 《java.util.concurrent 包源码阅读》04 ConcurrentMap

    Java集合框架中的Map类型的数据结构是非线程安全,在多线程环境中使用时需要手动进行线程同步.因此在java.util.concurrent包中提供了一个线程安全版本的Map类型数据结构:Concu ...

  4. 作为函数的mixin

    作为函数的mixin 在一个 mixin 内部定义的变量或 mixin,都调用者可见,因此,它们可以作为它的返回值.如,以下Less代码: .count(@x, @y) {     @sum:(@x ...

  5. 日志的艺术(The art of logging)

    程序员学习每一门语言都是从打印“hello world”开始的,日志也是新手程序员学习.调试程序的一大利器.当项目上线之后,也会有各种各样的日志,比如记录用户的行为.服务器的状态.异常情况等等.打印日 ...

  6. Azure IoT Edge on Windows 10 IoT Core

    在今年的Build大会上,微软推出了Azure IoT Edge的第一个版本(https://github.com/Azure/iot-edge ).该版本的主要特点就是将计算能力由Azure端推送至 ...

  7. Python函数篇(二)之递归函数、匿名函数及高阶函数

    1.全局变量和局部变量 一般定义在程序的最开始的变量称为函数变量,在子程序中定义的变量称为局部变量,可以简单的理解为,无缩进的为全局变量,有缩进的是局部变量,全局变量的作用域是整个程序,而局部变量的作 ...

  8. 自动化运维工具——ansible详解(二)

    Ansible playbook 简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本. 通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机 ...

  9. NYOJ 138 找球号(二) bitset 二进制的妙用

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i< ...

  10. CCF-201312-2-ISBN号码

    问题描述 试题编号: 201312-2 试题名称: ISBN号码 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包 ...