一、前言
老王和老李吵架败了,老王寒夜负气离家出走。老王衣服单薄,老李心疼老王,想给老王打电话哄他回家,可是打老王电话死活不接。此时换做你是老李,怎么办?
发短消息啊。此时的老李发现短消息竟然如此好用,几个认错的短消息一发,老王回来了,老王与老李又手拉手涛声依旧了!!!
老李不会问这个问题:既然手机有了电话功能,为何还要有短消息功能?
电话固然好,即时(Realtime)通信,可以实时传达大量信息,但是却无法满足人类所有的通信需求。
短消息,异步通信,实时性差,但是却可以弥补电话通信的市场空白,和电话携手一起满足人类所有的通信需求。
老王刷信用卡,银行会给老王发短消息,告知消费记录,这非常便利。如果只有电话,老王每次刷卡银行需要给老王打电话通知,老王正在忙,哪有空接这种电话。但是老王如果不接电话,这种通信就是无效的。在老王看来,这就是骚扰电话,短消息通信显然比电话通知更合理。
生活中通信的场景太多了,但是大体都可归纳为两种:
需要建立连接(connection-oriented)的电话模式,如电话、微信语音/视频聊天、电视节目点播等。
无需建立连接(connectionless)的短消息模式,如广播、电报、寻呼、短消息、微信消息、电子邮件等等。
扯了那么多,好像和UDP没有什么关联,其实关联很大。TCP/IP协议发明的时间节点大概在上世纪60年代。那个时间节点的通信主要有电话、电报、广播、电视。TCP/IP设计者希望TCP/IP像80年代的邮电局,既可以打电话,又可以发电报(短消息)。
于是就有了两个协议:TCP,Transport Control Protocol,这个可以提供类似打电话的连接服务。UDP,User Datagram(数据报)Protocol,这个可以提供短消息服务。
无论是连接服务的TCP,还是无连接的UDP,都需要有运输大队来将从用户(用户程序)承揽的TCP/UDP Packet转运给通信的双方,这个运输大队就是IP协议。
汽车大队IP也是无连接的,完全可以替代UDP,UDP存在有何意义?
这个问题可能是小德真正想表达的。可是IP怎么让接收方知道是哪个进程的包裹呢?
可以使用IP包头的Protocol字段,该字段一个字节长,取值空间为0-255,理论上可以分辨256个进程。
超过了256个进程就无法分辨了吧?
有看官会说,只要设计者将Protocol设计得更长一些,比如两个字节,不可以分辨65536个进程了吗?这个和UDP的目的端口号是一致的。
问题又来了,接收方如何知道数据包来自于哪个源IP地址的哪个进程?
无法知道了吧?
看来还得在IP包头里添加一个类似于源端口号的字段,用于标识源IP上的进程。
这好像也不是什么难事,只要设计者将UDP的源端口号,目的端口号放在IP头,岂不是完美解决问题?
依然有扩展性的难题,凡是无法扩展的协议,都会面临扩展性的难题。目前的TCP/IP使用两级扩展,即网络层+传输层两级扩展,理论上扩展能力是无限的。
如果有一天需要增添一个传输层协议,只要在IP Protocol给该协议一个序号,然后该协议使用长的端口号,用于辨识用户进程,这种扩展能力是几乎没有上线的。
但是由于IPv4的地址长度有限,无法扩展,这也是IPv4最大的局限性,但是这个局限性和UDP无关。UDP存在的意义,提供短消息通信模式,弥补通信市场空白。使用网络层+UDP扩展,使得UDP能够提供最大65536用户进程辨识度。
二、什么是UDP Flood
小德还是先从UDP协议讲起。在讲SYN Flood的时候,我们知道了TCP协议是一种面向连接的传输协议。但是UDP协议与TCP协议不同,UDP是一个无连接协议。使用UDP协议传输数据之前,客户端和服务器之间不建立连接,如果在从客户端到服务器端的传递过程中出现数据的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?
其实不然,在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使传输速度受到严重的影响。反观UDP,由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使传输速度得到了保证。
正是UDP协议的广泛应用,为黑客们发动UDP Flood攻击提供了平台。UDP Flood属于带宽类攻击,黑客们通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包,且速率非常快,通常会造成以下危害:
消耗网络带宽资源,严重时造成链路拥塞。
大量变源变端口的UDP Flood会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。
三、UDP Flood是如何发生的?
顾名思义,UDP Flood是指用洪水一样的UDP报文进行攻击。不同于TCP协议,UDP协议是一种无连接的协议,使用UDP协议传输报文之前,客户端和服务器之间不建立连接,如果在从客户端到服务器端的传递过程中出现报文的丢失,协议本身也不做任何检测或提示。这种报文处理方式决定了UDP协议资源消耗小、处理速度快,在被广泛应用的同时也为攻击者发动UDP Flood攻击提供了可能。
传统UDP Flood攻击是一种消耗攻击和被攻击双方资源的带宽类攻击方式。攻击者通过僵尸网络向目标设备发送大量伪造的UDP报文,这种报文一般为大包且速率非常快,通常会造成链路拥塞甚至网络瘫痪的危害。这种攻击方式由于技术含量较低,现在已经越来越少被使用。
近几年来,越来越多的攻击者选择使用UDP反射放大攻击。UDP反射放大攻击有两个特点,一是属于UDP协议,二是目的端口号固定。UDP反射放大攻击的原理类似,以常见的NTP(Network Time Protocol)反射放大攻击为例,其有两个关键点:反射和放大。
(一)反射攻击
在UDP协议中,正常情况下,客户端发送请求包到服务器,服务器返回响应包给客户端,一次交互就已完成,中间没有校验过程。反射攻击正是利用了UDP协议面向无连接、缺少源认证机制的特点,将请求包的源IP地址篡改为攻击目标的IP地址,最终服务器返回的响应包就会被送到攻击目标,形成反射攻击。
(二)放大攻击
攻击者通常利用互联网的基础架构来进行放大攻击。由于网络中开放的NTP服务器非常多,攻击者会利用僵尸主机同时向NTP服务器发起大量的Monlist请求,1个Monlist请求包可以引发100个响应包。通常1个NTP请求包只有90字节的大小,而1个回应报文通常为482字节,100个回应报文就是48200字节,可以发现回应报文是请求报文的500倍左右,这就形成了四两拨千斤的放大攻击,最终造成链路拥塞甚至网络瘫痪。
四、如何防御UDP Flood?
由于UDP协议不建立连接,对UDP Flood的防御并不能像SYN Flood一样进行源探测。最初防火墙对UDP Flood的防御方式就是限流,将链路中的UDP报文控制在合理的带宽范围之内,可基于目的IP地址、目的安全区域和会话进行限流。虽然限流可以有效缓解链路带宽的压力,但这种方式可能会丢弃一些正常报文,因此需要新的手段防御UDP Flood。
由攻击工具伪造的攻击报文通常都拥有相同的特征字段,比如都包含某一字符串或整个报文内容一致,而对于UDP反射放大攻击中那些由真实网络设备发出的报文,在数据段不具备相同特征,但其目的端口都是固定的,所以不难发现UDP Flood攻击报文都具有一定的特征。确定攻击报文的特征后即可进行过滤,特征过滤也就是常说的指纹过滤。指纹过滤包括静态指纹过滤和动态指纹学习两种方法。
(一)静态指纹过滤
UDP报文的数据段、源IP地址、源端口、目的IP地址、目的端口都可能隐藏着攻击报文的特征。对于已知的攻击特征,可以直接配置到设备的过滤器参数中。配置了静态指纹过滤后会对收到的报文进行特征匹配,对于匹配到攻击特征的报文进行丢弃、限流等下一步操作。
(二)动态指纹学习
在攻击特征未知的情况下,可通过动态指纹学习进行攻击防御。对于一些攻击工具发起的UDP Flood攻击,攻击报文通常都拥有相同的特征字段,指纹学习就是对一些有规律的UDP Flood攻击报文进行统计和特征识别,当报文达到告警阈值时则开始进行指纹学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中指纹的报文则被判定为攻击报文,进行丢弃、限流等后续操作。
(三)应用加速(客户端安全)
应用加速是新一代的智能分布式云接入系统,采用创新级SD-WAN跨域技术,针对高防机房痛点进行专线穿透打通并搭配高速通道技术,用户可自主选择是否隐藏真实服务器IP,节点间切换过程中用户不会有任何感知,始终保持TCP连接不中断, 适合任何TCP端类应用包括(游戏、APP、微端、端类内嵌Web等)
优势:
1.功能:
抗DDoS攻击
服务节点针对终端完全隐身,黑客无法获知攻击目标,无法直接针对服务节点发起全面攻击。从而保障APP正常快速运行
CC防护/数据加密传输
通过与防护节点建立加密隧道,接管客户端与服务器端网络连接,一链一密,可准确识别攻击者与正常访客。非正常访客(黑客)发送的数据包被直接丢弃,肉鸡使用一次便被精准识别,结合精准访问控制可实现 CC全面识别防御,从根本上解决 CC攻击问题,做到真正为用户业务保驾护航
环境安全检测
通过SDK 可以精准识别每个终端当前运行环境风险(虚拟机、模拟器运行、加速器、系统root/越狱、修改器、多开运行、调试/注入/Hook/DUMP)和网络环境 信息(代理、4G/WIFI、链路质量、网络线路、网络延迟)通过设备信誉模型智能评估设备风险等级,为智能调度、身份可信识别提供多维度参考数据,同时辅以智能入侵检测引擎,标记检测到的风险设备,结合精准访问控制可精准拦截识别出 的可疑设备
应用安全管控
AntiDDoS-SDK 可对应用自身风险进行检测,通过APP签名技术,有效识别应用风险,防止应用被广告病毒植入、二次打包、功能屏蔽、仿冒钓鱼等恶意破解。基于SASE架构,隐藏业务真实主机,黑客无法在互联网上发起扫描和定向入侵
业务安全防护
安全加速 SDK 基于SASE架构,天生具备WAF 和业务安全防护能力。依托设备风险识别和可信访问,阻断一切未经认证的流量,可高效解决恶意注册、撞库、暴力破解、针对APP的大流量CC攻击、短信/验证码接口被刷、机器批量投票、灌水/恶意评论、渠道刷量作弊等业务问题
SDK安全加固
对AntiDDoS-SDK 进行了高强度安全加固,防止黑客进行反编译、逆向分析,反调试技术可保障业务防护逻辑不被破解
2.分析:
大数据分析
通过大数据分析获取每个终端访客的活跃度、终端到防护节点的网络链路、设备信誉等级等信息给智能分析决策提供了重要参考,同时对访问及防护日志进行大数据分析,从日志中挖掘威胁情报、进行安全数据分析、运营数据分析,主动完善防护策略
全网访问加速
通过终端环境信息检测和设备信誉评估,从分布式节点中每一个终端调度分配最优节点,智能选择最优解析线路,实现就近节点接入,结合UDP多路传输、跨国跨境加速等技术,提高全网用户访问速度,确保访问低延迟和高可靠性,有效提升访客体验
攻击溯源
智能调度系统详细记录节点调度信息,因每个IP节点属于每个终端独用资源,因此若被分配到的IP遭受攻击,根据调度信息可快速定位攻击设备,实时分析僵尸网络、C2 控制端,同时依靠威胁数据分析可以极大提升攻击溯源成功机率
多维度全面监控
实现对海量防护节点多维度、细颗粒度的全面监控,当监控到节点有异常时可及时剥离异常节点,实现故障自动隔离和业务风险隔离
3.防御架构
DDoS防御
CC防御