一、UDP协议概述
UDP(User Datagram Protocol,用户数据报协议)是TCP/IP协议栈中的一种无连接的传输协议,能够提供面向事务的简单不可靠数据传输服务。
1.UDP的应用场景
由于缺乏可靠性且属于非连接导向协议,基于UDP协议的应用一般必须允许一定量的丢包、出错和复制粘贴。与TCP协议不同,UDP协议主要用于支持不需要可靠机制、对传输性能要求较高的应用,比如常见的DNS,就是由客户端发起解析请求,然后服务器直接应答响应,避免了TCP的建立与断开连接以及过多的协议报头所产生的开销,提高了传输效率。再如,流媒体、即时多媒体游戏和IP电话(VoIP)等对实时性要求较高的应用,都是建立在UDP协议之上的。此外,UDP还用于组播协议,如在局域网里共享屏幕教学,使用组播发送数据可以避免由TCP产生的大量连接。
二、针对UDP协议的攻击与防御
由于UDP是一种无连接的协议,缺乏可靠性机制,相对于TCP来说,它更容易遭受欺骗攻击。同时,UDP在传输数据上表现出的“高效”特点也常常被攻击者所利用,用来发起DDoS攻击,例如UDP Flood攻击、UDP反射放大攻击等。
1.UDP Flood攻击
概述:
UDP Flood attack是一种DoS攻击(Denial-of-Service attack,拒绝服务攻击)
它指将大量UDP数据包发送到目标服务器,且速率非常快,通常会造成服务器资源耗尽,无法响应正常的请求,严重时会导致链路拥塞。保护目标服务器的防火墙也可能因 UDP 泛滥而耗尽,从而导致对合法流量的拒绝服务
(1)攻击原理
服务器在特定端口接收到 UDP 数据包时,它会通过两个步骤进行响应:
1.服务器首先检查是否有程序在侦听该端口的请求
2.如果没有程序在该端口侦听,则服务器以ICMP (ping) 数据包的格式回复给发送者
因此,对于大量的UDP数据包,服务器将被迫发送多个ICMP数据包,资源很快被耗尽,最终导致其他客户端无法访问它。同时,攻击者还可以欺骗UDP数据包的IP地址,确保过多的ICMP数据包不会返回给他们
(2)攻击判断
UDP洪水攻击有一些特征,可以根据以下特征来判断是否为UDP洪水攻击
源IP或源端口变化频繁
大量针对一个端口
报文负载一般保持不变或具有规律的变化
(3)防御方法
方法一:载荷检查
1.基于目的IP地址、目的安全区域或会话进行UDP流量统计
2.当UDP流量超过阈值时,会触发载荷检查,将超过部分丢弃
方法二:指纹学习
1.指纹由Anti-DDoS设备动态学习生成
2.当UDP流量超过阈值时,会将攻击报文的一段显著特征学习为指纹
3.丢弃后续能够与指纹匹配的报文。
方法三:关联TCP类服务防范
原理:
1.UDP是无连接的协议,无法通过源认证的方法防御UDP洪水攻击
2.关联TCP业务,UDP业务流量需要通过TCP业务流量认证或控制
步骤:
1.当UDP业务受到攻击时,对关联的TCP业务强制启动防御
2.通过关联防御产生TCP白名单,以确定同一源的UDP流量的走向
3.命中白名单的源的UDP流量允许通过,否则就被丢弃
2.UDP反射放大攻击
UDP反射放大攻击(UDP Reflection Attack)是一种针对网络层的DoS(分布式拒绝服务)攻击方法,这种攻击的基本原理是,攻击者通过向目标主机发送大量的UDP数据包,并在源IP地址中使用反射技术,使得这些数据包被发送回源主机,由于目标主机没有对这些数据包进行任何处理,因此会消耗大量的资源,从而导致服务降级或中断。
(1)攻击原理
1、攻击者首先需要获取目标主机的IP地址和端口号,这可以通过各种手段实现,例如使用字典攻击、暴力破解等方法。
2、攻击者向目标主机发送大量的UDP数据包,这些数据包通常包含随机生成的数据,但也可能是恶意代码,由于UDP协议不提供拥塞控制和流量整形功能,因此这些数据包会被无限制地发送出去。
3、在源IP地址中使用反射技术,反射技术的基本原理是,将数据包发送到一个公共的IP地址(例如224.0.0.251),然后由ICMP Echo请求消息将响应消息发送回源主机,这样一来,数据包就会被发送回源主机,而目标主机并不知道这些数据包是从哪里来的。
4、由于目标主机没有对这些数据包进行任何处理,因此会消耗大量的资源,从而导致服务降级或中断。
(2)攻击防范建议
1、限制UDP端口的使用,只允许受信任的应用程序使用特定的UDP端口,以减少潜在的攻击面。
2、使用TCP协议代替UDP协议,TCP协议提供了拥塞控制和流量整形功能,可以有效地防止UDP反射放大攻击。
3、配置防火墙规则,对于来自未知IP地址的数据包,可以阻止其进入网络,可以设置过滤规则,以防止恶意数据包的传播。