如何防御udp攻击

news/2024/5/18 12:08:09 标签: udp, 网络协议, 网络

UDP Flood是互联网上最经典的DDoS(Distributed Denial of Service)攻击之一。攻击者在短时间内向目标设备发送大量的UDP报文,导致链路拥塞甚至网络瘫痪。一般的UDP报文由攻击工具伪造,通常在数据段具备相同的特征,另一部分由真实网络设备发出的UDP报文,虽然数据段不相同,但固定的目的端口也可作为一种特征。


由于UDP协议是一种无连接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。

UDP Flood是如何发起攻击的?


UDP Flood攻击是通过利用大量的UDP数据包冲击目标系统,从而消耗目标系统的网络带宽和资源,导致服务降级或中断的攻击方式。攻击者通常会使用僵尸网络来发送大量的UDP数据包,这些数据包通常为大包,且速率非常快。


近几年来,越来越多的攻击者选择使用UDP反射放大攻击。UDP反射放大攻击有两个特点,一是属于UDP协议,二是目的端口号固定。UDP反射放大攻击的原理类似,以常见的NTP(Network Time Protocol)反射放大攻击为例,其有两个关键点:反射和放大。

UDP反射攻击:
UDP反射攻击(UDP Reflection Attack)是一种针对网络层的DDoS(分布式拒绝服务)攻击方法,这种攻击的基本原理是,攻击者通过向目标主机发送大量的UDP数据包,并在源IP地址中使用反射技术,使得这些数据包被发送回源主机,由于目标主机没有对这些数据包进行任何处理,因此会消耗大量的资源,从而导致服务降级或中断。

UDP放大攻击:
攻击者通常利用互联网的基础架构来进行放大攻击。由于网络中开放的NTP服务器非常多,攻击者会利用僵尸主机同时向NTP服务器发起大量的Monlist请求,1个Monlist请求包可以引发100个响应包。通常1个NTP请求包只有90字节的大小,而1个回应报文通常为482字节,100个回应报文就是48200字节,可以发现回应报文是请求报文的500倍左右,这就形成了四两拨千斤的放大攻击,最终造成链路拥塞甚至网络瘫痪。

常见的防御方法:


1.限流
可以采用两种方式针对UDP Flood进行限流:一是以某个IP地址作为统计对象,对到达这个IP地址的UDP流量进行统计并限流,超过部分丢弃;二是以UDP会话作为统计对象,如果某条会话上的UDP报文速率达到了告警阈值,这条会话就会被锁定,后续命中这条会话的UDP报文都被丢弃。

2.指纹学习
指纹学习就是通过分析客户端向服务器发送的UDP报文载荷是否有大量的一致内容,来判定这个UDP报文是否异常。如图所示,DDoS防护系统对到达指定目的地的UDP报文进行统计,当UDP报文达到告警阈值时,开始对UDP报文的指纹进行学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中该指纹的报文将被判定为攻击报文,并作为攻击特征进行过滤。目前,市面上绝大多数的DDoS防护系统产品均采用指纹学习的方法来防御UDP Flood攻击。

两种方式各有利弊。限流方式属于暴力型,可以很快将UDP流量限制在一个合理的范围内,但是不分青红皂白,超过就丢,可能会丢弃一些正常报文;而指纹学习属于理智型,不会随意丢弃报文,但是发生攻击后需要有个指纹学习的过程。目前,指纹学习功能是针对UDP Flood攻击的主流防御手段,在各大防火墙产品中广泛应用。


http://www.niftyadmin.cn/n/5416669.html

相关文章

【算法集训】基础算法:递推 | 概念篇

前言 递推最通俗的理解就是数列,递推和数列的关系就好比 算法 和 数据结构 的关系,数列有点像数据结构中的顺序表,而递推就是一个循环或者迭代的枚举过程。 递推本质上是数学问题,所以有同学问算法是不是需要数学非常好&#xff…

Java SE入门及基础(32)

方法重写(Override) 1. 概念 来自官方的说明 An instance method in a subclass with the same signature(name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the super…

rasterio库简介及函数说明

目录 简介常用函数栅格读写rasterio.open()dst.write() 仿射变换rasterio.transform.from_origin() 遮罩处理geometry_mask() 简介 Rasterio 是一个用于读写栅格数据集的 Python 库,它提供了方…

唤起原生IOS和安卓Android app的方法

大家好我是咕噜美乐蒂,很高兴又和大家见面了! 要唤起原生 iOS 或 Android 应用程序,你可以使用以下方法: 唤起原生 iOS 应用程序 在 iOS 上,你可以使用自定义 URL 方案或 Universal Links 来唤起原生应用程序。以下…

如何用一台电脑主机连两个显示器同步?

本文介绍如何使用一台电脑主机连接两台显示器并同步两台显示器! 有两种方法。 方法一:使用两根信号线将两台显示器连接至显卡上的两个视频输出接口。 计算机显卡必须支持双输出,具有两个视频接口,用于连接不同的显示器。 设置方…

Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区 别

Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区别 对于吞吐量来说kafka和RocketMQ支撑高吞吐,ActiveMQ和RabbitMQ比他们低一个数量级。对于 延迟量来说RabbitMQ是最低的。 1:从社区活跃度 按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三…

LCR 132. 砍竹子 II

解题思路&#xff1a; 由于数量级较大&#xff0c;需要使用long以及快速幂求余 下图便于理解快速幂求余 class Solution {public int cuttingBamboo(int bamboo_len) {if(bamboo_len < 3) return bamboo_len - 1;int b bamboo_len % 3, p 1000000007;long rem 1, x 3;f…

请编程输出无向无权图各个顶点的度 ← STL vector 模拟邻接表存图

【题目描述】 请利用 STL vector 模拟邻接表存图&#xff0c;编程输出无向无权图各个顶点的度。【输入样例】 5 6 1 3 2 1 1 4 2 3 3 4 5 1【输出样例】 4 2 3 2 1【算法分析】 本例利用 STL vector 模拟实现邻接表。代码参见&#xff1a;https://blog.csdn.net/hnjzsyjyj/arti…