ddos攻击是啥意思 DDoS是什么意思( 二 )


RST cookies:在客户端发起第一个SYN请求后,服务器故意回应一个错误的SYN+ACK报文 。如果合法用户收到这个报文,就会给服务器响应RST报文 。当服务器收到这个报文时,就将这个主机的IP记录进合法IP列表,下次该主机发起SYN请求时,就可以直接通过了 。
STACK tweaking:管理员可以调整TCP堆栈以减缓SYN泛洪攻击的影响 。这包括减小超时时间,等到堆栈存释内放时再分配连接,否则就随机性地删除传入的连接 。
最初防火墙对UDP Flood的防御方式就是限流,通过限流将链路中的UDP报文控制在合理的带宽范围之内 。
防火墙上针对UDP Flood的限流有三种:
基于目的IP地址的限流:即以某个IP地址作为统计对象 , 对到达这个IP地址的UDP流量进行统计并限流,超过部分丢弃 。
基于目的安全区域的限流:即以某个安全区域作为统计对象,对到达这个安全区域的UDP流量进行统计并限流 , 超过部分丢弃 。
基于会话的限流:即对每条UDP会话上的报文速率进行统计 , 如果会话上的UDP报文速率达到了告警阈值,这条会话就会被锁定,后续命中这条会话的UDP报文都被丢弃 。当这条会话连续3秒或者3秒以上没有流量时,防火墙会解锁此会话 , 后续命中此会话的报文可以继续通过 。
针对UDP Flood的指纹学习功能 。
从下面的抓包中可以看出,到达相同目的IP地址的两个UDP报文的载荷是完全一样的 , 如果防火墙收到大量的类似这样的UDP报文,那么就有可能是发生了UDP Flood攻击 。
不难发现,UDP Flood攻击报文具有一定的特点 , 这些攻击报文通常都拥有相同的特征字段,比如都包含某一个字符串 , 或整个报文内容一致 。这些字段来自于DDoS工具自带的默认字符串 , 所以防火墙是通过收集这些字符串来检测UDP Flood 。这种防御算法在现网使用很多,主要因为黑客为了加大攻击频率,快速、长时间挤占攻击目标所在网络带宽,在使用攻击工具实现时直接在内存存放一段内容,然后高频发送到攻击目标,所以攻击报文具有很高的相似性 。而正常业务的UDP报文一般每个报文负载内容都是不一样的,这样可以减少误判 。
指纹学习是通过分析客户端向服务器发送的UDP报文载荷是否有大量的一致内容 , 来判定这个UDP报文是否异常 。防火墙对到达指定目的地的UDP报文进行统计,当UDP报文达到告警阈值时,开始对UDP报文的指纹进行学习 。如果相同的特征频繁出现,就会被学习成指纹,后续命中指纹的报文判定这是攻击报文,作为攻击特征进行过滤 。
防火墙防御UDP Flood攻击主要有两种方式:限流和指纹学习,两种方式各有利弊 。限流方式属于暴力型 , 可以很快将UDP流量限制在一个合理的范围内,但是不分青红皂白,超过就丢,可能会丢弃一些正常报文;而指纹学习属于理智型,不会随意丢弃报文 , 但是发生攻击后需要有个指纹学习的过程 。目前 , 指纹学习功能是针对UDP Flood攻击的主流防御手段,在华为防火墙产品中广泛应用 。
细化的流程大概就是:
第一步进行报文合法性检查,过滤一些畸形报文攻击;
第二步进行特征过滤,即基于报文特征匹配进行过滤,主要过滤一些UDP Flood和UDP反射放大攻击;
第三步进行虚假源认证,可过滤一些虚假源发起的TCP SYN Flood;
第四步进行应用层源认证,过滤各类型的应用层攻击,例如DNS Query Flood, HTTP Get Flood.
HTTP Post Flood. HTTPS Flood等;
第五步进行会话分析,即进行会话检查来防范一些会话类攻击,例如TCP ACK Flood, FIN/RST Flood, TCP连接耗尽攻击、TCP重传攻击、DNS缓存投毒、SSL-DoS/DDOS, HTTP slow header/post
攻击等;
第六步进行行为分析,根据用户访问流量的突发性和攻击流量的频率均匀
且资源均匀的不同,可识别出CC攻击、慢速SYN Flood和报文负载有特征的UDP
Flood;
第七步进行智能限速,像ICMP没有对应业务系统,可以直接限速 。完成前六步的过滤后流量依然超过链路负载阈值
时,利用基于各种协议的精细化限速使得流量大小稳定在安全范围内 。
使用DPDK进行DDOS检测DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持 。通俗地说,就是一个用来进行包数据处理加速的软件库 。
DPDK不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理 。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程 。它不是一个用户可以直接建立应用程序的完整产品,不包含需要与控制层(包括内核和协议堆栈)进行交互的工具 。

推荐阅读