DDos系列攻击原理与防御原理

七层防御体系

静态过滤

命中黑名单

  • 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性)

畸形报文过滤

畸形报文攻击

  • TCP包含多个标记位,排列组合有规律

• 现象:TCP标记位全为1

  • 报文被分片后,重组计算无法进行
  • 攻击者使用源地址为127.0.0.0网段的地址,对攻击主机发起流量,被攻击主机对127.0.0.0回应报文,导致某些系统处理127.0.0.0的地址会出错,导致系统访问缓慢。

扫描窥探报文过滤

扫描窥探攻击

  • 探测网络中存在的某些主机的IP地址以及开放的端口号,为进一步的攻击提供前提条件
  • 防御手段:监控某个目的主机在单位时间内端口和地址变化的阈值。

源合法认证检测机制

虚假源流量

  • 通过大量伪造的地址去想被攻击主机发起流量

基于会话检测机制

异常连接威胁

  • 报文在交互过程中,某些标记不符合协议工作机制的报文进行拦截
  • 防范手段:检测报文序列号、确认号等信息从而判断是否是异常连接。

特征识别过滤

具有明显攻击特征的流量

  • 针对操作系统或者应用程序的漏洞流量进行丢弃,需要防火墙能对协议特征进行识别。

流量整形

突发流量

DDoS攻击防范技术

1、首包丢弃

有些攻击是不断变换源IP地址或者源端口号发送攻击报文,通过首包丢弃,可以有效拦截这部分流量。首包丢弃与源认证结合使用,防止虚假源攻击。

处理过程:(根据三元组实现)

(1)、开启首包丢弃功能后,SYN、TCP、DNS、UDP、ICMP各类流量超过阈值后,设备会丢弃报文首包。

(2)、基于三元组(源IP地址、源端口和协议)来匹配报文,并通过报文的时间间隔来判断首包。

(3)、当报文没有匹配到任何二元组时,认为该报文是首包,将其丢弃。

(4)、当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。

(5)、如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃:如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行。

2、阻断和限流

通过服务学习或经验发现网络中根本没有某种服务或某种服务流量很小,则可以分别采用阻断和限流方法来防御攻击。

(1)阻断:在自定义服务策略中表示将匹配自定义服务的报文全部丢O弃;在默认防御策略中表示将自定义服务以外的此协议报文全部丢弃。

(2)限流:在自定义服务策略中表示将匹配自定义服务的报文限制在0阌值内,丢弃超过闽值的部分报文;在默认防御策略中表示将自定义服务以外的此协议报文限制在阈值内,丢弃超过阈值的部分报文。

3、静态指纹过滤

通过配置静态指纹,对命中指纹的报文进行相应的处理,从而对攻击流量进行防御。

(1)、TCP/UDP/自定义服务可基于载荷(即报文的数据段)提取指纹。

(2)、DNS报文针对域名提取指纹。

(3)、HTTP报文针对通用资源标识符URI(Uniform Resource Identifier)提取指纹。

  • TCP源检测技术能探测访问者是否是真实可用的源,UDP不包含三次握手,基于UDP的DDoS攻击需要使用"指纹"来实现防范,UDP的DDoS报文载荷内容相对固定
  • DNS协议的流量重要又特殊,工作在两种传输层协议之上(既可以用TCP又可以用UDP),通常就是根据DNS行为来做防御处理

基于TCP的DDoS攻击

TCP正常建立连接和断开连接的过程

• 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

(1)第一次握手:建立连接时,客户端发送SYN包(SYN=J)到服务器,并进入SYN SENT状 态,等待服务器确认。

(2)第二次握手:服务器收到SYN包,必须发出ACK包(ACK=J+1)来确认客户端的SYN包,同时自己也发送一个SYN包(SYN=K),即SYN-ACK包,此时服务器进入SYN RCVD状态。

