赞
踩
分布式拒绝服务是种基于DoS的特殊形式的拒绝服务攻击,是一种分布、 协作的大规模攻击方式,主要瞄准比较大的站点,像商业公司、搜索引擎或政府部门门的站点。DoS攻击只要一台单机和一个Modem就可实现;而DDoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。
绝大部分的DDoS攻击是通过僵尸网络产生的。僵尸网络主要由受到僵尸程序感染的计算机及其他机器组成。当确定受害者的IP 地址或域名后,僵尸网络控制者发送攻击指令,随后就可以使网络断开连接,指令在僵尸程序间自行传播和执行,每台僵尸主机都将做出响应,同时向目标主机发送请求,可能导致目标主机或网络出现溢出,从而拒绝服务。
DDoS攻击通过利用分布式的客户端,向攻击目标发送大量请求,耗尽目标资源,从而造成目标服务不可用。常见的DDoS攻击方法主要包括:消耗网络带宽资源、消耗系统资源、消耗应用资源
。
攻击者主要利用受控主机发送大量的网络数据包,占满攻击目标的带宽,使得正常请求无法达到及时有效的响应。
ICMP:Internet Control Message Protocol (网络控制消息协议)
,是TCP/IP协议簇的一个子协议,主要用于在IP主机、路由器之间传递控制消息,进行诊断或控制,以及响应IP操作中的错误。
ICMP Flood
:指攻击者通过受控主机(僵尸网络)向目标发送大量的ICMP请求,以消耗目标的带宽资源。
ICMP Flood攻击原理图:
UDP Flood
:攻击者通过受控主机向目标发送大量的UDP请求,以达到拒绝服务器的目的,
UDP Flood攻击原理图:
一般情况下,攻击者会使用小包和大包的攻击方法:
小包
:以太网传输数据值最小数据包,即64字节的数据包,在相同流量中,数据包越小,使用数量也就越多。同时,由于网络设备需要对数据包进行检查,因此使用小包可增加网络设备处理数据包的压力,容易产生处理缓慢、传输延迟等拒绝服务效果。
大包
:大小超过了以太网最大传输单元(1500字节以上的数据包)的数据包,使用大包攻击能够严重消耗网络带宽资源。在接收到大包后需要进行分片和重组,因此会消耗设备性能,造成网络拥堵。
消耗系统资源攻击主要通过对系统资源进行消耗导致无法正常连接。此类攻击主要是因为TCP安全性设计缺陷而引起的。
TCP:Transmission Control Protocol (传输控制协议)
,是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP是在不可靠的互联网络上提供可靠的端到端字节流的传输协议。由于协议在最初的设计过程中没有对安全性进行周密考虑,因此在协议中存在安全缺陷。TCP工作包括三个阶段:建立连接、数据传输、终止连接。
在建立连接时,TCP使用三次握手协议建立连接。
TCP三次握手的过程图
:
1、客户端发送SYN(seq=x)
报文,给服务器端,进入SYN_SEND
状态。(该数据包中,初始序列号(ISN) 是客户端随机产生的一个值,即x,确认号ACK=0;)
2、 服务器端收到SYN
报文,回应一个SYN (seq=y)ACK(ACK=x+1)
报文,进入SYN_RECV
状态。(该数据包中,初始序列号(ISN) 是服务器随机产生的一个值,即y,确认号ACK是客户端的初始序列号加上1,即x+1)
3、客户端收到服务器端的SYN
报文,回应一个ACK(ACK=y+1)
报文,进入Established
状态。(该数据包中,序列号是上一个同步请求数据包中的确认号值加上1,即x+1,确认号是服务器的初始序列号加上1,即y+1。)
在这个过程中,服务请求会建立并保存TCP连接信息,通常保存在连接表内,但是这个表是有
大小限制的,一旦服务器接收的连接数超过了连接表的最大存储量,就无法接收新的连接,从
而达到拒绝服务的目的。
TCP Flood攻击原理图:
在三次握手过程中,如果在服务器端返回SYN+ACK
报文后,客户端由于某些原因没有对其进
行确认应答,那么服务器端会进行重传,并等待客户端进行确认,直到TCP连接超时。SYN Flood将这种等待客户端确认的连接状态称为半开连接。SYN Flood正是利用了TCP半开连接的机制发动攻击的。通过受控主机向目标发送大量的TCP SYN报文, 使服务器打开大量的半开连接,由于连接无法很快结束,因此连接表将被占满,无法建立新的TCP连接,从而影响正常业务连接的建立,造成拒绝服务。
攻击者会将SYN报文的源IP地址伪造成其他IP地址或不存在的IP地址,这样被攻击者会将应答
发送给伪造地址,占用连接资源,同时达到隐藏攻击来源的目的。
SYN Flood攻击原理图:
消耗应用资源攻击通过向应用提交大量消耗资源的请求,以达到拒绝服务的目的。
攻击者利用受控主机对目标发起大量的HTTP请求,要求Web服务器进行处理,超量的请求会
占用服务器资源,一旦目标请求饱和,并且无法响应正常流量,就会造成了拒绝服务攻击。
HTTP Flood攻击有以下两种类型:
HTTP GET攻击
:多台计算机或设备向目标服务器发送图像、文件或某些资产的多个请求,当目标服务器被传入的请求和响应所“淹没”时,来自合法流量源的其他请求将无法得到正常回复。
HTTP POST攻击
:在网站上提交表单时,服务器必须处理传入的请求并将数据推送到持久层(通常是数据库)中。与发送POST请求所需的处理能力和带宽相比,处理表单数据和运行必要的数据库命令的过程相对密集。这种攻击利用相对资源消耗的差异,通过向目标服务器发送大量请求的方式,使目标服务器的容量达到饱和并拒绝服务。
HTTP Flood攻击原理图:
HTTP Flood攻击不仅会直接导致被攻击的Web前端响应缓慢,还会间接攻击到后端业务层逻辑,及更后端的数据库服务,增大它们的压力,甚至对日志存储服务器也会造成影响。
HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。与传统的攻击不同,慢速攻击依赖于慢速流量,主要针对应用程序或服务器资源。慢速攻击所需的带宽非常少,且难以缓解,因为其生成的流量很难与正常流量区分开。由于攻击者不需要很多资源即可启动,因此可以使用单台计算机成功发起慢速攻击。
慢速攻击以Web服务器为目标,通过慢速请求捆绑每个线程,从而防止真正的用户访问该服务。这个过程通过非常缓慢地传输数据来完成,但同时又可防止服务器超时。
常见的攻击有两种:
Slow POST:
攻击者发送Post报文向服务器请求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。
Slow headers:
攻击者通过GET或者POST向服务器建立连接,但是HTTP头字段不发送结束符,之后发送其他字段进行保活。服务器会一直等待头信息中结束符而导致连接始终被占用。
消耗网络带宽资源的其他DDoS:反射攻击和放大攻击
。
反射攻击的原理
:
攻击者并不直接攻击目标,而是利用互联网的某些特殊服务开放的服务器、路由器等设备(称为反射器),发送伪造请求,通过反射器对请求产生应答,反射攻击流量,同时达到隐藏攻击源的目的。由于攻击中涉及众多反射器的攻击形式,因此也称为分布式反射拒绝服务攻击
(Distributed Reflection Denial of Service,DRDoS) 。
在进行反射攻击时,攻击者通过控制受控主机,发送大量目标IP指向作为反射器的服务器、路由器的数据包,同时将源IP地址伪造成攻击目标的IP地址。反射器在收到伪造的数据包时,会认为是攻击目标发送的请求,并发送响应的数据包给攻击目标。此时会有大量的响应数据包反馈给攻击目标,造成攻击目标带宽资源耗尽,从而产生拒绝服务。
发动反射攻击需要将请求数据包的源IP伪造成攻击目标的IP地址,这就需要使用无认证或者握手过程的协议。由于UDP协议是面向无连接性的协议,与TCP相比,其需要更少的错误检查和验证,因此,大部分的反射攻击都是基于UDP协议的网络服务进行的。
放大攻击的原理
:
利用请求和响应的不平衡性,以及响应包比请求包大的特点(放大流量),伪造请求包的源IP地址,将响应包引向攻击目标。结合反射攻击原理,如果反射器能够对网络流量进行放大,那么也可称这种反射器为放大器。放大攻击的规模和严重程度取决于放大器的网络服务部署的广泛性。如果某些网络服务不需要验证并且效果比较好,那么在互联网上部署的数量就会比较多,利用该服务进行攻击就能达到明显消耗带宽的效果。
常见的DRDoS攻击如下:
NTP是Network Time Protocol (网络时间协议)
,指使用一组分布式客户端和服务器来同步一组网络时钟的协议。使用UDP协议,服务端口为123。
标准NTP服务提供了一个monlist功能,也被称为mon_ getlist,该功能主要用于监控NTP服务器的服务状况。某些版本NTP的服务器默认开启monlist命令功能,这条命令的作用是向请求者返回最近通过NTP协议与本服务器进行通信的IP地址列表,最多支持返回600条记录。也就是说,如果一台NTP服务器有超过600个IP地址使用过它提供的NTP服务,那么通过一次monlist请求,将收到600条记录的数据包。由于NTP服务使用UDP协议,因此攻击者可以伪造源发地址发起monlist请求,这将导致NTP服务器向被伪造的目标发送大量的UDP数据包,理论上这种恶意导向的攻击流量可以放大到伪造查询流量的100倍,并且该服务器的NTP服务在关闭或重启之前会一致保持这样的放大倍数。
NTP Reflection Flood攻击原理图:
DNS主要用于域名与IP地址的相互转换,使用户可以更方便地访问互联网,而不用去记住机器读取的IP数据串。DNS请求通常通过UDP端口53发送到名称服务器。如果未使用扩展DNS,则DNS-UDP数据包允许的最大长度为512字节。
通常,DNS的响应数据包比查询数据包大,因此攻击者通过普通的DNS查询就能发动放大攻击,将流量放大。
攻击者会将僵尸网络中的被控主机伪装成被攻击主机,设置特定的时间点连续向多个允许递归查询的DNS服务器发送大量DNS服务请求,然后让其提供应答服务,应答数据经DNS服务器放大后发送到被攻击主机,形成大量的流量攻击。攻击者发送的DNS查询数据包的大小一-般为60字节左右,而查询返回的数据包的大小通常在3000字节以上,因此放大倍数能够达到50倍以上,放大效果是惊人的。
DNS Reflection Flood攻击原理图:
SSDP是Simple Service Discovery Protocol (简单服务发现协议)
,一种应用层协议,是构成通用即插即用(UPnP) 技术的核心协议之一。互联网中的家用路由器、网络摄像头、打印机、智能家电等设备,普遍采用UPnP作为网络通信协议。SSDP通常使用UDP端口1900。
利用SSDP进行反射攻击的原理与利用DNS、NTP的类似,都是通过伪造攻击者的IP地址向互联网中的大量智能设备发起SSDP请求,接收到请求的智能设备根据源IP地址返回响应数据包。SSDP Reflection Flood攻击原理图:
SNMP是Simple Network Management Protocol (简单网络管理协议)
,主要用于网络设备的管理。在各种网络设备中都能看到默认启用的SNMP服务,很多安装SNMP的设备都采用默认通信字符串。攻击者向广泛存在并开启SNMP服务的网络设备发送GetBulk请求,并使用默认通信字符串作为认证凭据,将源IP地址伪造成被攻击者的IP地址,设备在收到请求后会将响应结果发送给被攻击者。大量响应数据涌向目标,造成目标网络的拥堵。
SNMP Reflection Flood攻击原理图:
1、查看防火墙、流量监控设备、网络设备等是否出现安全告警或大量异常数据包。
2、查看是否存在特定的服务、页面请求,使服务器/主机无法及时处理所有正常请求。
3、查看是否有大量等待的TCP连接。
4、排查服务器/主机与恶意IP地址是否建立异常连接,或是否存在大量异常连接。
有抗DDoS攻击设备、流量监控设备等,那么我们可以分析设备的流量、告警信息,判断攻击类型;
没有相关设备,通过抓包、排查设备访问日志信息,判断攻击类型,为采取适当的防御措施提供依据。
排查内容:
DDoS事件发生的时间:
对可记录流量信息的设备进行排查,确定攻击时间,以便后续依据此时间进行溯源分析,并对攻击者行为、攻击方法进行记录。
了解系统架构:
通过了解现场实际环境网络拓扑、业务架构及服务器类型、带宽大小等关键信息,可帮助安全运营人员、应急响应工程师确认事件影响的范围及存在的隐患。
了解DDoS攻击的影响范围:
结合系统架构情况,确认在DDoS攻击中受到影响的服务和带宽信息,以便后续排查并采取相应措施缓解。
1、我们可以针对当前攻击流量限制访问速率,调整安全设备的防护策略。通过设备的记录信息,对访问异常的IP地址进行封堵。
2、当流量在服务器硬件与应用接受范围内,利用IP表实现软件层防护。
3、当攻击持续存在,则可在出口设备配置防护策略、接入CDN防护等。
4、当流量远远超出出口带宽,建议联系运营商进行流量清洗。
溯源分析一般是通过查看安全设备、流量监控设备、服务器、网络设备上保留的日志信息进行的。将排查过程中整理出的IP地址进行梳理、归类,方便日后溯源。但是在DDoS攻击中,攻击者一般会使用僵尸网络,因此为溯源带来很大难度。建议在遭受DDoS攻击时及时报案,并保留相关日志、攻击记录等。
5.1、服务器防护
1、对服务器进行安全加固,包括操作系统及服务软件,以减少可被攻击的点。
2、避免非业务端口对外网开放,避免与业务无关的请求和访问,减少服务器暴露在公网的攻击点。
3、对服务器进行性能测试、压力测试等,评估正常业务环境下其所能承受的带宽及业务吞吐处理能力。
4、及时更新安全补丁,避免服务器沦为攻击者攻击的“肉鸡”。
5.2、网络防护与安全监测
1、优化网络架构,利用负载分流保证系统弹性、冗余,并防止单点故障的产生。
2、限制同时打开数据包的最大连接数。
3、部署流量监控设备或抗DDoS攻击设备,对全网中存在的威胁进行监控分析,关注相关告警,为追踪溯源提供基础支撑。
5.3、应用系统防护
对应用代码做好性能优化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。