概念
distributed denial of service,分布式拒绝服务。攻击者通过控制大量的僵尸主机,向被攻击目标发送大量精细构造的攻击报文,造成被攻击者所在网络的链路拥塞、系统资源耗尽,从而使被攻击者产生拒绝向正常用户的请求提供服务的效果。
现状和趋势
ddos攻击现状:攻击流量越来越大、攻击方式越来越多样化,具体表现在:
1、攻击流量峰值,攻击频率不断提高
2、攻击手段越来越复杂,时间越来越持久
3、游戏、电商和媒体行业成为top3的攻击目标
趋势:由于ddos攻击成本不断降低,防御成本不断攀升,传统防御技术遭受严峻挑战。具体表现在:
1、攻击呈现的fast flooding特点,要求防御系统零延迟
2、随着iot僵尸网络的规模不断扩大,越来越多的反射源被挖掘,要求分层防御或者专业的ddos防护服务
3、针对业务系统的各类慢速攻击和应用层攻击更加拟人化。需要具备根据攻击流量或者转发流量进行实时的攻击风险评估的能力,系统能够自动调整告警等级,并基于告警等级自动调整防御策略。
特点:耗尽网络带宽、耗尽服务器资源(比如cpu、内存、出口带宽等)
关键词:耗尽、带宽、资源
类型:ip层、应用层(tcp、udp、http、https、dns等)
要求:控制大量傀儡机(网络中因存在漏洞被控制的pc)
防御思路
防御:在防火墙上启用anti-ddos功能,最大程度限制恶意流量的访问,保证正常流量的访问。
在策略--安全防护--攻击防范--anti-ddos中按需选择。华为防火墙对流量型攻击理解为flood,主要进行限流等方式进行处理。判断的标准主要有源探测等
防御模式可以选择检测或者清洗。顾名思义,检测就是仅进行检测,不进行处理,管理员可以根据检测结果和自己的经验进行分析处理,也可以将检测结果以日志的形式通知ATIC等系统,再有ATIC统一进行处理。而清洗就是对超出阈值的流量进行丢弃等其他处理。
接口可以选择一个或者多个。
耗尽业务系统资源&耗尽网络带宽
应用场景
FW部署在企业内网出口处并开启攻击防范功能,FW能够区分出正常流量和攻击流量,对正常流量进行放行,对于攻击流量进行阻断。从而有效保障了企业内网服务器和PC的正常运行,使服务器能够响应正常用户的业务需求,内网用户的PC能够正常工作。
攻击防范流程
技术分类
根据采用的攻击报文类型的不同,网络中的DDoS攻击类型分为多种。FW可以防范以下几种常见的DDoS攻击:SYN Flood、UDP Flood、ICMP Flood、HTTP Flood、HTTPS Flood、DNS Flood和SIP Flood攻击。
攻击类型 |
防范技术 |
SYN Flood |
源探测 |
UDP Flood |
指纹防范、分片指纹防范、限流 |
ICMP Flood |
限流 |
HTTP Flood |
基础源探测、302重定向、高级源探测 |
HTTPs Flood |
源探测 |
DNS Request Flood |
源探测、cname重定向 |
DNS Response Flood |
源探测 |
SIP Flood |
源探测 |
源探测
设备对请求服务的报文的源IP地址进行探测,来自真实源IP地址的报文将被转发,来自虚假源IP地址的报文将被丢弃。
可防范的攻击类型
SYN Flood、HTTP Flood、HTTPS Flood、DNS Request Flood、DNS Reply Flood和SIP Flood
指纹技术
设备将攻击报文的一段显著特征学习为指纹,未匹配指纹的报文将被转发,匹配指纹的报文将被丢弃。
可防范的攻击类型
UDP Flood和UDP Fragment Flood
限流技术
设备直接丢弃超过流量上限的报文
可防范的攻击类型
ICMP Flood和UDP Flood
防御原理
SYN Flood防御
syn flood攻击利用tcp三次握手机制,攻击者向服务器发送大量的syn报文请求,当服务器回应了ACK-SYN报文后,不再继续回应ACK,导致服务器上建立了大量半连接,直至老化,造成服务器的资源被半连接耗尽,正常的请求无法回应。
FW针对SYN Flood攻击,一般采用TCP代理和源认证两种方式进行防御。
TCP代理
TCP代理是fw部署在客户端和服务器之间,当客户端试图与服务器建立TCP连接时,fw代替服务器与客户端建立三次握手,不过这种方式需要报文的来回路径一致。
如上图,FW收到SYN报文,对SYN报文进行拦截,代替服务器回应SYN-ACK报文。如果客户端在一段时间内不能正常回应ACK报文,则判定此客户端为攻击者,半连接释放。
如果客户端可以回应ACK报文,则FW与客户端建立三次握手,并且FW再与服务器建立三次握手,客户端虽然没有直接与服务器建立三次握手,但是后续的tcp报文还是可以直接送到服务器。但是这种方式对fw的性能有要求,因为实际上fw本身成为了被攻击方,需要承受大量的tcp半连接困扰。而且如果报文来回路径不一致,代理就会失败。所以更加常见的方式是TCP源认证。
TCP源认证
没有报文来回路径一致性要求。
FW仍然处于客户端和服务器之间,对收到的SYN报文进行拦截,与代理方式不同的是,FW会返回一个错误序列号的SYN-ACK报文给客户端。
如果客户端是虚假源,不会发现这个问题,即不会对该错误的SYN-ACK进行回应。如果客户端是真实源,则会发现这个问题,会发送RST报文,请求FW重新发正确的SYN-ACK报文。一旦FW收到这个RST报文,就可以判断这个客户端是真实的,就会将这个客户端的源地址加入白名单,白名单老化前,这个源发出的报文都认为是合法的报文,FW直接放行,不再做验证。因为FW对相同源的SYN报文只做一次验证,所以有效缓解了FW的压力。
UDP Flood防御
UDP Flood属于带宽类攻击,这种报文比较大,而且速率快,通常造成以下危害:
消耗网络带宽资源,严重时造成链路拥塞;
大量变源变端口的UDP Flood会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。
UDP类的攻击报文中报文的源ip和源端口变化频繁,但报文负载一般保持不变或者有规律的变化。
UDP Flood支持指纹学习、关联防御和限流三种防御方式。UDP 分片攻击支持指纹学习、限流两种防御方式。
UDP指纹学习
UDP Flood攻击报文通常具有相同的特征字段,比如都包含某个字符串,或者整个报文载荷一致。当UDP流量超过阈值时,触发指纹学习,指纹由FW动态学习得到,匹配指纹的报文会被丢弃。
关联防御
UDP是无连接的协议,无法通过源认证的方法防御UDP flood攻击。如果UDP业务流量需要通过TCP业务流量认证或控制,如果判断到达某个目的IP地址的UDP流量超过阈值,则对关联的TCP业务强制启动防御,用此TCP防御产生的白名单决定同一源的UDP报文是丢弃还是转发。
比如,有些服务例如游戏类服务,是先通过TCP协议对用户进行认证,认证通过后使用UDP协议传输业务数据,此时可以通过验证UDP关联的TCP类服务来达到防御UDP flood攻击的目的。当UDP业务受到攻击时,对关联的TCP业务强制启动防御,通过关联防御产生TCP白名单,以确定同一源的UDP流量的走向,即命中白名单的源的UDP流量允许通过,否则丢弃。
限流
将去往同一目的地址的UDP报文限制在阈值之内,直接丢弃超过阈值的UDP报文,以避免网络拥塞。
由于限流技术本身无法区分正常转发报文还是攻击报文,故建议在指纹防范技术和关联防御无法防住UDP flood时,才采用限流技术防范UDP flood。
UDP分片攻击防御
造成危害:
1、消耗网络带宽资源,严重时造成链路拥塞;
2、大量UDP分片报文会导致具有会话重组功能的网络设备性能降低;
3、大量变源变端口的udp分片报文会导致依靠会话表转发的网络设备性能降低,甚至会话耗尽,从而导致网络瘫痪。
4、攻击报文到达服务器开放的udp业务端口,服务器检查报文的正确性需要消耗计算资源,造成服务器响应缓慢,甚至无法正常回应。
UDP分片分为首分片和后续分片,只对首分片执行防御动作,如果首分片异常被丢弃了,后续分片因找不到首分片的会话会直接被后续转发流程丢弃。udp首分片防御方法和udp flood防御方法一致。
载荷检查
当udp首分片流量超过阈值时,会触发载荷检查,如果udp首分片报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
指纹学习
当udp首分片流量超过阈值时,会触发指纹学习,指纹由anti-ddos设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。
ICMP Flood防御
攻击者短时间内发送大量的ICMP报文到被攻击目标,导致依靠会话转发的网络设备会话耗尽引起网络瘫痪,如果采用超大报文攻击也会导致网络链路拥塞。
限流
基本上没有业务承载在ICMP协议上,而ICMP flood至今仍旧是DDoS攻击的一大类。FW支持全局对ICMP报文限流,即将流量限制在较小范围内,超过阈值部分的报文直接丢弃。
FW针对目的IP进行统计,当到达同一目的IP地址的ICMP流量达到告警阈值时,启动限流策略,丢弃超过上限的ICMP报文。
阻断
同时,FW支持在入接口上阻断ICMP报文。
当FW发现对同一目的地址的ICMP报文超过阈值就认为发生攻击,FW将没有命中白名单的ICMP报文全部丢弃,从而保证不被ICMP Flood攻击影响正常服务。
DNS Request Flood防御
比较常见的针对缓存服务器的攻击包括:
DNS Request Flood攻击
DNS Reply Flood攻击
未知域名攻击
DNS缓存投毒攻击
异常DNS报文攻击
比较常见的针对授权服务器的攻击包括:
DNS Request Flood攻击
未知域名攻击
异常DNS报文攻击
通常情况下,我们在上网访问网页的时候,输入的网址都是域名,比如www.huawei.com,这个请求的域名会发送到DNS缓存服务器,以请求其对应的IP地址。如果DNS缓存服务器上有此域名和IP地址的映射关系,DNS缓存服务器就会将查询到的IP地址返回给客户端。
当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求。为了减少Internet上DNS的通信量,DNS缓存服务器会将查询到的域名和IP地址对应关系存储在自己的本地缓存中。后续再有主机请求该域名时,DNS缓存服务器会直接用缓存区中的记录信息回应,直到该记录老化,被删除。
常见的DNS Flood攻击一般都是攻击者向DNS服务器发送大量的不存在的域名解析请求,导致DNS缓存服务器不停向授权服务器发送解析请求,最终导致DNS缓存服务器瘫痪,影响对正常请求的回应。
TCP发送DNS请求
DNS服务器支持TCP和UDP两种协议的查询方式,但是大多数的查询都是使用UDP查询的,UDP提供无连接服务,传输速度快,可以降低服务器的负载。也有特殊情况需要通过TCP方式查询,其中之一,就是DNS服务器可以设定使用TCP连接。当客户端向DNS服务器发起查询请求时,DNS回应报文里有一个TC标志位,如果TC标志位置1,就表示需要通过TCP方式查询。FW就是利用这一机制针对缓存服务器防御DNS Flood攻击。
在源认证过程中FW会触发客户端以TCP报文发送DNS请求,用以验证源IP的合法性,但在一定程度上会消耗DNS缓存服务器的TCP连接资源。
这种方式可以很好的防御针对缓存服务器的DNS请求攻击,但是在现网使用过程中,并不是所有场景都适用。因为在源探测过程中,FW会要求客户端通过TCP方式发送DNS请求,但是并不是所有的客户端都支持以TCP方式发送DNS请求,所以这种方式在使用过程中也有限制。如果有正常客户端不支持以TCP方式发送DNS请求,使用此功能时,就会影响正常业务。
两次重定向
对于授权服务器的DNS Request Flood攻击,可采用授权服务器源认证(即重定向方式)。重定向只针对访问受攻击域名的源IP地址实施,以减少误判和避免对正常业务的访问延时。
FW基于目的地址对DNS Request报文的速率进行统计,当DNS Request报文的速率超过阈值时,启动重定向。
- FW返回给请求源一个别名地址,如果请求源是虚假源,则不会回应重定向报文,认证不通过,报文丢弃。
- 如果请求源是真实源,则重新请求FW发送的重定向地址。认证通过,FW将此真实源加入白名单。
- FW再次重定向正确的地址,请求源重新请求正确地址,报文命中白名单,直接通过FW,到达授权服务器,完成报文交互。
DNS Reply Flood防御
DNS Reply Flood是指攻击者在一定条件下将大量伪造的DNS应答包发送给某个DNS服务器或主机,从而消耗服务器的处理性能。
FW基于目的地址对DNS回应报文速率进行统计,当DNS回应报文速率超过阈值时,启动源认证。
当FW收到DNS Reply报文时,构造携带新的Query ID和源端口的DNS Request探测报文。当FW再次收到对端发出的DNS Reply报文时,检查DNS Reply报文中的Query ID和源端口与DNS Request报文中是否一致,如果一致则将源IP地址加入白名单。
源认证
HTTP Flood防御
攻击者通过代理或僵尸主机向目标服务器发起大量的HTTP请求报文,请求涉及数据库操作的URI(Universal Resource Identifier)或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。例如门户网站经常受到的HTTP Flood攻击,攻击的最大特征就是选择消耗服务器CPU或内存资源的URI,如具有数据库操作的URI。
源认证
源认证防御方式是防御HTTP Flood最常用的手段。这种防御方式适用于客户端为浏览器的HTTP服务器场景,因为浏览器支持完整的HTTP协议栈,可以正常回应重定向报文或者是验证码。FW基于目的IP地址对HTTP请求报文进行统计,当HTTP请求报文达到设定的告警阈值时,启动源认证防御功能,源认证防御包含以下三种方式:
基本模式(META刷新:两次重定向)
该模式可有效阻止来自非浏览器客户端的访问,如果僵尸工具没有实现完整的HTTP协议栈,不支持自动重定向,无法通过认证。而浏览器支持自动重定向,可以通过认证,该模式不会影响用户体验,但防御效果低于增强模式。
当网络中有HTTP代理服务器时,只要有一次源认证通过,
FW就会将代理服务器IP地址加入白名单,后续僵尸主机通过使用代理服务器就会绕开源认证,导致防御失效。在这种有代理服务器的网络中,建议开启代理检测功能,检测HTTP请求是否为通过代理发出的请求。如果是,FW会从HTTP报文中获取请求者的实际IP地址,将通过认证的真实IP地址和代理服务器IP地址加入白名单,后续只有此实际源IP地址发送的报文才能直接通过,其他源IP发送报文时,FW会对其进行源认证,达到防御效果。
增强模式(验证码认证)
有些僵尸工具实现了重定向功能,或者攻击过程中使用的免费代理支持重定向功能,导致基本模式的防御失效,通过推送验证码的方式可以避免此类防御失效。此时通过让用户输入验证码,可以判断HTTP访问是否由真实的用户发起,而不是僵尸工具发起的访问。因为僵尸网络攻击依靠自动植入PC的僵尸工具发起,无法自动响应随机变化的验证码,故可以有效的防御攻击。为避免防御对正常用户体验的影响,此防御方式仅对超过源访问阈值的异常源实施。
302重定向模式
基本模式中的重定向功能只能对整个网页进行重定向,不能针对网页中的内嵌资源(比如:图片)进行重定向。当用户请求的页面与页面内嵌资源不在同一个服务器上,内嵌资源所在服务器发生异常时,可以对嵌套资源服务器启动302重定向防御,探测访问源是否为真实浏览器。真实浏览器支持重定向功能,可以自动完成重定向过程,不会影响客户体验。
URI监测
当通过HTTP源认证的流量还是超过阈值时,可以启用URI监测。anti-ddos设备对http源认证过程中加入白名单的源IP也会进行uri监测。
在指定时间内,某个uri的访问流量超过一定阈值时,anti-ddos设备启动针对源IP的uri行为监测。当这个源IP地址对某个uri的访问数与总访问数的比例超过阈值时,则将该源IP地址作为攻击源并加入动态黑名单,在配置uri监测时,可以将消耗内存或者占用计算资源多、容易受攻击的uri加入重点监测uri列表。
uri源指纹学习功能
指纹学习方法适用于攻击源访问的uri比较固定的场景。因为如果要形成攻击效果,攻击者一般都事先进行探测,找到容易消耗系统资源的uri作为攻击目标,然后一个攻击源的一个会话上会有多个针对该uri的请求,最终呈现为该源对选定的uri发送大量的请求报文。动态指纹学习正是基于这个原理,anti-ddos设备对源访问的uri进行指纹学习,找到攻击目标uri指纹,如果对该uri指纹的命中次数高于设置的阈值就将该源加入黑名单。
http慢速攻击
http慢速攻击是利用http现有合法机制,在建立了与http服务器的连接后,精良长时间保持该连接,不释放,达到对http服务器的攻击。
针对http慢速攻击的特点,anti-ddos设备对每秒钟http并发连接数进行检查,当每秒钟http并发连接数超过设定值时,会触发http报文检测,检测出slow post和slow headers的任意一种情况,都认定受到http慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与http服务器的连接。
slow post:攻击者发送post报文向服务器请求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。
slow headers:攻击者通过get或者post向服务器建立连接,但是http头字段不发送结束符,之后发送其他字段进行保活,服务器会一直等待头信息中结束符而导致连接始终被占用。
HTTPS Flood防御
攻击者通过代理、僵尸网络或者直接向目标服务器发起大量的HTTPS连接,造成服务器资源耗尽,无法响应正常的请求。
源认证
通过源认证对HTTPS业务端口的连接耗尽进行防御,FW基于目的地址对目的端口为443的HTTPS报文(不区分请求或响应报文)速率进行统计,当到达同一目的IP且目的端口为443的HTTPS报文速率达到阈值时,启动源认证防御。