(3)第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK(ACK=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。如果服务器发出的SYN-ACK包异常,客户端会发送一个RST包给服务器,服务器重新回到LSTEN监听状态。

• TCP采用四次握手来关闭一个连接。第一次握手:客户端发送FIN包(FIN=M)到服务器,表示客户端没有数据要向服务器发送了,同时进入FIN WAIT 1状态,等待服务器确认。第二次握手:服务器收到FIN包,必须发送ACK包(ACK=M+1)来确认客户端的FIN包,但服务器数据还没传完,所以不发送FIN包,此时服务器进入LAST WAIT状态。第三次握手:当服务器没有数据要向客户端发送时,服务器发送FIN包(FIN=N)到客户端,并进入LAST ACK状态,等待客户端最终确认。第四次握手:客户端收到FIN包,发出ACK包(ACK=N+1)来确认服务器的FIN包,进入TIME WAIT状态,等待连接完全断掉。此包发送完毕,服务器进入CLOSED状态完成四次握手,双方连接断开。

  • TCP的确认机制+1规律太好找,容易被伪造,就进行了一个伪随机的确认,每一次发送的序列号+这一个报文的PDU,就是下一次发送报文的序列号,只能建立会话的这两台主机才能找到这个规律。

4、SYN Flood攻击(TCP握手第一个报文)

  • 攻击者会大量伪造源地址是假的(第一次SYN攻击),如果没有抗DDos设备,服务器回第二个握手连接,这个时候服务器会缓存大量的TCP半开连接(消耗服务器资源)
  • 防御机制:基于传输层协议的源合法性验证技术

• 利用TCP协议原理,针对TCP类Flood进行检测和防御。用户进行TCP连接,清洗设备回应经过构造的SYN-ACK报文,通过用户的反应来判断此用户是否正常。主要用于来回路径不一致的情况下。

• 只是抗DDos设备把流量抗下来了,链路带宽还是会受到影响的,DDos只能是把危害降到最低,不能完全解决。

5、SYN-ACK Flood攻击(TCP握手第二个报文)

  • 被攻击对象接收大量SYN-ACK,会检查自己会话表,是自己哪个会话响应报文,这个查会话表对服务器性能有影响。
  • 防御机制:清洗设备基于目的地址对SYN-ACK报文速率进行统计,当SYN-ACK报文速率超过阈值时,启动源认证防御

6、ACK Flood攻击(TCP握手第三个报文)

  • 如果端系统在收到一个ACK报文时,如果目的端口未开放,那么端系统会直接向源IP发送RST报文。如果端系统的相关端口是对外开放的,那么其在收到ACK报文时,首先会检查这个ACK报文是否属于TCP连接表中的一个已有连接(这个过程会对端系统主机CPU资源造成一定的消耗),如果是的话,则正常处理如果不属于任何一个已有连接,那么端系统会向源IP发送RST报文
  • 攻击原理:攻击者利用僵尸网络发送大量的ACK报文,冲击网络带宽,造成网络链拥塞;同时被攻击服务器接收到攻击报文后需要检查会话以确认报文是否属于某个会话,如果攻击报文数量庞大,服务器处理性能耗尽,从而拒绝正常服务。
  • 防御原理:
  • (1)、当ACK报文速率超过阈值时,启动会话检查。
  • (2)、如果清洗设备检查到ACK报文没有命中会话,则有两种处理模式:
    • 1)、"严格模式":直路部署组网中建议采用"严格模式"。如果清洗设备没有检查到已经建立的会话,直接丢弃报文。
    • 2)、"基本模式":旁路部署动态引流时,对于引流前已经建立的会话,清洗设备上会检查不到会话,此时建议采用"基本模式",即当连续一段时间内ACK报文速率超过阈值时,启"基本模式动会话检查,设备会先让几个ACK报文通过,建立会话,然后对会话进行检查确定是否丢弃报文。
  • (3)、如果清洗设备检查到ACK报文命中会话,则检查会活创建原因。
  • (4)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。
  • (5)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,列号正确的报文允许通过,不正确的报文则被丢弃。
  • (6)、载荷检查是清洗设备对ACK报文的载荷进行检查,如果载荷内容全一致(载荷内容全为1等),则丢弃该报文。
  • (7)、只有启用了"会话检查",才能启用"载荷检查",对会话检查通过的报文进行载荷检查。

7、FIN/RST Flood攻击(存在故意捣乱行为)

  • FIN断开TCP连接RST进行TCP重连
  • 攻击原理
  • 防御FIN/RST攻击的方法就是进行会话检查

防御原理:当FIN/RST报文速率超过阈值时,启动会话检查。

(1)、如果清洗设备检查到FIN/RST报文没有命中会话,直接丢弃报文。

(2)、如果清洗设备检查到FIN/RST报文命中会话,则检查会话创建原因。

(3)、如果会话是由SYN或SYN-ACK报文创建的,则允许该报文通过。

