猿创征文|HCIE-Security Day54:anti-ddos设备防御原理

2023-11-02 02:11

本文主要是介绍猿创征文|HCIE-Security Day54:anti-ddos设备防御原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

相比防火墙,anti-ddos设备是专门做anti-ddos的,所以很多功能都是防火墙没有的。

TCP防御

针对TCP服务的防御策略包括阻断、限流、防御。

SYN Flood防御

syn flood攻击利用tcp三次握手机制,攻击者向服务器发送大量的syn报文请求,当服务器回应了ACK-SYN报文后,不再继续回应ACK,导致服务器上建立了大量半连接,直至老化,造成服务器的资源被半连接耗尽,正常的请求无法回应。

anti-ddos设备针对SYN Flood攻击,一般采用源认证进行防御。

基本源认证

针对虚假源。

没有报文来回路径一致性要求。

FW仍然处于客户端和服务器之间,对收到的SYN报文进行拦截,与代理方式不同的是,FW会返回一个错误序列号的SYN-ACK报文给客户端。

如果客户端是虚假源,不会发现这个问题,即不会对该错误的SYN-ACK进行回应。如果客户端是真实源,则会发现这个问题,会发送RST报文,请求FW重新发正确的SYN-ACK报文。一旦FW收到这个RST报文,就可以判断这个客户端是真实的,就会将这个客户端的源地址加入白名单,白名单老化前,这个源发出的报文都认为是合法的报文,FW直接放行,不再做验证。因为FW对相同源的SYN报文只做一次验证,所以有效缓解了FW的压力。

局限性在于,如果网络中存在某些设备会丢弃带有错误确认序号的SYN-ACK报文,或者有的客户端不响应带有错误确认序号的SYN-ACK报文,基本源认证就不能生效了。此时可以使用高级源认证。

高级源认证

高级源认证的原理也是Anti-DDoS系统代替服务器向客户端响应SYN-ACK报文,但与基本源认证不同的是,SYN-ACK报文中带有正确的确认序号。真实的客户端收到带有正确确认序号的SYN-ACK报文后,会向服务器发送ACK报文;而虚假源收到带有正确确认序号的SYN-ACK报文,不会做出任何响应。Anti-DDoS系统通过观察客户端的响应情况,来判断客户端的真实性。

1、当连续一段时间内去往目标服务器的SYN报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器向客户端响应带有正确确认序号的SYN-ACK报文。

2、如果这个源是虚假源,是一个不存在的地址或者是存在的地址但却没有发送过SYN报文,不会做出任何响应。

3、如果这个源是真实客户端,则会向服务器发送ACK报文,对收到的SYN-ACK报文进行确认。Anti-DDoS系统收到ACK报文后,将该客户端的源IP地址加入白名单。同时,Anti-DDoS系统会向客户端发送RST报文,要求重新建立连接。

4、后续这个客户端发出的SYN报文命中白名单直接通过。

无论是基本源认证还是高级源认证,其原理都是Anti-DDoS系统发送SYN-ACK报文来对源进行认证,形象点说,Anti-DDoS系统收到SYN报文后会反弹SYN-ACK报文。如果网络中存在海量的SYN报文,同样Anti-DDoS系统也会反弹出去海量的SYN-ACK报文,这样势必就会造成网络拥塞更加严重。

为了避免这个问题,减少反弹的SYN-ACK报文对网络拥塞的影响,Anti-DDoS系统提供了首包丢弃功能。

首包丢弃

TCP协议要求发送端每发送一个报文,就启动一个定时器并等待确认信息,如果在定时器超时前还没有收到确认,就会重传报文。首包丢弃功能就是利用了TCP的超时重传机制,anti-ddos系统对收到的第一个SYN报文直接丢弃,然后观察客户端是否重传,如果重传,再对重传的SYN报文进行源认证,即反弹SYN-ACK报文,在于可以大大减少反弹报文数量。

另外,有些攻击采用不断变换源IP地址或者源端口号的方式发送攻击报文,通过首包丢弃,可以有效拦截这部分流量。

正常情况下,tcp、dns、icmp报文都具有重传功能。如果在交互过程中报文被丢弃,则都会重传,首包丢弃是利用了报文的重传机制,将受到的第一个报文丢弃,以判定后续是否有重传报文。

anti-ddos设备判定报文是否属于重传报文是基于三元组以及时间间隔来判断的,三元组包含源IP地址、源端口和协议,时间间隔可以自定义配置。

当报文没有匹配到任何三元组时,认为该报文是首包,将其丢弃;

当报文匹配到某三元组,则计算该报文与匹配该三元组的上一个报文到达的时间间隔。如果时间间隔低于设定的下限,或者高于设定的上限,则认为是首包,将其丢弃,如果时间间隔落在配置的上限和下限之间,则认为是后续包,将其放行。

支持首包丢弃后重传报文的协议包括tcp、dns、icmp协议。udp协议虽然不具备重传机制,如果有应用层协议来协助实现重传时,也可以配置首包丢弃功能。

实际部署时,我们将首包丢弃和源认证结合使用。防御SYN Flood攻击时,先通过首包丢弃功能来过滤掉一些攻击报文,当重传的SYN报文超过告警阈值后,再启动源认证。这样就能够减少反弹的SYN-ACK报文的数量,缓解网络拥塞情况。对于虚假源攻击,尤其是对于不断变换源IP和源端口的虚假源攻击,可以达到最佳防御效果。

TCP异常限速

源IP地址加入白名单后,需要继续对真实源IP地址进行统计分析,对异常的源IP地址进行限速,以防止真实源发起攻击。

基于源来统计除ACK以外的其他报文总和(SYN+SYN-ACK+FIN/RST)与ACK报文的比例,当这个比例超过TCP-Ratio比例阈值时,判定源IP地址异常,将除ACK以外的其他报文的速率总和限制在阈值内。

始终限速

任何情况下,都将除了ACK以外的其他报文的速率总和限制在阈值内。

SYN-ACK Flood防御

攻击源假冒服务器,发送大量SYN-ACK报文到达攻击目标网络,由于目标网络没有发送过SYN报文,平白无故的收到SYN-ACK报文,只好发送RST报文进行释放,如果这样的SYN-ACK报文很多,那么目标网络就会发送很多RST报文,导致资源耗尽,无法响应正常的请求。另外,如网络中存在防火墙和ips等设备,对于大量的SYN-ACK报文,会检查会话表,虽然无法匹配,但是消耗了设备性能。

源认证

华为Anti-DDoS解决方案使用源认证方式防御SYN-ACK Flood攻击,其原理是Anti-DDoS系统向发送SYN-ACK报文的源地址发送SYN报文,相当于发起了第一次握手,探测该地址是否真实存在。真实的源会向Anti-DDoS系统响应正确的SYN-ACK报文,也就是第二次握手的报文;而虚假的源则不会响应正确的SYN-ACK报文。

注意:防火墙不支持SYN-ACK Flood防御。

1、当连续一段时间内去往目标服务器的SYN-ACK报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统向发送SYN-ACK报文的源地址发送SYN报文。

2、如果这个源是虚假源,不会向Anti-DDoS系统响应正确的SYN-ACK报文。

3、如果这个源是真实源,会向Anti-DDoS系统响应正确的SYN-ACK报文。Anti-DDoS系统收到该SYN-ACK报文后,将该源IP地址加入白名单,同时会向源地址发送RST报文,断开自己和这个源地址的连接。

4、后续这个源发出的SYN-ACK报文命中白名单直接通过

这篇关于猿创征文|HCIE-Security Day54:anti-ddos设备防御原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327381

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit