最近花了点时间把《破坏之王-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. Django总结

    Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西.为了达到这个目标,Django 提供了通用W ...

  2. 四、VueJs 填坑日记之搭建Axios接口请求工具

    上一章,我们认识了项目的目录结构,以及对项目的目录结构做了一些调整,已经能把项目重新跑起来了.今天我们来搭建api接口调用工具Axios.Vue本身是不支持ajax调用的,如果你需要这些功能就需要安装 ...

  3. maven学习之1

    最近用maven的时候各种出问题,打算系统的学习一下maven,搞明白依赖之类的. (一)创建工程: mvn archetype:generate 这样就可以根据提示来建立一个maven项目,常用的有 ...

  4. Angular i18n的技术分享、踩过的坑

    1.安装 npm @ngx-translate/core --save npm @ngx-translate/http-loader 2.配置(文本背景部分为该模块新增的)~app.module.ts ...

  5. C#中四步轻松使用log4net记录本地日志

    在这里,记录我在项目中使用log4net记录本地日志的步骤.在不会之前感觉很难,很神秘,一旦会了之后其实没那么难.其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验. 第一步:首先从 ...

  6. 关于apidoc文档生成不了的一个原因

    前几天在写完API后,写注释文档,然后很习惯的去用apidoc取生成注释文档,但是奇怪的事发生了,没有注释的内容,也没有报错:注释代码如下: /* * @api {get} /applet/:id 根 ...

  7. MVC过滤器简单理解

    之前对于MVC过滤器的理解一直处于很模糊的状态,就在网上找了一些很简单的案例做了一下学习,就找了一个比较容易理解的demo分享给大家. 新建一个MVC4项目,可以在global.asax文件中看到如下 ...

  8. QQ空间掉帧率优化实战

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest 导读 空间新业务需求日益增多,在业务开发阶段的疏忽,或者是受到其他业务的影响(比如一些非空间的业务网络回包或者逻辑在主线程 ...

  9. 【Win 10 应用开发】将墨迹保存到图像的两种方法

    IT界最近这几年,各种乱七八糟的东西不断出现,其中能用在实际工作与生活中的,大概也就那么几个.Web 前端也冒出各种框架,这就为那些喜欢乱用框架的公司提供了很好的机会,于是造成很多项目体积越来越庞大, ...

  10. Intellij自动下载导入框架包和常用快捷键

    忽然发现intellij尽然可以自动导入 框架所需的包,而且可以选择jar包版本,瞬间发现Maven,gradle管理jar包还得写配置文件弱爆了. 以Hibernate为例: 1.ProjectSt ...