(4)、如果会话是由其他报文创建的(例如ACK报文),则查看报文检查结果,序列号正确的报文允许通过,不正确的报文则被丢弃。

基于UDP的DDoS攻击

8、UDP Flood关联TCP类服务攻击

  • 当UDP流量与TCP类服务有关联时,通过防御TCP类服务来防御UDP Flood。
  • 攻击原理:攻击者通过僵尸网络向目标服务器发起大重的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理

• 针对TCP流量进行源检测,源认证通过后,后续这个源地址发送的UDP报文进行放行。

  • 很多流量都是由手机端发起的,手机端应用先用TCP做身份验证后再用UDP交互数据。

• UDP与TCP流量关联

9、载荷检查和指纹学习

  • 使用载荷检查和指纹学习方法防御具有规律的UDPFlood攻击。
  • 大多数UDP的DDoS载荷比较固定单一
  • 攻击原理攻击者通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包且速率非常快,从而造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。
  • 防御原理:
  • (1)、载荷检查:当UDP流量超过阈值时,会触发载荷检查。如果UDP报文数据段内容完全一样,例如数据段内容都为1,则会被认为是攻击而丢弃报文。
  • (2)、指纹学习:当UDP流显超过阈值时,会触发指纹学习,指纹由清洗设备动态学习生成,将攻击报文的一段显著特征学习为指纹后,匹配指纹的报文会被丢弃。
  • UDP包通常比较大,速度比较快,可以针对UDP报文做限速,一个服务器既能支持TCP服务又支持UDP服务,TCP和UDP其中一个过多都会影响另一方。

基于DNS的DDoS攻击

DNS交互过程

  • 1、客户端访问某个域名,发送DNS请求信息(带有解析的域名信息)。
  • 2、本地DNS服务器收到请求后,先在自己缓存中找对应IP地址:
    • 1)、本地缓存有的话直接回应解析过程就完毕了。
    • 2)、本地缓存没有的话,缓存服务器就不是对应域的解析服务器(不负责对请求域名做解析),DNS服务器会向上级授权服务器为用户提交域名解析请求。授权服务器有的话会针对缓存服务器回应DNS请求,缓存服务器会记录这个域名的DNS信息,把应答结果告诉用户。

• 这个过程会发生很多攻击比如:1、客户端发起大量乱七八糟的域名解析请求,缓存服务器本地没有就会都丢给授权服务器。

  • DNS是互联网中很重要的基础服务
  • 如果DNS受到了DDoS,无法进行域名解析,客户端就无法访问域名的业务。

当用户上网访问某个网站时,会向DNS缓存服务器发出该网站的域名,以请求其IP地址,当DNS缓存服务器查找不到该域名与IP地址对应关系时,它会向授权DNS服务器发出域名查询请求,为了减少Interet上DNS的通信量,DNS缓存服务器会将查询到的域名和IP地址对应关系存体在自己的本地缓存中。后续再有主机清求该域名时,DNS缓存服务器会直接用缓存区中的记录信息回应,直到该记录老化,被删除。

1、缓存服务器比较常见的攻击包括:

(1)、DNS Request Flood攻击

(2)、DNS Reply Flood攻击

(3)、未知域名攻击

(4)、DNS缓存投毒攻击

(5)、异常DNS报文攻击

2、授权服务器比较常见的攻击包括:

(1)、DNS Request Flood攻击

(2)、未知域名攻击

(3)、DNS缓存投毒攻击

10、DNS Request Flood攻击

  • 攻击原理:。针对缓存服务器攻击。针对授权服务器攻击DNS Request Flood攻击源可能是虚假源,也可能是真实源针对不同类型的攻击源,采取的防御方式也不同。
  • DNS这种协议,工作可以基于TCP也可以基于UDP。TCP:可以判断是真实还是虚假。UDP:不太好判断是真实还是虚假。

• 使用UDP的场景

• 默认情况下解析DNS是用UDP解析,UDP解析速度快,效率高。DNS本身报文也小。

• DNS主辅同步技术,避免DNS单点失效,主DNS和辅DNS进行数据库同步的时候使用TCP。

  • 针对虚假源攻击防御

• 基本模式:抗DDoS设备让客户端和自己使用TCP进行解析,发TCP的RST让客户端与真实DNS服务器进行重连使用"基本模式"

• 这样正常客户端会使用TCP和DNS服务器建立会话,会导致DNS服务器维护大量会话,消耗资源。

