精华内容
下载资源
问答
  • DDos原理

    2020-06-17 17:12:53
    近期在学习DDos相关的产品,总结了一些学习内容,包括DDos攻击、DDos防御的原理、常见的DDos攻击方式、市面上常见的DDos产品。总结的可能不全或者有误的地方,希望大家多多指教。 DDos DDos攻击 DDos攻击通常指的是...

    本来是准备上传思维导图的图片的,但是太大传不了,只能文字了。近期在学习DDos相关的产品,总结了一些学习内容,包括DDos攻击、DDos防御的原理、常见的DDos攻击方式、市面上常见的DDos产品。总结的可能不全或者有误的地方,希望大家多多指教。

    DDos

    DDos攻击

    DDos攻击通常指的是,通过高并发的流量占领网络或者服务器资源。分为以下两种类型:

    1. 带宽攻击
      发出海量数据包,造成网络设备负载过高,最终导致网络带宽或是设备资源耗尽。
    2. 资源攻击
      利用了诸如 TCP 或是 HTTP 协议的某些特征,通过持续占用有限的资源,从而达到使目标设备无法处理正常访问请求的目的。

    DDos系统

    DDos系统通常的DDos系统都是由三大中心组成,管理中心、检测中心、清洗中心。而且根据客户要求的不同部署的方式也存在差异。

    通常DDos的工作模式是:检测中心检测关键节点或者网络的流量,检测中心会对流量进行初步分析,当检测到异常流量后上报管理中心;管理中心收到异常信号,判断是否是攻击,如果确定是攻击,则向清洗中心下发策略进行处理;清洗中心收到管理中心下发的策略之后,根据策略执行动作(引流或其他操作),最后将处理的日志反馈给管理中心。

    DDos系统的组成

    管理中心

    由服务器系统组成,主要完成对攻击事件的处理、控制 清洗中心的引流策略和清洗策略,并对各种攻击事件和攻击流量分类查看,产生报表。 如:华为ATIC管理中心;迪普UMC管理中心。

    关键特性:
    1. 防护策略

    管理中心会制定相应的防护策略,来保护对应的防护对象。所以在进行防护策略定制时,必须要先了解防护对象和防护对象策略 。

    防护对象:指的是需要被保护的对象。可以通过IP地址/IP地址段进行标注。

    防护对象策略:针对防护对象定制的防护策略,策略的内容根据对象的不同而不同。
    防护策略的主要工作原理是根据各种协议的流量大小设置一个合理的阈值。一旦超出阈值则视为异常。当到达防护对象某种类型的报文超过防御阈值时,系统启动针对这种报文的防御。

    防护策略分为很多种类主要包括,防御模式、黑白名单、基线学习等。

    防御模式:定义向清洗设备下发流量处理模式

    1. 防护带宽:针对保护的对象的总带宽进行保护。当带宽超出防护流量时是否需要限流。
    2. 引流模式:设备检测到异常后,是否需要将流量引入清洗设备。
    3. 防御模式:清洗设备检测到流量异常后的防护模式。可以自动或者手动。
    4. 黑洞模式:防御过程中,当入流量超过黑洞阈值,会自动生成黑洞任务,并下发黑洞路由给清洗设备。
    5. 动态黑名单模式:在防御过程中,检测到的非法源IP将被清洗设备加入动态黑名单中。

    黑白名单:管理员通过管理经验,对信任IP直接放行,恶意IP直接阻断,提高了过滤效率,减轻了对业务的影响。

    基线学习:动态基线学习是指对用户网络流量按时间进行统计,学习正常网络环境中一定时间间隔内的流量最高值。为用户配置防御阈值提供参考。

    2. 流量引导

    在旁路部署时则需要考虑,流量引导的方式。

    检测中心

    对镜像或者分光过来的流量进行DDoS攻击流量的检测和分析,将分析数据提供给管理中心进行判断。 支持对全流量的深度包检测,特征匹配,会话重组等。如:华为anti-DDos1500D;迪普probe3000。

    清洗中心

    根据安全管理中心的控制策略进行攻击 流量牵引并清洗,把清洗后的正常流量注回到客户网络,发送到真正的目的地。同时清洗中心也具备独立的DDos攻击检测能力。如:华为anti-DDos1500;迪普Guard3000。

    DDos系统的部署方式

    部署方式分为两种:旁路部署和在线部署。

    旁路部署

    旁挂在路由交换设备,通过镜像等方式将流量复制到清洗中心,清洗中心发现异常则上报管理中心,管理中心下发策略到清洗中心进行清洗。
    旁路部署不影响现网的环境,一般特大型网络都是采用的旁路方式。但是旁路在做流量引入或者回注的时候可能比较复杂。

    在线部署

    清洗设备直接串联在链路上,承担流量清洗和数据转发。实时进行流量清洗。由于设备既要承担流量清洗工作,又是数据转发的关键节点,所以可靠性要求较高。一般采用主备部署。此模式检测清洗一体,通常不需要检测中心。防御日志会上报管理中心。

    DDos防御手段

    DDos通用攻击防御技术

    1. 首包丢弃:
      对于变源的攻击,IP和端口不断变化,这类攻击都是属于首包,没有后续报文。所以直接丢弃就能防护。对于正常的流量,首包被丢弃了,还会重新发起连接。
      为了防止攻击重复使用IP源地址避开首包丢弃,可以对报文进行统计,只有在一段时间间隔内的才算重传包

    注意:首包丢弃对于虚假变源的攻击有效。对于真实源的防护效果不好。

    1. 限流和阻断
      首包丢弃对于虚假变源的攻击有效。对于真实源的防护效果不好。
    2. 过滤器
      对报文的关键参数进行匹配,匹配上则执行对应操作。
    3. 黑白名单
      通过手动添加或者根据日常防御动态添加。动态添加的名单有老化时间,防止自动添加的名单有误。

    TCP类攻击防御

    1. TCP源探测
      TCP是有连接的协议,对于这种攻击可以通过源探测的方式进行认证。设备代替服务器回复SYN-ACK报文,虚假源则不会回复。TCP源探测只针对虚假源的攻击有效。

    2. ACk报文检测
      检查ACK报文在所有报文中的占比,当在某个范围则认为是正常。因为最后的ACK报文通常都是发起握手的一方发出的,所以AKC报文的占比能说明发起方是否同意建立连接。ACK报文多说明客户端同意建立连接,但是如果ACK报文过多,则认为可能受到ACK Flood攻击。 这种方式主要是针对真实源的攻击。

    3. 会话检测
      检查是否有创建过会话,有效针对后续包攻击,如ACK Flood。

    注:后续包攻击,非协议发起的首包报文,即为后续包。如:TCP三次握手SYN置位为首包,ACK置位为后续包。

    1. 载荷检查
      在会话检查之后,检查载荷数据是否正常,如:全为1则异常 丢弃。针对大包的后续包攻击。

    UDP类攻击防御

    1. 关联TCP服务检测
      UDP是无连接的协议无法使用源探测,可以根据UDP攻击报文的特性和与其他协议关联进行验证。有的应用采用的UDP但是会有附加的服务是采用TCP,就利用这个TCP的连接进行检测。如:游戏使用TCP进行身份认证,使用UDP进行数据传输。

    2. 载荷检查
      检查报文载荷是否都是一样的,因为UDP类报文会填充大量字段。

    3. 指纹学习
      UDP的流量超过阈值时,触发指纹学习。学习到明显特征后就会丢弃报文。UDP的攻击通常都是有规律的。

    DNS类攻击防御

    攻击者会请求大量不存在的域名,使DNS服务器去频繁的查询,使服务器超载。

    1. 对于虚假源攻击防护
      对于虚假源攻击缓存服务器,当对同一地址的请求达到一定值之后,就启动认证。要求源地址采用TCP的方式请求。如果为虚假源肯定无法采取TCP的方式。

    2. 对于真实源防护
      对真实源防护,可以采取指定域名限速,或者源IP限速。报文格式检测、DNS报文长度检测、DNS报文TTL检测(请求就近的服务器,TTL应该在一定的范围内。)

    HTTP/HTTPS类攻击防御

    HTTP和HTTPs类的攻击,通常会向目标服务器发送大量的HTTP报文,请求设计数据库操作的URI或其他消耗资源的URI,造成服务器资源耗尽。

    或者通过合法的HTTP请求,使服务器与其一直保持连接,占用服务器的资源。连接保持的方式有两种:

    一是,向服务器发送post报文,报头显示报文长度很大,但是每次只发送很少的数据,让服务器一直处于等待状态。
    二是,在报文头部不设置终止符(空行),让服务器一直等待后续报文。

    1. 源认证
      由于HTTP也是封装在TCP上,可以采用源认证的方式。

    2. 验证码或者重定向
      HTPP是直接与用户交互的方式提供服务,切浏览器能够支持完整的HTTP协议,所以可以要求用户输入验证码进行验证;或者返回一个重定向报文,判断是否是真实主机。如果设备收到源地址重定向的访问,则认为不是攻击。

    DDos产品

    这里列举的都是清洗设备。

    中新网安

    产品
    金盾抗DDos设备:支持智能分析,自动取证;联动云端进行检测;单台设备能支持百G的流量。

    安全牛抗DDoS矩阵位置
    云抗DDos 竞争者;硬件抗DDos 领先者

    绿盟

    产品:
    绿盟抗拒绝服务系统 ADS:20余种智能防护算法,50多种防护过滤规则,全面清洗各类DDoS攻击,快速应对未知DDoS攻击类型;全面支持纯IPv4、纯IPv6以及IPv4与IPv6混合的业务防护需求;ADS支持SYSLOG、SNMP和WEBAPI等多种三方接口类型,有效满足各类三方平台的监管和调度使用要求;

    安全牛抗DDoS矩阵位置
    硬件抗DDos 领先者。

    启明星辰

    产品:
    天清ADM:对客户重点关注的服务器,可一键添加到关注主机,客户可快速定位到关注服务器信息;可针对单台服务器或不同协议的流量进行限制,更细粒度的进行了流量限制;单机性能高达80G,通过集群方式实现性能的无限扩容。

    华为

    产品:
    AntiDDoS1000系列:当攻击流量超过带宽或本地清洗设备防御能力时,可以与上游运营商或ISP的AntiDDoS设备联动,防御大流量攻击。

    安全牛抗DDoS矩阵位置
    云抗DDos 领先者;硬件抗DDos 领先者。

    迪普

    产品:
    Guard3000:可提供T级抗DDoS能力;提供安全可视化服务,帮助用户直观了解现网安全状况,及时消除安全隐患;可基于报文信息以及常见的应用统计信息建立自动学习模型,给出推荐的检测和防护阈值,给与用户有效地指导,用户根据自身的网络业务状况选择合适的模板使用,并根据最新流量信息进行自动更新。

    安全牛抗DDoS矩阵位置
    硬件抗DDos 领先者。

    盛邦安全

    产品:
    RayADS:集成了Web安全防护的功能,对于部分组合型攻击,可以从不同的角度出发对服务器形成完整的防护策略;支持虚拟化平台部署;可以与云DDos产品联动进行流量牵引;网络流量学习,定义对应的风险等级和清洗阈值,并形成模板以供使用;

    安全牛抗DDoS矩阵位置
    硬件抗DDos 竞争者。

    展开全文
  • DDOS原理

    2019-01-23 10:43:00
    DDoS攻击基础 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一。 按照发起的方式,DDoS可以简单分为三...

    DDoS攻击基础
    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的攻击之一。

    按照发起的方式,DDoS可以简单分为三类。

    第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来,堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流程无用武之地。这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见。

    第二类以巧取胜,灵动而难以察觉,每隔几分钟发一个包甚至只需要一个包,就可以让豪华配置的服务器不再响应。这类攻击主要是利用协议或者软件的漏洞发起,例如Slowloris攻击、Hash冲突攻击等,需要特定环境机缘巧合下才能出现。

    第三类是上述两种的混合,轻灵浑厚兼而有之,既利用了协议、系统的缺陷,又具备了海量的流量,例如SYN Flood攻击、DNS Query Flood攻击,是当前的主流攻击方式。
    SYN Flood

    SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于1999年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

    标准的TCP三次握手过程如下:

    客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号; 
    服务器在收到客户端的SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,表示客户端的请求被接受,同时TCP初始序号自动加1; 
    客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1。 
    经过这三步,TCP连接就建立完成。TCP协议为了实现可靠传输,在三次握手的过程中设置了一些异常处理机制。第三步中如果服务器没有收到客户端的最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP加入等待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,大约间隔30秒左右轮询一次等待列表重试所有客户端。另一方面,服务器在自己发出了SYN+ACK报文后,会预分配资源为即将建立的TCP连接储存信息做准备,这个资源在等待重试期间一直保留。更为重要的是,服务器资源有限,可以维护的SYN_RECV状态超过极限后就不再接受新的SYN报文,也就是拒绝新的TCP连接建立。

    SYN Flood正是利用了上文中TCP协议的设定,达到攻击的目的。攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。
    DNS Query Flood

    作为互联网最基础、最核心的服务,DNS自然也是DDoS攻击的重要目标之一。打垮DNS服务能够间接打垮一家公司的全部业务,或者打垮一个地区的网络服务。前些时候风头正盛的黑客组织anonymous也曾经宣布要攻击全球互联网的13台根DNS服务器,不过最终没有得手。

    UDP攻击是最容易发起海量流量的攻击手段,而且源IP随机伪造难以追查。但过滤比较容易,因为大多数IP并不提供UDP服务,直接丢弃UDP流量即可。所以现在纯粹的UDP流量攻击比较少见了,取而代之的是UDP协议承载的DNS Query Flood攻击。简单地说,越上层协议上发动的DDoS攻击越难以防御,因为协议越上层,与业务关联越大,防御系统面临的情况越复杂。

    DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。
    HTTP Flood

    上文描述的SYN Flood、DNS Query Flood在现阶段已经能做到有效防御了,真正令各大厂商以及互联网企业头疼的是HTTP Flood攻击。HTTP Flood是针对Web服务在第七层协议发起的攻击。它的巨大危害性主要表现在三个方面:发起方便、过滤困难、影响深远。

    SYN Flood和DNS Query Flood都需要攻击者以root权限控制大批量的傀儡机。收集大量root权限的傀儡机很花费时间和精力,而且在攻击过程中傀儡机会由于流量异常被管理员发现,攻击者的资源快速损耗而补充缓慢,导致攻击强度明显降低而且不可长期持续。HTTP Flood攻击则不同,攻击者并不需要控制大批的傀儡机,取而代之的是通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者通过匿名代理对攻击目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取代理并不是难事,因此攻击容易发起而且可以长期高强度的持续。HTTP Flood攻击在HTTP层发起,极力模仿正常用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工作得很好的规则,换一个场景可能带来大量的误杀。

    最后,HTTP Flood攻击会引起严重的连锁反应,不仅仅是直接导致被攻击的Web前端响应缓慢,还间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器都带来影响。

    有意思的是,HTTP Flood还有个颇有历史渊源的昵称叫做CC攻击。CC是Challenge Collapsar的缩写,而Collapsar是国内一家著名安全公司的DDoS防御设备。从目前的情况来看,不仅仅是Collapsar,所有的硬件防御设备都还在被挑战着,风险并未解除。

    慢速连接攻击

    提起攻击,第一反应就是海量的流量、海量的报文。但有一种攻击却反其道而行之,以慢著称,以至于有些攻击目标被打死了都不知道是怎么死的,这就是慢速连接攻击,最具代表性的是rsnake发明的Slowloris。

    HTTP协议规定,HTTP Request以 结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送 会如何?Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端,如a:b ,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求。
    DDoS攻击进阶

    混合攻击

    以上介绍了几种基础的攻击手段,其中任意一种都可以用来攻击网络,甚至击垮阿里、百度、腾讯这种巨型网站。但这些并不是全部,不同层次的攻击者能够发起完全不同的DDoS攻击,运用之妙,存乎一心。

    高级攻击者从来不会使用单一的手段进行攻击,而是根据目标环境灵活组合。普通的SYN Flood容易被流量清洗设备通过反向探测、SYN Cookie等技术手段过滤掉,但如果在SYN Flood中混入SYN+ACK数据包,使每一个伪造的SYN数据包都有一个与之对应的伪造的客户端确认报文,这里的对应是指源IP地址、源端口、目的IP、目的端口、TCP窗口大小、TTL等都符合同一个主机同一个TCP Flow的特征,流量清洗设备的反向探测和SYN Cookie性能压力将会显著增大。其实SYN数据报文配合其他各种标志位,都有特殊的攻击效果,这里不一一介绍。对DNS Query Flood而言,也有独特的技巧。

    首先,DNS可以分为普通DNS和授权域DNS,攻击普通DNS,IP地址需要随机伪造,并且指明服务器要求做递归解析;但攻击授权域DNS,伪造的源IP地址则不应该是纯随机的,而应该是事先收集的全球各地ISP的DNS地址,这样才能达到最大攻击效果,使流量清洗设备处于添加IP黑名单还是不添加IP黑名单的尴尬处境。添加会导致大量误杀,不添加黑名单则每个报文都需要反向探测从而加大性能压力。

    另一方面,前面提到,为了加大清洗设备的压力不命中缓存而需要随机化请求的域名,但需要注意的是,待解析域名必须在伪造中带有一定的规律性,比如说只伪造域名的某一部分而固化一部分,用来突破清洗设备设置的白名单。道理很简单,腾讯的服务器可以只解析腾讯的域名,完全随机的域名可能会直接被丢弃,需要固化。但如果完全固定,也很容易直接被丢弃,因此又需要伪造一部分。

    其次,对DNS的攻击不应该只着重于UDP端口,根据DNS协议,TCP端口也是标准服务。在攻击时,可以UDP和TCP攻击同时进行。

    HTTP Flood的着重点,在于突破前端的cache,通过HTTP头中的字段设置直接到达Web Server本身。另外,HTTP Flood对目标的选取也非常关键,一般的攻击者会选择搜索之类需要做大量数据查询的页面作为攻击目标,这是非常正确的,可以消耗服务器尽可能多的资源。但这种攻击容易被清洗设备通过人机识别的方式识别出来,那么如何解决这个问题?很简单,尽量选择正常用户也通过APP访问的页面,一般来说就是各种Web API。正常用户和恶意流量都是来源于APP,人机差别很小,基本融为一体难以区分。

    之类的慢速攻击,是通过巧妙的手段占住连接不释放达到攻击的目的,但这也是双刃剑,每一个TCP连接既存在于服务端也存在于自身,自身也需要消耗资源维持TCP状态,因此连接不能保持太多。如果可以解决这一点,攻击性会得到极大增强,也就是说Slowloris可以通过stateless的方式发动攻击,在客户端通过嗅探捕获TCP的序列号和确认维护TCP连接,系统内核无需关注TCP的各种状态变迁,一台笔记本即可产生多达65535个TCP连接。

    前面描述的,都是技术层面的攻击增强。在人的方面,还可以有一些别的手段。如果SYN Flood发出大量数据包正面强攻,再辅之以Slowloris慢速连接,多少人能够发现其中的秘密?即使服务器宕机了也许还只发现了SYN攻击想去加强TCP层清洗而忽视了应用层的行为。种种攻击都可以互相配合,达到最大的效果。攻击时间的选择,也是一大关键,比如说选择维护人员吃午饭时、维护人员下班堵在路上或者在地铁里无线上网卡都没有信号时、目标企业在举行大规模活动流量飙升时等。
    来自P2P网络的攻击

    前面的攻击方式,多多少少都需要一些傀儡机,即使是HTTP Flood也需要搜索大量的匿名代理。如果有一种攻击,只需要发出一些指令,就有机器自动上来执行,才是完美的方案。这种攻击已经出现了,那就是来自P2P网络的攻击。

    大家都知道,互联网上的P2P用户和流量都是一个极为庞大的数字。如果他们都去一个指定的地方下载数据,使成千上万的真实IP地址连接过来,没有哪个设备能够支撑住。拿BT下载来说,伪造一些热门视频的种子,发布到搜索引擎,就足以骗到许多用户和流量了,但这只是基础攻击。

    展开全文
  • DDoS原理、分类与防御

    2020-12-28 11:16:14
    文章主要介绍了DDoS原理与防御方法。

    一、DDoS是什么

    DDoS攻击,又称为分布式拒绝服务 (distributed denial-of-service attack,简称DDoS攻击);攻击是通过大规模 Internet 流量淹没目标服务器或其周边基础设施以破坏目标服务器、服务或网络正常流量的恶意行为。DDoS 攻击利用多台受损计算机系统作为攻击流量来源以达到攻击效果。利用的机器可以包括计算机,也可以包括其他联网资源(如 IoT 设备)。总体而言,DDoS 攻击好比高速公路发生交通堵塞,妨碍常规车辆抵达预定目的地。
    在这里插入图片描述

    据2014年统计,被确认为大规模DDoS的攻击已达平均每小时28次。DDoS发起者一般针对重要服务和知名网站进行攻击,如银行、信用卡支付网关、甚至根域名服务器等。

    1. DDoS 攻击的工作原理

    DDoS 攻击是通过连接互联网的计算机网络进行的。

    这些网络由计算机和其他设备(例如 IoT 设备)组成,它们感染了恶意软件,从而被攻击者远程控制。这些个体设备称为机器人(或僵尸),一组机器人则称为僵尸网络。

    一旦建立了僵尸网络,攻击者就可通过向每个机器人发送远程指令来发动攻击。
    在这里插入图片描述

    当僵尸网络将受害者的服务器或网络作为目标时,每个机器人会将请求发送到目标的 IP 地址,这可能导致服务器或网络不堪重负,从而造成对正常流量的拒绝服务。

    由于每个机器人都是合法的 Internet 设备,因而可能很难区分攻击流量与正常流量。

    2. 如何识别 DDoS 攻击

    DDoS 攻击最明显的症状是网站或服务突然变慢或不可用。但是,造成类似性能问题的原因有多种(如合法流量激增),因此通常需要进一步调查。流量分析工具可以帮助您发现 DDoS 攻击的一些明显迹象:

    • 来自单个 IP 地址或 IP 范围的可疑流量
    • 来自共享单个行为特征(例如设备类型、地理位置或 Web 浏览器版本)的用户的大量流量
    • 对单个页面或端点的请求数量出现不明原因的激增
    • 奇怪的流量模式,例如一天中零碎时间上的激增或看似不自然的模式(例如,每 10 分钟出现一次激增)

    3. 常见的 DDoS 攻击有哪几类?

    不同的 DDoS 攻击手段针对不同的网络连接组件。为了解不同 DDoS 攻击的工作原理,必需掌握建立网络连接的方式。Internet 网络连接由许多不同的组件或“层”构成。就像打地基盖房子一样,模型中的每一步都有不同的目的。OSI 模型(如下图所示)是一个概念框架,用于描述 7 个不同层级的网络连接。
    OSI 模型
    虽然几乎所有 DDoS 攻击都涉及用流量淹没目标设备或网络,但攻击可以分为三类。攻击者可能利用一种或多种不同的攻击手段,也可能根据目标采取的防范措施循环使用多种攻击手段。

    (1)攻击带宽——容量耗尽攻击

    在这里插入图片描述
    (1) 直接攻击。直接攻击是指攻击者利用控制的大量主机对受害者发送大量的数据流量, 使得受害者的网络带宽被占据, 并大量消耗服务器和网络设备的处理能力, 达到拒绝服务攻击的目的。例如ICMP/IGMP洪水攻击, UDP洪水攻击等都是典型的DDoS直接攻击方式。

    (2) 反射和放大攻击。直接攻击不仅效率低而且容易被追踪, 所以攻击者更多地选择反射攻击。反射攻击又称DRDoS (Distributed Reflection Denial of Service, 分布式反射拒绝服务) , 是指攻击者利用路由器、服务器等设施对请求产生应答, 从而反射出大量的流量对受害者进行攻击的一种DDoS攻击方式。这种攻击方式隐蔽, 更大危害还来自于使用反射过程的放大。放大是一种特殊的反射攻击, 其特殊之处在于反射器对于网络流量具有放大作用, 可以将攻击者较小的流量放大成较大流量, 从而造成更加严重的带宽消耗。

    (3) 攻击链路。攻击链路与前面提到的攻击方法不同, 攻击对象不是服务器而是骨干网络上的带宽资源。一种典型的链路攻击方式是Coremelt攻击。首先, 攻击者通过traceroute等手段确定各个僵尸主机与攻击链路之间的位置关系。然后, 由攻击者将僵尸网络分成两部分, 并控制这两部分之间通过骨干网络进行通信。大量的数据包通过骨干网络, 将会造成骨干网络的拥堵和延时。从骨干网络上来看, 通过网络的数据包是真实存在的, 并没有任何有效的方式将真正的数据包与拒绝服务攻击的数据区分开来, 这样使得这种攻击方式更加隐蔽和难以防范。

    容量耗尽攻击攻击目标:此类攻击尝试耗尽目标和大型 Internet 之间的可用带宽,从而造成拥塞。运用某种放大攻击或其他生成大量流量的手段(如僵尸网络请求),向目标发送大量数据。
    放大示例
    跟交通堵塞情况一样,大家都应该清楚:当网络数据包的数量达到或者超过上限时,会出现网络拥堵、响应缓慢的情况。DDoS 就是利用这个原理,发送大量网络数据包,占满被攻击目标的全部带宽,从而造成正常请求失效,达到拒绝服务的目的。

    攻击者可以使用 ICMP 洪水攻击(即发送大量 ICMP 相关报文)、或者 UDP 洪水攻击(即发送用户数据报协议的大包或小包),使用伪造源 IP 地址方式进行隐匿,并对网络造成拥堵和服务器响应速度变慢等影响。

    但是,这种直接方式通常依靠受控主机本身的网络性能,所以效果不是很好,还容易被查到攻击源头。于是反射攻击就出现,攻击者使用特殊的数据包,即 IP 地址指向作为反射器的服务器,源 IP 地址被伪造成攻击目标的 IP,反射器接收到数据包的时候就被骗了,会将响应数据发送给被攻击目标,然后就会耗尽目标网络的带宽资源。

    DNS 放大: 利用伪造的 IP 地址(受害者的 IP 地址)向开放式 DNS 服务器发出请求后,目标 IP 地址将收到服务器发回的响应。DNS 放大就好比有人打电话给餐馆说“每道菜都订一份,请给我回电话复述整个订单”,而提供的回电号码实际上属于受害者。几乎不费吹灰之力,就能产生很长的响应并发送给受害者。

    (2)攻击系统——协议攻击

    在这里插入图片描述
    (1) 攻击TCP连接。TCP是一种面向连接的、可靠的、基于字节流量的传输层控制协议。由于在设计之初考虑更多的是协议的可用性, 缺乏对协议的安全性进行周密比较和详细描述, 因此TCP协议存在许多安全缺陷和安全问题。TCP连接洪水攻击的原理, 就是在建立三次握手过程中, 服务器会创建并保存TCP连接信息, 该信息会被保存在连接表中。但是, 连接表中的空间是有限的, 一旦连接表中存储的数据超过了其最大数目, 服务器就无法创建新的TCP连接。攻击者利用大量的受控主机, 占据连接表中所有空间, 使得目标无法建立新的TCP连接。当大量的受控主机进行攻击时, 其攻击效果非常明显。攻击手段主要有:SYN洪水攻击、PSH+ACK洪水攻击、RST攻击、Sock stress攻击等。

    (2) 攻击SSL连接。安全套接字 (Secure Sockets Layer, SSL) 是为网络通信协议提供安全及数据完整性的一种安全协议。其在传输层对数据进行加密, 然而SSL协议在加密、解密和密钥协商的过程中会消耗大量的系统资源。SSL洪水攻击的原理, 就是在SSL握手过程中, 无论接收的数据是否有效, 只能先进行解密才能进行验证, 所以攻击者利用这个特性, 向被攻击者发送大量的无用数据, 消耗目标大量的计算资源。

    协议攻击攻击目标:协议攻击(也称为状态表耗尽攻击)旨在耗尽 Web 应用程序服务器或中间资源(如防火墙和负载均衡器)的可用状态表容量,进而导致服务中断。协议攻击利用协议堆栈第 3 层和第 4 层的弱点致使目标无法访问。

    在这里插入图片描述

    创建 TCP 连接需要客户端与服务器进行三次交互,也就是常说的“三次握手”。这个信息通常被保存在连接表结构中,但是表的大小有限,所以当超过存储量,服务器就无法创建新的 TCP 连接。

    攻击者利用这一点,用受控主机建立大量恶意的 TCP 连接,占满被攻击目标的连接表,使其无法接受新的 TCP 连接请求。如果攻击者发送了大量的 TCP SYN 报文,让服务器在短时间内产生大量的半开连接,连接表也会被很快占满,导致无法建立新的 TCP 连接,这个方式是 SYN 洪水攻击。

    SYN Flood: SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于1999年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

    标准的TCP三次握手过程如下:

    • 客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号;
    • 服务器在收到客户端的SYN报文后,将返回一个SYN+ACK(即确认Acknowledgement)的报文,表示客户端的请求被接受,同时TCP初始序号自动加1;
    • 客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加1。

    经过这三步,TCP连接就建立完成。TCP协议为了实现可靠传输,在三次握手的过程中设置了一些异常处理机制。第三步中如果服务器没有收到客户端的最终ACK确认报文,会一直处于SYN_RECV状态,将客户端IP加入等待列表,并重发第二步的SYN+ACK报文。重发一般进行3-5次,大约间隔30秒左右轮询一次等待列表重试所有客户端。另一方面,服务器在自己发出了SYN+ACK报文后,会预分配资源为即将建立的TCP连接储存信息做准备,这个资源在等待重试期间一直保留。更为重要的是,服务器资源有限,可以维护的SYN_RECV状态超过极限后就不再接受新的SYN报文,也就是拒绝新的TCP连接建立。

    协议攻击示例
    SYN Flood正是利用了上文中TCP协议的设定,达到攻击的目的。攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。

    简单来说,SYN 洪水就好比补给室中的工作人员从商店的柜台接收请求。

    工作人员收到请求,前去取包裹,再等待确认,然后将包裹送到柜台。一时之间,工作人员收到太多包裹请求,来不及确认,直到无法处理更多包裹,实在不堪重负,致使无人能对请求做出回应。

    此类攻击利用 TCP 握手(两台计算机发起网络连接时要经过的一系列通信),通过向目标发送大量带有伪造源 IP 地址的 TCP“初始连接请求”SYN 数据包来实现。

    目标计算机响应每个连接请求,然后等待握手中的最后一步,但这一步却永远不会发生,因此在此过程中耗尽目标的资源。

    (3)攻击应用——应用程序层攻击

    在这里插入图片描述
    (1) 攻击DNS服务器。DNS服务是网络服务中一项核心服务, 对DNS服务器攻击造成的影响更具威胁性。针对DNS服务器的攻击, 主要有DNS QUERY洪水攻击和DNS NXDOMAIN攻击两类。DNS QUERY洪水攻击是利用大量的查询请求, 使得DNS服务器进行大量查询, 消耗其大量的计算和存储资源, 使得DNS服务器的服务质量下降, 甚至完全停止服务。在发起该攻击方式时, 考虑到DNS服务器的查询方式, 需要发送大量的不同域名的地址查询, 而且尽量不要选择存储在DNS缓存记录里面的域名。DNS NXDO-MAIN攻击是DNS QUERY洪水攻击的一种变种, 后者攻击时发送的是真实的域名地址, 前者则发送大量不存在的域名地址, 使得DNS服务器进行大量递归查询, 从而使得正常的请求速度变慢, 甚至是拒绝服务。

    (2) 攻击Web服务器。随着Web的迅速发展, 人们的生活因此而变得方便快捷, 大量的商务也因此更加方便。所以一旦Web服务器遭到拒绝服务攻击, 那么就会对其承载的大量服务造成巨大的影响。攻击Web服务器, 常用的手段包括HTTP (s) 洪水攻击、Slowloris攻击、慢速POST请求攻击、数据处理过程攻击等。

    应用程序层攻击攻击目标:有时称为第 7 层 DDoS 攻击(参考 OSI 模型第 7 层),此类攻击的目标是耗尽目标资源。攻击目标是生成网页并传输网页响应 HTTP 请求的服务器层。 在客户端执行一项 HTTP 请求费用很低,但目标服务器做出响应却可能比较昂贵,因为服务器通常必须加载多个文件并运行数据库查询才能创建网页。第 7 层攻击很难防御,因为很难确定流量是否存在恶意。

    应用程序层攻击示例
    由于 DNS 和 Web 服务的广泛性和重要性,这两种服务就成为消耗应用资源的分布式拒绝服务攻击的主要目标。

    比如,向 DNS 服务器发送大量查询请求,从而达到拒绝服务的效果,当 DNS 服务的可用性受到威胁,互联网上大量的设备都会受到影响而无法正常使用;如果攻击者利用大量的受控主机不断地向 Web 服务器恶意发送大量 HTTP 请求,要求 Web 服务器处理,就会完全占用服务器资源,让正常用户的 Web 访问请求得不到处理,导致拒绝服务。一旦 Web 服务受到这种攻击,就会对其承载的业务造成致命的影响。

    DNS Query Flood: 作为互联网最基础、最核心的服务,DNS自然也是DDoS攻击的重要目标之一。打垮DNS服务能够间接打垮一家公司的全部业务,或者打垮一个地区的网络服务。前些时候风头正盛的黑客组织anonymous也曾经宣布要攻击全球互联网的13台根DNS服务器,不过最终没有得手。

    UDP攻击是最容易发起海量流量的攻击手段,而且源IP随机伪造难以追查。但过滤比较容易,因为大多数IP并不提供UDP服务,直接丢弃UDP流量即可。所以现在纯粹的UDP流量攻击比较少见了,取而代之的是UDP协议承载的DNS Query Flood攻击。简单地说,越上层协议上发动的DDoS攻击越难以防御,因为协议越上层,与业务关联越大,防御系统面临的情况越复杂。

    DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。

    HTTP Flood(cc攻击): HTTP 洪水攻击类似于同时在大量不同计算机的 Web 浏览器中一次又一次地按下刷新,大量 HTTP 请求涌向服务器,导致拒绝服务。

    这种类型的攻击有简单的,也有复杂的。

    较简单的实现可以使用相同范围的攻击 IP 地址、referrer 和用户代理访问一个 URL。复杂版本可能使用大量攻击性 IP 地址,并使用随机 referrer 和用户代理来针对随机网址。

    简单来说,HTTP Flood是针对Web服务在第七层协议发起的攻击。它的巨大危害性主要表现在三个方面:发起方便、过滤困难、影响深远。

    SYN Flood和DNS Query Flood都需要攻击者以root权限控制大批量的傀儡机。收集大量root权限的傀儡机很花费时间和精力,而且在攻击过程中傀儡机会由于流量异常被管理员发现,攻击者的资源快速损耗而补充缓慢,导致攻击强度明显降低而且不可长期持续。HTTP Flood攻击则不同,攻击者并不需要控制大批的傀儡机,取而代之的是通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者通过匿名代理对攻击目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取代理并不是难事,因此攻击容易发起而且可以长期高强度的持续。

    另一方面,HTTP Flood攻击在HTTP层发起,极力模仿正常用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工作得很好的规则,换一个场景可能带来大量的误杀。

    最后,HTTP Flood攻击会引起严重的连锁反应,不仅仅是直接导致被攻击的Web前端响应缓慢,还间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器都带来影响。

    有意思的是,HTTP Flood还有个颇有历史渊源的昵称叫做CC攻击。CC是Challenge Collapsar的缩写,而Collapsar是国内一家著名安全公司的DDoS防御设备。从目前的情况来看,不仅仅是Collapsar,所有的硬件防御设备都还在被挑战着,风险并未解除。

    (4)慢速连接攻击

    提起攻击,第一反应就是海量的流量、海量的报文。但有一种攻击却反其道而行之,以慢著称,以至于有些攻击目标被打死了都不知道是怎么死的,这就是慢速连接攻击,最具代表性的是rsnake发明的Slowloris。

    HTTP协议规定,HTTP Request以\r\n\r\n结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端,如a:b\r\n,导致服务端认为HTTP头部没有接收完成而一直等待。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求。

    很快的,Slowloris开始出现各种变种。比如POST方法向Web Server提交数据、填充一大大Content-Length但缓慢的一个字节一个字节的POST真正数据内容等等。

    (5)混合攻击

    在实际的生活中,攻击者并不关心使用的哪种攻击方法管用,只要能够达到目的,一般就会发动其所有的攻击手段,尽其所能的展开攻势。对于被攻击目标来说,需要面对不同的协议、不同资源的分布式拒绝服务攻击,分析、响应和处理的成本就会大大增加。

    随着僵尸网络向小型化的趋势发展,为降低攻击成本,有效隐藏攻击源,躲避安全设备,同时保证攻击效果,针对应用层的小流量慢速攻击已经逐步发展壮大起来。因此,从另一个角度来说,DDoS 攻击方面目前主要是两个方面:一是 UDP 及反射式大流量高速攻击,二是多协议小流量及慢速攻击。

    一般而言,高级攻击者从来不会使用单一的手段进行攻击,而是根据目标环境灵活组合。普通的SYN Flood容易被流量清洗设备通过反向探测、SYN Cookie等技术手段过滤掉,但如果在SYN Flood中混入SYN+ACK数据包,使每一个伪造的SYN数据包都有一个与之对应的伪造的客户端确认报文,这里的对应是指源IP地址、源端口、目的IP、目的端口、TCP窗口大小、TTL等都符合同一个主机同一个TCP Flow的特征,流量清洗设备的反向探测和SYN Cookie性能压力将会显著增大。其实SYN数据报文配合其他各种标志位,都有特殊的攻击效果,这里不一一介绍。对DNS Query Flood而言,也有独特的技巧。

    首先,DNS可以分为普通DNS和授权域DNS,攻击普通DNS,IP地址需要随机伪造,并且指明服务器要求做递归解析;但攻击授权域DNS,伪造的源IP地址则不应该是纯随机的,而应该是事先收集的全球各地ISP的DNS地址,这样才能达到最大攻击效果,使流量清洗设备处于添加IP黑名单还是不添加IP黑名单的尴尬处境。添加会导致大量误杀,不添加黑名单则每个报文都需要反向探测从而加大性能压力。

    另一方面,前面提到,为了加大清洗设备的压力不命中缓存而需要随机化请求的域名,但需要注意的是,待解析域名必须在伪造中带有一定的规律性,比如说只伪造域名的某一部分而固化一部分,用来突破清洗设备设置的白名单。道理很简单,腾讯的服务器可以只解析腾讯的域名,完全随机的域名可能会直接被丢弃,需要固化。但如果完全固定,也很容易直接被丢弃,因此又需要伪造一部分。

    其次,对DNS的攻击不应该只着重于UDP端口,根据DNS协议,TCP端口也是标准服务。在攻击时,可以UDP和TCP攻击同时进行。

    HTTP Flood的着重点,在于突破前端的cache,通过HTTP头中的字段设置直接到达Web Server本身。另外,HTTP Flood对目标的选取也非常关键,一般的攻击者会选择搜索之类需要做大量数据查询的页面作为攻击目标,这是非常正确的,可以消耗服务器尽可能多的资源。但这种攻击容易被清洗设备通过人机识别的方式识别出来,那么如何解决这个问题?很简单,尽量选择正常用户也通过APP访问的页面,一般来说就是各种Web API。正常用户和恶意流量都是来源于APP,人机差别很小,基本融为一体难以区分。

    (6)来自P2P网络的攻击

    前面的攻击方式,多多少少都需要一些傀儡机,即使是HTTP Flood也需要搜索大量的匿名代理。如果有一种攻击,只需要发出一些指令,就有机器自动上来执行,才是完美的方案。这种攻击已经出现了,那就是来自P2P网络的攻击。

    高级P2P攻击,是直接欺骗资源管理服务器。如迅雷客户端会把自己发现的资源上传到资源管理服务器,然后推送给其他需要下载相同资源的用户,这样,一个链接就发布出去。通过协议逆向,攻击者伪造出大批量的热门资源信息通过资源管理中心分发出去,瞬间就可以传遍整个P2P网络。更为恐怖的是,这种攻击是无法停止的,即使是攻击者自身也无法停止,攻击一直持续到P2P官方发现问题更新服务器且下载用户重启下载软件时为止。

    4. DDoS攻击检测技术

    (1)基本方法

    常见的入侵检测方法分为误用检测和异常检测两种。误用检测通过匹配攻击基本特征库检测攻击, 一旦发生攻击, 系统能够快速作出判断, 且误报率低。异常检测则通过发现当前网络状态明显偏离正常状态检测攻击。由于误用检测只能检测攻击类型已知、攻击报文具有明显误用特征的入侵行为, 因此对系统漏洞型的DDoS攻击有较好的作用。随着DDoS攻击的日益发展, 通过操纵大量的傀儡机来达到攻击目标。在原来伪造大量虚假报文的基础上, 改进到可以发送大量的真实报文。所以误用检测对DDoS攻击已经不能有效地进行阻止, 异常检测在防御DDoS攻击发挥着日益重要的作用。

    (2)基于流量特征的攻击检测

    基于流量特征的攻击检测是一种基于知识的检测方法。首先收集已知的DDoS攻击的各种特征, 然后将当前网络中的数据包与收集到的各种数据特征进行比较。如果特征与DDoS攻击的特征匹配, 则可以检测出遭受了DDoS攻击。这种检测方法能够准确检测攻击行为, 辨别攻击的类型, 可以采用相应措施来阻止攻击。但缺点是不能检测未知的入侵, 总是滞后于新出现的攻击方式, 需要不断更新特征库, 对系统依赖性较大, 不但系统移植性差, 而且维护工作量也大。这种检测方法一般用于检测利用漏洞型的DDoS攻击。基于流量特征的攻击检测主要使用了特征匹配、模型推理、状态转换和专家系统的方法。

    (3)基于流量异常的攻击检测

    基于流量异常的检测是目前常用的方法。基于流量的攻击方法必然会带来流量异常变化。因此, 通过建立模型来判断流量是否异常, 从而知道服务器是否被攻击。流量异常检测可以检测到未知类型的攻击, 然而仅仅通过流量的异常变化并不能判断是否是因为流量攻击而导致的流量异常变化。如正常上班时间周一到周五, 公司服务器的访问数量是一定的, 但是流量异常变化可能是由于人员突然集中或者发生紧急情况人员突然撤离。由此可知流量导致的变化不只是由于攻击造成的, 还有种种可能的原因, 要从中将正常的流量变化与遭受攻击时的流量变化进行区分, 需要确定正常流量是如何变化的。这是确定遭到攻击所必须解决的问题。

    已有研究中, 大量异常流量是通过检测时的流量特征进行建模来识别攻击。这种单纯依靠检测时的流量进行区分攻击的方式是不准确的。一旦出现与攻击类似的异常流量变化就会导致检测结果出错。所以这种检测方式是不完善的。


    二、DDoS 攻击工具

    (1) LOIC

    LOIC 是一个颇受欢迎的 DOS 攻击的淹没式工具,会产生大量流量,可以在多种平台运行,包括 Linux、Windows、Mac OS、Android 等。早在 2010 年,黑客组织对反对维基解密的公司和机构的攻击活动中,该工具被下载了 3 万次以上。

    LOIC 界面友好,易于使用,初学者也可以很快上手。但是由于该工具需要使用真实 IP 地址,现在已经停用。

    (2)HULK (HTTP Unbearable Load King)

    HULK 是另一个 DOS 攻击工具,这个工具使用 UserAgent 的伪造,来避免攻击检测,可以通过启动 500 线程对目标发起高频率 HTTP GET FLOOD 请求,更可怕的是每一次请求都是独立的,可以绕过服务端的缓存措施,让所有请求得到处理。HULK 是用 Python 语言编写,对获得的源码进行更改也非常方便。

    (3)R.U.D.Y.

    R-U-Dead-Yet 是一款采用慢速 HTTP POST 请求方式进行 DOS 攻击的工具,它提供了一个交互式控制台菜单,检测给定的 URL,并允许用户选择哪些表格和字段应用于 POST-based DOS 攻击,操作非常简单。

    而且,它也使用的是 Python 语言编写,可移植性非常好。R.U.D.Y.能够对所有类型的 Web 服务端软件造成影响,因此攻击的威胁非常大。这些工具在保持攻击力的同时还再加强易用性,而免费和开源降低了使用门槛。随着攻防对抗的升级,工具会越来越智能化。


    三、DDoS 防御

    (一)攻击源消除

    DDoS攻击需要大量的傀儡机才能完成, 离开了傀儡机那么攻击者就不能实施。因此, 可以采取各种措施防止攻击者获得大量傀儡机, 从攻击源头上消除攻击。攻击者能够控制的傀儡机大都是系统存在严重安全漏洞的计算机, 所以要防范计算机成为傀儡机, 就必须对主机的硬件或软件系统存在的安全漏洞进行全面检测, 及时打补丁、修补漏洞。当然在当前的网络体系中, 还可以通过破坏DDoS攻击形成的条件来对该攻击进行防范。当前网络架构下, 接收端被动接收报文, 而对于发送端没有约束。基于授权的攻击预防技术可以控制发送端的流量, 从而达到从源头上解决DDoS攻击。对于一部分不需要向外提供服务的对象, 也可以通过隐藏自己在网络上的存在, 从而达到防范DDoS攻击的效果。

    (二)攻击缓解

    若要缓解 DDoS 攻击,关键在于区分攻击流量与正常流量。

    例如,如果因发布某款产品导致公司网站涌现大批热情客户,那么全面切断流量是错误之举。如果公司从已知恶意用户处收到的流量突然激增,或许需要尽量缓解攻击。

    真正的难点在于区分真实客户流量与攻击流量。

    在现代 Internet 中,DDoS 流量以多种形式出现。流量设计可能有所不同,从非欺骗性单源攻击到复杂的自适应多方位攻击无所不有。

    多方位 DDoS 攻击采用多种攻击手段,以期通过不同的方式击垮目标,很可能分散各个层级的缓解工作注意力。

    同时针对协议堆栈的多个层级(如 DNS 放大(针对第 3/4 层)外加 HTTP 洪水(针对第 7 层))发动攻击就是多方位 DDoS 攻击的一个典型例子。

    为防护多方位 DDoS 攻击,需要部署多项不同策略,从而缓解不同层级的攻击。

    (1)黑洞路由

    有一种解决方案几乎适用于所有网络管理员:创建黑洞路由,并将流量汇入该路由。在最简单的形式下,当在没有特定限制条件的情况下实施黑洞过滤时,合法网络流量和恶意网络流量都将路由到空路由或黑洞,并从网络中丢弃。

    如果互联网设备遭受 DDoS 攻击,则该设备的互联网服务提供商(ISP)可能会将站点的所有流量发送到黑洞中作为防御。这不是理想的解决方案,因为它相当于让攻击者达成预期的目标:使网络无法访问。

    (2)速率限制

    限制服务器在某个时间段接收的请求数量也是防护拒绝服务攻击的一种方法。

    虽然速率限制对于减缓 Web 爬虫窃取内容及防护暴力破解攻击很有帮助,但仅靠速率限制可能不足以有效应对复杂的 DDoS 攻击。

    然而,在高效 DDoS 防护策略中,速率限制不失为一种有效手段。

    (3)Web 应用程序防火墙

    通过 DDoS 硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。

    Web Application Firewall (WAF) 是一种有效工具,有助于缓解第 7 层 DDoS 攻击。在互联网和源站之间部署 WAF 后,WAF 可以充当反向代理,保护目标服务器,防止其遭受特定类型的恶意流量入侵。

    通过基于一系列用于识别 DDoS 工具的规则筛选请求,可以阻止第 7 层攻击。有效的 WAF 的一个关键价值是能够快速实施自定义规则以应对攻击。

    (4)Anycast 网络扩散

    此类缓解方法使用 Anycast network,将攻击流量分散至分布式服务器网络,直到网络吸收流量为止。

    这种方法就好比将湍急的河流引入若干独立的小水渠,将分布式攻击流量的影响分散到可以管理的位置,从而分散破坏力。

    Anycast 网络在缓解 DDoS 攻击方面的可靠性取决于攻击规模及网络规模和效率。采用 Anycast 分布式网络是 Cloudflare 实施 DDoS防护策略的一个重要组成部分。

    Cloudflare 拥有 51 Tbps 的网络,比有记录的最大 DDoS 攻击大一个数量级。

    (5)采用高性能的网络设备

    要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDoS攻击是非常有效的。

    CDN 高防 IP是针对互联网服务器在遭受大流量的 DDoS 攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防 IP,将攻击流量引流到高防 IP,确保源站的稳定可靠,通常可以提供高达几百 Gbps 的防护容量,抵御一般的 DDoS 攻击绰绰有余。

    此外还可以:提高网络带宽保证;升级主机服务器硬件等等,这就是传说中的技术不够,用钱凑。
    在这里插入图片描述

    (6)高级DDoS 防护和缓解:Cloudflare CDN

    内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全国的海量加速节点,使其用户可就近获取所需内容,避免网络拥堵、地域、运营商等因素带来的访问延迟问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

    Cloudflare 的内容分发网络(CDN)是一组分布在不同地理位置的服务器,可确保快速交付 Internet 内容,包括 HTML 页面、JavaScript 文件、样式表和图像。在 Cloudflare 上缓存静态资源可减少服务器负载和带宽,不会因带宽峰值而产生额外费用。

    分布式拒绝服务(DDoS)攻击通过用流量淹没其基础架构来中断网站服务。Cloudflare 的 CDN 的网络容量为史上最大 DDoS 攻击的 15 倍,并且可以处理现代 DDoS 以确保您的网站正常运行。

    使用Cloudflare CDN的五个好处:

    1. 隐藏服务器IP,SYN/ACK攻击直接豁免,亦可避免攻击者扫描服务器端口找到漏洞;
    2. 防火墙前置,在CDN上即已缓解/过滤异常请求[GET/POST]压力;
    3. 验证码前置,即人机验证;(技术不够的DDoS攻击根本绕不过,攻击随即缓解;
    4. 缓存静态资源,大大减少服务器带宽压力;
    5. Page Rule,Page Rule 使您能够根据页面的 URL 进行各种操作,例如创建重定向、微调缓存行为或启用和禁用各种服务。

    分布式集群防御的特点是在每个节点服务器配置多个 IP 地址,并且每个节点能承受不低于 10G 的 DDoS 攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。

    服务器前端加CDN中转(免费的有百度云加速、360网站卫士、加速乐、安全宝等),如果资金充裕的话,可以购买高防的盾机,用于隐藏服务器真实IP,域名解析使用CDN的IP,所有解析的子域名都使用CDN的IP地址。此外,服务器上部署的其他域名也不能使用真实IP解析,全部都使用CDN来解析。另外,防止服务器对外传送信息泄漏IP,最常见的是,服务器不使用发送邮件功能,如果非要发送邮件,可以通过第三方代理(例如sendcloud)发送,这样对外显示的IP是代理的IP。总之,只要服务器的真实IP不泄露,10G以下小流量DDOS的预防花不了多少钱,免费的CDN就可以应付得了。如果攻击流量超过20G,那么免费的CDN可能就顶不住了,需要购买一个高防的盾机来应付了,而服务器的真实IP同样需要隐藏。

    (7)使用缓存

    后端对MySQL进行缓存处理,避免对数据库频繁查询;如使用Redis + PHP方案

    (8)静态化

    将网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,最好在需要调用数据库的脚本中,拒绝使用代理的访问,经验表明,使用代理访问你网站的 80%属于恶意行为。

    静态可以很好的减轻服务器负载,是湮灭DDoS攻击者最后的倔强;

    静态页面:htm、html、shtml、xml

    静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL,然后回车,浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。

    动态页面:asp、jsp、php、perl、cgi

    动态网页是相对于静态网页而言的。当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后在发送给浏览器(后面的处理就跟静态网页一样了)。很明显,动态网页中的“动态”是指服务器端页面的动态生成,相反,“静态”则指页面是实实在在的、独立的文件。

    由于静态页面不会涉及数据库请求,也无需经过PHP处理,几乎零消耗;这样的情况下,只需要使用到nginx,而nginx的高性能低消耗,基本无敌。

    实现静态化的方案:

    1. 部署CDN,缓存静态资源。如使用:Cloudflare CDN
    2. 配置静态镜像,自动切换静态镜像脚本:主要用于网页的排版展示,论坛,社区不可用(因为这些地方需要交互,需要大量调用数据库,PHP等)
    (9)封禁异常请求IP
    (10)使用TLS1.3

    Transport Layer Security (TLS) 保证客户端和 Web 服务器之间通过 HTTPS 进行加密通信。它取代了现已弃用的安全套接字层(SSL)协议。 使用 TLS 加密网络流量时,用户会在浏览器窗口中的 URL 框附近看到一个绿色挂锁。

    通过在 Cloudflare 仪表板的 SSL/TLS 应用中设置Minimum TLS Version,您可以管理域在通过 Cloudflare 进行代理时使用的 TLS 版本。

    TLS 1.3 是 TLS 协议的最新且最安全的版本。它具有比旧版本更短的延迟以及多个新功能。 当前在 Chrome(从第 66 版开始)和 Firefox(从第 60 版开始)中以及在 Safari 和 Edge 浏览器的开发中都支持 TLS 1.3。
    在这里插入图片描述

    (11)专项防御
    1. SYN Flood防御
      前文描述过,SYN Flood攻击大量消耗服务器的CPU、内存资源,并占满SYN等待队列。相应的,我们修改内核参数即可有效缓解。
      此外,可以分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。
      SYN Cookie的作用是缓解服务器资源压力。启用之前,服务器在接到SYN数据包后,立即分配存储空间,并随机化一个数字作为SYN号发送SYN+ACK数据包。然后保存连接的状态信息等待客户端确认。启用SYN Cookie之后,服务器不再分配存储空间,而且通过基于时间种子的随机数算法设置一个SYN号,替代完全随机的SYN号。发送完SYN+ACK确认报文之后,清空资源不保存任何状态信息。直到服务器接到客户端的最终ACK包,通过Cookie检验算法鉴定是否与发出去的SYN+ACK报文序列号匹配,匹配则通过完成握手,失败则丢弃。当然,前文的高级攻击中有SYN混合ACK的攻击方法,则是对此种防御方法的反击,其中优劣由双方的硬件配置决定
      tcp_max_syn_backlog则是使用服务器的内存资源,换取更大的等待队列长度,让攻击数据包不至于占满所有连接而导致正常用户无法完成握手。net.ipv4.tcp_synack_retries是降低服务器SYN+ACK报文重试次数,尽快释放等待资源。这三种措施与攻击的三种危害一一对应,完完全全地对症下药。但这些措施也是双刃剑,可能消耗服务器更多的内存资源,甚至影响正常用户建立TCP连接,需要评估服务器硬件资源和攻击大小谨慎设置。
      除了定制TCP/IP协议栈之外,还有一种常见做法是TCP首包丢弃方案,利用TCP协议的重传机制识别正常用户和攻击报文。当防御设备接到一个IP地址的SYN报文后,简单比对该IP是否存在于白名单中,存在则转发到后端。如不存在于白名单中,检查是否是该IP在一定时间段内的首次SYN报文,不是则检查是否重传报文,是重传则转发并加入白名单,不是则丢弃并加入黑名单。是首次SYN报文则丢弃并等待一段时间以试图接受该IP的SYN重传报文,等待超时则判定为攻击报文加入黑名单。
      首包丢弃方案对用户体验会略有影响,因为丢弃首包重传会增大业务的响应时间,有鉴于此发展出了一种更优的TCP Proxy方案。所有的SYN数据报文由清洗设备接受,按照SYN Cookie方案处理。和设备成功建立了TCP三次握手的IP地址被判定为合法用户加入白名单,由设备伪装真实客户端IP地址再与真实服务器完成三次握手,随后转发数据。而指定时间内没有和设备完成三次握手的IP地址,被判定为恶意IP地址屏蔽一定时间。除了SYN Cookie结合TCP Proxy外,清洗设备还具备多种畸形TCP标志位数据包探测的能力,通过对SYN报文返回非预期应答测试客户端反应的方式来鉴别正常访问和恶意行为。
      清洗设备的硬件具有特殊的网络处理器芯片和特别优化的操作系统、TCP/IP协议栈,可以处理非常巨大的流量和SYN队列。
    2. HTTP Flood防御
      HTTP Flood攻击防御主要通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。大型的互联网企业,会有庞大的CDN节点缓存内容。
      当高级攻击者穿透缓存时,清洗设备会截获HTTP请求做特殊处理。最简单的方法就是对源IP的HTTP请求频率做统计,高于一定频率的IP地址加入黑名单。这种方法过于简单,容易带来误杀,并且无法屏蔽来自代理服务器的攻击,因此逐渐废止,取而代之的是JavaScript跳转人机识别方案。
      HTTP Flood是由程序模拟HTTP请求,一般来说不会解析服务端返回数据,更不会解析JS之类代码。因此当清洗设备截获到HTTP请求时,返回一段特殊JavaScript代码,正常用户的浏览器会处理并正常跳转不影响使用,而攻击程序会攻击到空处。
    3. DNS Flood防御
      DNS攻击防御也有类似HTTP的防御手段,第一方案是缓存。其次是重发,可以是直接丢弃DNS报文导致UDP层面的请求重发,可以是返回特殊响应强制要求客户端使用TCP协议重发DNS查询请求。
      特殊的,对于授权域DNS的保护,设备会在业务正常时期提取收到的DNS域名列表和ISP DNS IP列表备用,在攻击时,非此列表的请求一律丢弃,大幅降低性能压力。对于域名,实行同样的域名白名单机制,非白名单中的域名解析请求,做丢弃处理。
    4. 慢速连接攻击防御
      Slowloris攻击防御比较简单,主要方案有两个。
      第一个是统计每个TCP连接的时长并计算单位时间内通过的报文数量即可做精确识别。一个TCP连接中,HTTP报文太少和报文太多都是不正常的,过少可能是慢速连接攻击,过多可能是使用HTTP 1.1协议进行的HTTP Flood攻击,在一个TCP连接中发送多个HTTP请求。
      第二个是限制HTTP头部传输的最大许可时间。超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。

    (三)攻击预防

    (1)减少公开暴露

    对于企业而言, 减少不必要的分开曝光是十分有效的防御DDoS攻击的一种方式, 及时关闭不必要的服务, 设置安全群组和私有网络, 禁止对主机的非开放服务, 限制打开最大SYN连接数, 限制特定IP地址的访问。通过这些方式可以减少受到攻击的可能性。

    (2)利用扩展和冗余

    DDoS攻击对不同的协议层具有多种攻击方式, 因此尽可能采取多种手段进行防范。利用扩展和冗余是在受到攻击前做好防范。它能使得系统在遭受攻击时具有一定的可扩展性, 不至于一旦受到攻击就将完全暂停服务, 尽可能减少DDoS攻击带来的危害。

    (3)提升网络带宽保证能力

    网络带宽直接决定抗DDoS攻击的能力, 如果带宽仅仅只能10M的话, 无论如何都不能抵御DDoS攻击。理论上讲网络带宽越大越好, 但是考虑到经济原因, 不可能无限制地将网络带宽提高, 要在经济能力允许的范围内尽量提高网络带宽的保证能力。

    (4)分布式资源共享服务器

    将数据和程序分布在多个服务器上, 建立分布式资源共享服务器。分布式资源共享服务器有利于协调整个系统共同解决问题, 进行更加优化的资源分配。能够克服传统的资源紧张与响应瓶颈的缺陷, 分布式规模越大, 防御攻击也就更加容易。

    (5)监控系统性能

    对系统性能进行监控也是预防DDoS攻击的一种重要方式, 不合理的服务器配置会使得系统容易被DDoS攻击, 对API、CDN和DNS等第三方服务进行监控, 对网络节点进行监视, 及时发现并清理可能出现的漏洞。当这些性能出现异常后, 及时进行维护。对网络日志进行定期查阅, 看是否有异常入侵, 及时做好防范工作。


    至此,文章也就进入尾声了。希望本文能够起到抛砖引玉之效,也欢迎大家的批评交流。


    如果您有任何疑问或者好的建议,期待你的留言、评论与关注!

    展开全文
  • CC+DDOS 原理

    2014-09-11 20:52:26
    网络安全,cc 攻击,ddos 攻击原理剖析
  • DDOS原理与防御

    千次阅读 多人点赞 2018-07-06 14:54:46
    这家公司早些年是做抗DDOS设备的,培训的时候就很粗略的讲了部分原理,但是我却对DDOS产生了浓厚的兴趣。一但有了兴趣,便有了研究下去的动力。所以我开始在网络上搜集各种DDOS文章、书籍,学习的同时还做了记录,在...

    0X00前言

    暑假无聊,找了一家公司实习,打算学点东西。这家公司早些年是做抗DDOS设备的,培训的时候就很粗略的讲了部分原理,但是我却对DDOS产生了浓厚的兴趣。一但有了兴趣,便有了研究下去的动力。所以我开始在网络上搜集各种DDOS文章、书籍,学习的同时还做了记录,在此与大家分享,文中必要之处,我会连同协议的工作方式及报文格式一并讲解,这样才能更好的理解攻击触发点。

    0X01DDOS简介

    DDOS(Distributed Denial of Service),又称分布式拒绝服务攻击。骇客通过控制多个肉鸡或服务器组成的僵尸网络,对目标发送大量看似合法请求,从而占用大量网络资源,瘫痪网络,阻止用户对网络资源的正常访问。

    0X02DDOS危害

    • 出口带宽堵死
    • 游戏掉线导致客户流失
    • 服务器连接数多,连接资源被耗尽
    • 服务器卡、慢、死机、无法连接

    0X03攻击来源

    • 高性能服务器配合发包软件
    • 可联网的设备(如打印机、摄像头、电视等等)
    • 移动设备(数量多,增长速度快,其高性能利于组建僵尸网络)
    • 个人PC(存在漏洞的PC或一些黑客迷自愿成为DDOS一员)
    • 骇客控制的僵尸网络(僵尸网络又分为IRC型、HTTP型、P2P型)

    0X04流量特点

    • IP地址随机或固定某些IP段随机
    • 没有完整完成三次握手
    • 地址多数是伪造的
    • 请求数量大、快

    0X05导致DDOS原因

    人类因素

    • 金钱利益
    • 政治冲突
    • 宗教冲突
    • 为求出名

    非人类因素

    • 带宽上限
    • 协议缺陷
    • 设备性能上限
    • 应用性能上限
    • 系统性能上限

    0X06攻击类型及防御

    Smurf攻击
    攻击者向网关发送ICMP请求包,并将该ICMP请求报文的源地址伪造成受害主机IP地址,目的地址为广播地址。路由器在接受到该数据包,发现目的地址是广播地址,就会将该数据包广播出去,局域网内所有的存活主机都会受到一个ICMP请求包,源地址是受害主机IP。接下来受害主机就会收到该网络内所有主机发来的ICMP应答报文,通过大量返回的ICMP应答报文来淹没受害主机,最终导致网络阻塞,受害主机崩溃。下面是smurf攻击示意图


    防护方案:

    • 禁止路由器广播ICMP请求包;
    • 禁止操作系统对广播发出的ICMP请求包做出响应;
    • 配置防火墙静止来自你所处网络外部的ping包

    TearDrop攻击

    在了解这种攻击之前,需要先知道什么是IP fragmentation(数据包分片)。数据在网络中传输必定会产生数据包被分片,因为每种网络都有不同的最大单个数据包的大小,也就是常说的MTU(Maximum Transmission Unit,最大传输单元)。当要传输的数据超过你要通信的那台主机所处网络的MTU时,数据包就会被分片进行传输,然后在到达目的地再重新组装成原来的数据包,下面是数据包分片重组过程


    TearDrop攻击,就是通过设置错误的片偏移,使得数据包到达目的地时,服务器无法重新组合数据包,因为数据包的组合是通过片偏移来组装的,最终导致崩溃。对比一下正常IP数据包和错误IP数据包


    这种攻击主要对旧的windows版本和Linux版本有效,防护的话,可以检测发来的数据包片偏移是否合法,如果合法在组装,不合法直接丢弃。例如这个:分片重组检查算法

    Land Attack

    攻击者发动Land Attack攻击时,需要先发出一个SYN数据包,并将数据包的源IP与目的IP都设置成要攻击的目标IP,这样目标在接收到SYN数据包后,会根据源IP回应一个SYN+ACK数据包,即和自己建立一个空连接,然后到达idel超时时间时,才会释放这个连接。攻击者发送大量这样的数据包,从而耗尽目标的TCP连接池,最终导致拒绝服务。攻击过程如下


    防御方案参考如下:这种攻击对早期系统有效。通过设置防火墙和路由规则,检测源IP与目的IP相同的数据包,丢弃、过滤这种数据包。

    SYN FLOOD攻击

    SYN FLOOD攻击是在TCP三次握手过程中产生的。攻击者通过发送大量伪造的带有SYN标志位的TCP报文,与目标主机建立了很多虚假的半开连接,在服务器返回SYN+ACK数据包后,攻击者不对其做出响应,也就是不返回ACK数据包给服务器,这样服务器就会一直等待直到超时。这种攻击方式会使目标服务器连接资源耗尽、链路堵塞,从而达到拒绝服务的目的。SYN FLOOD攻击图示如下

    防御:
    SYNCheck:使用防护设备,3次握手变成了6次握手,由防护设备检测SYN请求是否合法,通过后再由防护设备将报文转发给服务器,后续报文仍由防护设备代理。
    Micro blocks:管理员可以在内存中为每个SYN请求创建一个小索引(小于16字节),而不必把整个连接对象存入内存。
    RST cookies:在客户端发起第一个SYN请求后,服务器故意回应一个错误的SYN+ACK报文。如果合法用户收到这个报文,就会给服务器响应RST报文。当服务器收到这个报文时,就将这个主机的IP记录进合法IP列表,下次该主机发起SYN请求时,就可以直接通过了。
    STACK tweaking:管理员可以调整TCP堆栈以减缓SYN泛洪攻击的影响。这包括减小超时时间,等到堆栈存释内放时再分配连接,否则就随机性地删除传入的连接。

    ACK FLOOD攻击

    ACK FLOOD攻击是利用TCP三次握手过程。这里可以分为两种。
    第一种:攻击者伪造大量的SYN+ACK包发送给目标主机,目标主机每收到一个SYN+ACK数据包时,都会去自己的TCP连接表中查看有没有与ACK的发送者建立连接 ,如果有则发送ACK包完成TCP连接,如果没有则发送ACK+RST 断开连接。但是在查询过程中会消耗一定的CUP计算资源。如果瞬间收到大量的SYN+ACK数据包,将会消耗服务器的大量cpu资源,导致正常的连接无法建立或增加延迟,甚至造成服务器瘫痪、死机。


    第二种:利用TCP三次握手的ACK+SYN应答,攻击者向不同的服务器发送大量的SYN请求,这些SYN请求数据包的源IP均为受害主机IP,这样就会有大量的SYN+ACK应答数据包发往受害主机,从而占用目标的网络带宽资源,形成拒绝服务。


    通常DDOS攻击会将ACK flood与SYN flood结合在一起,从而扩大威力。防御方案可参考如下:采用CDN进行流量稀释;避免服务器IP暴露在公网上;通过限速或动态指纹的方式;利用对称性判断来分析出是否有攻击存在;在连续收到用户发送的ACK包时,中断回话,让其重连。

    UDP FLOOD攻击

    UDP(User Datagram Protocol,用户数据报协议),是一种无连接和无状态的网络协议,UDP不需要像TCP那样进行三次握手,运行开销低,不需要确认数据包是否成功到达目的地。这就造成UDP泛洪攻击不但效率高,而且还可以在资源相对较少的情况下执行。UDP FLOOD可以使用小数据包(64字节)进行攻击,也可以使用大数据包(大于1500字节,以太网MTU为1500字节)进行攻击。大量小数据包会增大网络设备处理数据包的压力;而对于大数据包,网络设备需要进行分片、重组,最终达到的效果就是占用网络传输接口的带宽、网络堵塞、服务器响应慢等等。


    防御方案:限制每秒钟接受到的流量(可能产生误判);通过动态指纹学习(需要攻击发生一定时间),将非法用户加入黑名单。

    NTP放大攻击

    NTP(Network Time Protocol,网络时间协议),是用来使计算机网络时间同步化的一种协议,它可以使计算机与时钟源进行同步化并提供高精度的时间校正,使用UDP123端口进行通信。通常在NTP服务器上会有一些调试接口,而利用这些接口中的monlist请求,就可触发放大攻击。当主机向NTP服务器发送monlist查询请求时,NTP服务器会将与之进行时间同步的最后600个IP地址返回。所以攻击者只需要将源地址伪造为受害主机的IP,向NTP服务器发送一个monlist查询请求包,受害主机就会收到大量的UDP响应包。这种攻击在放大攻击里,危害相对较大。下面是NTP放大攻击示意图


    总结一下这种攻击产生的原因,请求与响应数据包不等价;UDP协议的通信模糊性(无数据传输确认机制);以及NTP服务器的无认证机制。再来谈谈防御方案:使用防 DDoS 设备进行清洗;加固并升级NTP服务器;在网络出口封禁 UDP 123 端口;通过网络层或者借助运营商实施 ACL 来防御;关闭现在 NTP 服务的 monlist 功能,在ntp.conf配置文件中增加disable monitor选项。

    DNS放大攻击

    DNS(Domain Name System,域名系统),由于使用IP地址来记忆各个网站比较困难,所以就产生了使用主机名称来表示对应的服务器,主机名称通过域名解析的过程转换成IP地址。下面来看一下DNS报文格式,以便了解攻击发生在何处。


    报文首部格式


    报文首部各字段含义如下,其中绿色高亮是攻击点之一,之后会分析


    下面是问题记录中查询类型可设置的值,我们发现最后一个ANY类型会请求所有记录,这也是一个攻击点


    DNS查询可分为递归查询和迭代查询,下面是DNS迭代查询图


    再来看DNS递归查询图



    从DNS数据包结构以及DNS递归查询过程,我们就可以大致分析出攻击原理。首先,攻击者向僵尸网络发出指令,使僵尸网络中的每一台主机均发出一个伪造源地址的DNS查询请求包,这些请求包查询类型设置为ANY,因为这种类型会请求所有的记录,这些记录会在返回的响应包中,也就是说这种数据包的大小较其他类型是最大的。接着查询类型设为递归查询,为什么不是迭代查询呢,仔细看两种查询的过程图可发现,如果迭代查询第一个请求的DNS服务器没有查询到结果,那么第一个请求的服务器会返回另一个DNS服务器IP,让请求主机向这个IP去继续查询,然而攻击者的数据包源地址是伪造的,所以并不会发起第二次查询,因为第一次查询根本就不是它发起的;而递归查询却是在查询到结果之后,才返回给查询请求发起者。利用这两个特点,攻击者就可以成功发起DNS放大攻击。这种普通的查询请求可以将攻击流量放大2~10倍,如果想增大攻击倍数,可以使用RFC 2671中定义的DNS拓展机制EDNS0。未使用EDNS0时,若响应包大小小于512字节,就使用UDP封装数据;若响应包大小超过512字节,就使用TCP连接或者服务器截断响应报文,丢弃超过512字节的部分,并把TC位置1。这两种方式都不利于进行DNS放大攻击。然而在开启EDNS0机制后,增加了OPT RR字段,这两个字段包含了能够处理的最大UDP报文大小信息,所以攻击者将这个信息设置的很大,服务器就会根据这个信息生成响应报文。最后看一下DNS放大攻击演示图


    防御的话,可以参考以下几点:联系ISP清洗上游流量;DNS服务器只对可信域内提供服务,限制对域外用户提供DNS解析服务;对单个IP的查询速率做限制;拥有足够的带宽承受小规模攻击;关闭DNS服务器的递归查询;利用防火墙等对ANY Request进行过滤。

    SNMP放大攻击

    SNMP(Simple Network Management Protocol,简单网络管理协议),是目前网络中应用最为广泛的网络管理协议,它提供了一个管理框架来监控和维和互联网设备,它使用UDP161端口进行通信。攻击者向互联网上开启SNMP服务的设备发送GetBulk请求,并使用默认通信字符串作为认证凭据。常见的默认通信字符串如public、private以及一些厂商默认的通信字符串。GetBulk请求是在SNMPv2中添加的的,该请求会让SNMP设备尽可能多的返回数据,这也就是SNMP放大攻击的利用点。下面来看一下SNMP的PDU格式


    攻击者先将源地址改成要攻击的目标IP,再使用默认的通信字符串,向大量SNMP设备发出GetBulk请求,设备收到GetBulk请求数据包后,会将一大段的设备检索信息返回给目标主机,最终目标主机会被这些SNMP设备返回的数据包淹没,导致拒绝服务。看一下SNMP的攻击图


    可以采取以下措施进行防御:禁止已开启SNMP的设备响应GetBulk请求,避免自己的设备被黑客利用;更改默认的通信字符串;修改默认端口161;隐藏开启SNMP设备的公网IP

    TFTP放大攻击

    TFTP(Trivial File Transfer Protocol,简单文件传输协议),使用UDP 69端口进行通信,由于TFTP使用的是不可靠的UDP协议,所以他不能确保发送的任何报文都能真正到达目的地,因此他必须使用定时器来检测并重传报文,以下是TFTP传输文件过程图


    超时重传机制


    可以看到,TFTP协议将数据分成好多个数据块进行传输,每个数据块最大为512字节,客户端在接受到数据块时,需要给服务器端返回一个ACK确认报文,然后才会继续传输下一个报文。若服务器没有收到客户端发来ACK报文,则在时间到达超时计数器时,便会开启重传机制,这也就是攻击利用点。攻击者利用TFTP协议上的缺陷,伪造源地址向服务器发起请求,服务器回复的第1个data数据包后无法收到客户端发送的ACK。此时TFTP就会利用他的重传机制,定时重传第1个data数据包,当攻击者发出大量的这种请求时,TFTP放大攻击也就发生了。来看一下TFTP放大攻击示意图


    防御方案可参考如下:不要将TFTP服务器暴露在公网上;对流经TFTP服务的流量进行入侵检测;将重传(数据包)率设置为1;只为信任域内的主机提供服务。

    CC攻击

    CC攻击(ChallengeCollapsar)又称作HTTP 泛洪攻击,其原理是攻击者控制肉鸡、僵尸网络或使用代理服务器,不停地向目标的web服务发送大量合法请求,使得正常用户的web请求处理缓慢甚至得不到处理,制造大量的后台数据库查询动作,消耗目标CPU资源,最终导致服务器宕机崩溃。这种攻击方式不需要很大的带宽,且无法使用伪造IP地址进行攻击,需要真实的机器与web服务器建立连接,因为HTTP协议是建立在TCP协议上,必须先进行TCP三次握手才能进行HTTP通信。如果目标web服务器支持HTTPS,那么发起的HTTPS泛洪攻击还能穿透一些防护设备。


    防御方案:必要时将网页做成静态,减少数据库的使用;限制连接数量;修改最大超时时间;让用户手动输入验证码;在response报文中添加特殊字段,验证IP合法性;屏蔽频繁访问服务器的主机IP。

    HTTP慢速攻击

    Slow HTTP Dos AttACKs(慢速HTTP拒绝服务攻击),黑客模拟正常用户向web服务器发送慢速http请求,由于是慢速的,服务器端需要保持连接资源,直到数据传输结束或请求结束才可释放连接。当服务器端建立了大量这样的慢速连接,就会导致服务器拒绝服务。这种攻击可以分为两类,一类是客户端发数据,另一类是客户端读取服务器发来的数据。HTTP慢速攻击对基于线程处理的web服务器影响显著,如apache、dhttpd,而对基于事件处理的web服务器影响不大,如ngix、lighttpd。HTTP慢速攻击还可以细分成以下几种攻击方式.

    Slowloris攻击方式

    HTTP协议规定请求头以一个空行结束,所以完整的http请求头结尾是\r\n\r\n。然而使用非正常的\r\n来结尾,就会导致服务端认为我们的请求头还没结束,等待我们继续发送数据直到超时时间。两种请求头区别如下,CRLF(Carriage Return Line Feed)表示回车换行


    Slow post攻击方式

    在http头部信息,可以使用content-length声明HTTP消息实体的传输长度,服务器端会content-length的值作为HTTP BODY的长度。利用这一特点,攻击者把content-length设置得很大的,然后缓慢发送数据部分,比如一次只发送一个字节,这样服务器端就要一直保持连接,直到客户端传完所有的数据。


    Slow read攻击方式

    攻击者发送一个完整的HTTP数据请求,之后服务器会给出响应,这时攻击者在将自己的TCP窗口大小设置的很小,服务器会根据客户的TCP窗口大小来传送数据。由于客户端的TCP窗口大小很小,服务器只能缓慢的传输数据给客户端。当建立大量的这种连接时,web应用的并发连接池将被耗尽,最终导致拒绝服务。


    Apache range header攻击

    这种攻击方式只针对apache,当客户端传输大文件时会有range字段,表示将大文件分段,分成几个小段进行传输。例如攻击者将一个文件按照一个字节一段,分成好多段,这样就会造成传输数据缓慢,长时间占用连接,消耗服务器CPU和内存资源。
    上面这4种攻击方式,也可以参考这篇文章:CC攻击。了解了攻击原理,我们就可以有针对性地进行防御,这里说一下apache的防护策略:设置并使用以下模块
    mod_reqtimeout模块,控制请求数据传输的超时时间及最小速率,防护配置如下


    mod_qos模块,Apache的一个服务质量控制模块,用户可配置各种不同阈值,防护配置如下


    mod_security模块,一个开源的WAF模块,有专门针对慢速攻击防护的规则,防护配置如下


    以上是针对Apache的一些防护策略,至于其他中间件的防护,可以参考这篇文章:How to Protect Against Slow HTTP AttACKs

    XSS-DOS

    利用网站存在的存储型XXS漏洞,在网站中插入恶意的javascript代码。代码的功能是不断向web服务器发起大量请求,从而导致服务器宕机,无法响应正常用户的请求。客户端访问已插入恶意的javascript代码的页面后,抓包截图如下


    由于这种攻击的是由存储型XSS导致的,我们再防御方面就要考虑如何防御存储型XSS。防御策略如下:对用户的输入以及url参数进行特殊字符过滤;对输出内容进行编码转换;结合黑白名单机制。

    时间透镜攻击

    通过控制相同源和相同目的IP报文,使得走不同路径的数据包,在同一时刻到达目标服务器,从而达到流量集中攻击的目的。这种攻击其实我也还弄不太懂,详细信息可以阅读这篇paper:Temporal Lensing and its Application in Pulsing Denial-of-Service Attacks,或者看这个视频,还有这份中文分析:时间透镜及其在脉冲拒绝服务攻击的应用。看一下freebuf上的一个分析图

    防御方案:增加抖动,干扰攻击路径,使得数据包无法预期到达;由运营商禁止源路由。
    其他防御措施:
    采用高性能的网络设备;充足的网络带宽保证;升级主机服务器硬件;避免将服务器的真实IP暴露在公网中;使用CDN对流量进行稀释,当大流量稀释到各个CDN节点时,再对流量进行清洗,从而达到防护源站的目的。然而这种防御方式只能用在对域名发起的DDOS攻击,如果攻击者直接对IP进行攻击,则需要使用anycast技术来防御。

    0X07总结

    这篇文章是自己对DDOS学习的一个总结,当中参考了不少文章书籍,当然还有很多类型的DDOS文中未提及,需要再深入学习,文中若有原理性错误,还望大家指出修正。如果大家有什么好的书籍或关于这方面的资料,欢迎推荐、交流(QQ:379032449),文章仅用于研究,切勿用在非法用途。在下一篇文章中,我将还原大部分DDOS攻击的场景。

    参考:
    CC攻击
    HTTP FLOOD
    UDP FLOOD
    SNMP GETBULK
    SMURF DDOS ATTACK
    DNS Amplification AttACK
    NTP Amplification AttACKs Using CVE-2013-5211
    SNMP REFLECTION/AMPLIFICATION
    How To Mitigate Slow HTTP DoS AttACKs in Apache HTTP Server
    How to Protect Against Slow HTTP AttACKs
    Temporal Lensing and its Application in Pulsing Denial-of-Service Attacks
    《TCP-IP协议族(第4版)》
    《破坏之王-DDoS攻击与防范深度剖析》


    展开全文
  • DoS与DDoS原理介绍及SYN攻防 断更警告断更警告断更警告断更警告断更警告断更警告断更警告断更警告断更警告 到这周四考完python再继续写博客啦各位,老师临时变卦,提高了很多考试比重,有点慌还得再复习复习 T0T 剩...
  • 近几年,大规模的DDoS攻击事件在全球范围内发生了很...那么想要采取防护防护DDoS措施,势必要先了解DDoS原理,结合借鉴自身和他人网络安全运维经验理清DDoS攻击防护思路,制定适合的防护方案。 DDoS分布式拒绝服务,
  • 【python】DDOS原理

    千次阅读 2019-06-15 21:30:16
    import socket import time ...# Pressure Test,ddos tool # --------------------------- MAX_CONN = 20000 PORT = 80 HOST = "122.190.3.227" PAGE = "/?action=cal&randnum=0.200594594600119...
  • DDOS原理概述及其防御

    千次阅读 2016-05-03 08:24:52
    1.拒绝服务攻击概述 DoS(Denial of Service,拒绝服务)攻击 广义而言,凡是利用网络安全防护措施不足导致用户不能或不敢继续...DDoS(Distributed Denial of Service, DDoS) 指攻击者通过控制在网络各
  • 近年来,DDoS攻击越来越多,极大地推动了对最佳防御DDoS解决方案的需求。DDoS攻击通过大量合法的请求占用大量网络资源从而破坏常规网络流量,使得网络瘫痪。较低的攻击成本和极高的收益使得DDoS攻击在短时间内带来了...
  • DDoS***概念DoS的***方式有很多种,最基本的DoS***就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。 DDoS ***手段是在传统的DoS***基础之上产生的一类***方式。单一的DoS***一般...
  • 关于DDoS攻击原理

    2009-01-05 21:23:42
    DDoS攻击原理DDoS攻击原理DDoS攻击原理DDoS攻击原理DDoS攻击原理DDoS攻击原理DDoS攻击原理DDoS攻击原理
  • Ddos攻击原理

    2020-11-12 16:45:46
    DDoS攻击原理是什么?随着网络时代的到来,网络安全变得越来越重要。在互联网的安全领域,DDoS(Distributed DenialofService)攻击技术因为它的隐蔽性,高效性一直是网络攻击者最青睐的攻击方式,它严重威胁着互联网的...
  • DDoS攻击原理是什么?DDoS攻击原理及防护措施介绍 DDoS攻击是由DoS攻击转化的,这项攻击的原理以及表现形式是怎样的呢?要如何的进行防御呢?本文中将会有详细的介绍,需要的朋友不妨阅读本文进行参考 DDoS攻击原理...
  • DDoS攻击是由DoS攻击转化的,这项攻击的原理以及表现形式是怎样的呢?要如何的进行防御呢?本文中将会有详细的介绍,需要的朋友不妨阅读本文进行参考. DDoS攻击原理是什么?随着网络时代的到来,网络安全变得越来越...
  • DDOS攻击原理

    千次阅读 2019-03-14 09:23:03
    DDOS攻击 DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式。 单一的DoS攻击一般是采用一对一方式的,当攻击目标CPU速度低、内存小或者网络带宽小等等各项性能指标不高它的效果是明显的。 随着计算机与网络...
  • DDOS攻击原理讲解

    2010-09-19 17:21:10
    DDOS攻击原理讲解,让你更加了解并防范ddos
  • DDoS攻击原理

    千次阅读 2012-10-11 18:19:33
    编者将给大家带来DDoS的分析,希望对还不熟悉DDos攻击原理的人带来些帮助。 一、阻断服务(Denial of Service) 在探讨DDoS 之前我们需要先对 dos 有所了解,dos泛指黑客试图妨碍正常使用者使用网络上的服务
  • DDOS防护原理

    2018-09-04 14:55:00
    1.常见DDoS攻击分类 DDoS粗略分类为流量型攻击和CC攻击。流量型攻击主要是通过发送报文侵占正常业务带宽,甚至堵塞整个数据中心的出口,导致正常用户访问无法达到业务服务器。CC攻击主要是针对某些业务服务进行频繁...
  • DDOS攻击原理介绍,可怕的DDos攻击

    千次阅读 2020-03-06 14:23:31
    分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常该攻击方式利用目标...
  • 分析DDoS攻击原理,提供防护方法论,好东西
  • DOS DDOS DRDOS原理

    千次阅读 2017-03-15 15:42:57
    DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed Reflection Denial of Service的简写,这是分布反射式拒绝服务的意思。...
  • DDoS攻击原理及防护方法论,防止ddos攻击
  • DDoS攻击原理及防护探究 随着网络时代的到来,网络安全变得越来越重要。在互联网的安全领域,DDoS( Distributed Denial of Service )攻击技术因为它的隐蔽性,高效性一直是网络攻击者最青睐的攻击方式,它严重威胁着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,177
精华内容 470
关键字:

ddos原理