• 增强模式:抗DDoS设备将真实客户端的TCP报文转发给DNS服务器的时候使用UDP报文方式进行,DNS服务器发UDP的应答给抗DDoS,抗DDoS的设备相当于做了代理(TCP和UDP之间代理)。

• 这样的话缓存都让抗DDoS设备抗下来了。

  • 针对真实源攻击防御

• 针对真实源攻击:如果是真实源攻击,经过上述防御过程后,通过的DNS报文还很大,则可以继续采用以下方式进行防御:

1、DNS请求报文限速

(1)、指定域名限速

(2)、源IP限速

2、Anti-DDoS设备还支持对异常DNS报文的检查,根据预定义的规则分别从以下三个方面进行检测:

(1)、DNS报文的格式

(2)、DNS报文的长度

(3)、DNS报文的TTL

HTTP&HTTPS类报文攻击防御

HTTP类型报文攻击与防御

  • 防御HTTP Flood攻击的方法包括源认证、目的IP的URI检测和指纹学习。
  • 攻击原理:攻击者通过代理或僵尸向目标服务器发起大量的HTTP报文,请求涉及数据库操作的URI或其它消耗系统资源的URI,造成服务器资源耗尽,无法响应正常请求。
  • 防御原理:
  • (1)、HTTP Flood源认证
  • (2)、目的IP的URI检测
  • (3)、指纹学习

11、HTTP慢速攻击

  • 攻击原理:HTTP慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。

• (1)、HTTP愠速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽是长时间保持该连接,不释放,达到对HTTP服务器的攻击。常见的攻击有两种:

1)、S1ow POST:攻击者发送Post报文向服务器清求提交数据,将总报文长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样导致服务器端一直等待攻击者发送数据。

2)、Slow headers:攻击者通过GET或者POST向服务器建立连接,但是HTTP头字段不发送结束符,之后发送其他字段进行保活。服务器会一直等待头信息中结束符而导致连接始终被占用。

  • 防御原理:
  • (1)、针对HTTP慢速攻击的特点,Anti-DDoS设备对每秒钟HTTP并发连接数进行检查,当每秒钟HTTP并发连接数超过设定值时,会触发HTTP报文检查,检查出以下任意一种情况,都认定受到HTTP慢速连接攻击,则将该源IP地址判定为攻击源,加入动态黑名单,同时断开此IP地址与HTTP服务器的连接。
  • (2)、连续多个HTTP POST报文的总长度都很大,但是其HTTP载荷长度都很小。
  • (3)、连续多个HTTP GET/POST报文的报文头都没有结束标识。
  • HTTP能建立起来的一定源IP是真实的。

HTTPS类型报文攻击与防御

  • 通过源认证方法来防御HTTPS Flood攻击。
  • 攻击原理:攻击者通过代理、僵尸网络或者直接向目标服务器发起大量的HTTPS连接,造成服务器资源耗尽,无法响应正常的请求。
  • 防御原理:通过源认证对HTTPS攻击进行防御,清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御。

12、SSL DoS攻击

  • 通过源认证和SSL防御结合防御SSL DoS攻击。
  • 攻击原理SSL握手的过程中,在协商加密算法时服务器CPU的开销是客户端开销的15倍左右。攻击者利用这一特点,在一个TCP连接中不停地快速重新协商。
  • 防御原理:
  • (1)、清洗设备基于目的地址对HTTPS请求报文速率进行统计,当HTTPS请求速率超过阈值时,启动源认证防御和SSL防御:
    • 1)、源认证
    • 2)、SSL防御

• SSL防御:在检查周期内,如果某个源IP地址到目的IP地址的协商次数超过最大值,则将此会话标记为异常会话,在异常会活检查周期内,如果异常会话数超过最大值时,判定该源IP地址异常,将该源IP地址加入黑名单。

DDoS的流量不能百分百防御,设备存在漏判误判的情况。

相关推荐
Koi慢热14 分钟前
路由基础(全)
linux·网络·网络协议·安全
传而习乎24 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary26 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
运维&陈同学2 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
hzyyyyyyyu2 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
网络研究院2 小时前
国土安全部发布关键基础设施安全人工智能框架
人工智能·安全·框架·关键基础设施
明明跟你说过2 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
刽子手发艺2 小时前
WebSocket详解、WebSocket入门案例
网络·websocket·网络协议