UDP反射攻击的本质,是攻击者把受害者的IP写进UDP请求包源地址,第三方服务器收到小请求后把放大的巨型报文“回送”给受害者,第三方服务器只是被借用的反射镜。
UDP反射攻击原理:第三方服务器为什么会回送巨型报文
UDP协议本身不验证源地址,攻击者发一个几十字节的请求包给开放UDP服务的服务器,把源IP改成受害者,服务器收到请求后,会把响应包发给这个伪造的源IP,响应包比请求包大几十倍甚至数万倍,这就是放大。
攻击者只发小包,受害者却收到大包
一次典型DNS反射过程可以拆成四步:
- 攻击者向公网递归DNS服务器发送一个约60字节的DNS查询,要求返回完整DNSSEC记录或大段TXT记录。
- DNS服务器把几百到几千字节的响应发往伪造源IP。
- 受害者服务器收到大量非预期UDP大包,带宽被占满。
整个过程里,攻击者只消耗很小带宽,第三方DNS服务器在不知情的情况下,替攻击者把流量放大送到了受害者手里。
反射器为什么愿意“配合”?
这些第三方服务器本身没有作恶,只是配置不当:
- 开启了不必要的公网UDP服务。
- 没有限制查询来源。
- 没有限制响应速率。
行业共识认为,互联网上大量开放递归DNS、NTP、Memcached服务仍未关闭,才让UDP反射攻击长期存在,据工信部网络安全威胁和漏洞信息共享平台公开信息,UDP反射攻击是DDoS攻击中的常见类型。
常见UDP服务放大能力对比
| 协议 | 默认端口 | 典型放大倍数 |
|---|---|---|
| DNS | 53 | 约10-50倍 |
| NTP | 123 | 约数百倍 |
| SSDP | 1900 | 约30倍 |
| CLDAP | 389 |
约50-70倍 |
| Memcached | 11211 | 可达数万倍 |
Memcached的放大倍数最高,因为它支持UDP协议,且一个get请求可以拉取大量缓存数据,公开测试显示,Memcached反射攻击的放大倍数可达数万倍,是最“划算”的反射手段。
UDP反射放大攻击怎么防御:先切断反射源
防御要分三个角色看:被攻击者、第三方服务器、网络运营商。
被攻击方如何做流量清洗
- 不要把业务裸奔在公网,前面挂高防IP或云清洗服务。
- 在边界设备上丢弃非业务端口UDP流量,如果业务不用UDP,直接全禁。
- 对业务必须开放的UDP端口,按来源IP限速。
- 启用黑洞路由做最后兜底,检测到流量超过阈值时,把目标IP拉入黑洞,业务临时中断但防止全机房受累。
第三方服务器运维如何自保
如果你的服务器开了UDP服务,不想被当成反射器,要做好三件事:
- 检查对外UDP端口,执行:
netstat -ulnp | grep -E ':53|:123|:1900|:11211|:389'
出现这些端口,优先考虑关闭公网访问。
- 给UDP服务配置响应速率限制,以DNS为例,在named.conf中设置:
rate-limit {
responses-per-second 10;
};
- 开启源地址验证,Linux下可以启用反向路径过滤:
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
这能丢弃源地址明显伪造的包。
北京服务器防UDP反射攻击方案中的边界过滤
北京服务器机房通常会在出口路由器配置BCP38入口过滤,简单说,就是检查从本网络发出的包,源IP是否属于本网络,如果不属于,直接丢弃,这能防止攻击者利用本地网络发送伪造源IP的UDP包,北京节点因为运营商接入质量稳定,很多企业把清洗设备部署在北京机房,利用其BGP牵引能力把攻击流量导走。
UDP反射攻击和TCP攻击的区别:不回包是最大不同
UDP反射攻击和TCP攻击的区别,一句话概括:TCP要握手,UDP不要。
连接机制决定了伪造难度
- TCP三次握手要求源IP能收到SYN-ACK,否则连接建立不了,攻击者很难用伪造IP完成TCP连接。
- UDP没有连接建立过程,客户端发一个数据包,服务器直接回包,源IP可以随意写。
业内专家指出,反射攻击的成本优势主要来自放大效应,攻击者用很小的带宽,就能让第三方服务器向受害者回送数十倍甚至上万倍的流量。
放大效应让UDP攻击更“廉价”
TCP攻击多数需要攻击者用真实IP或肉鸡的真实IP发起连接,带宽消耗基本是一对一,UDP反射则是一对小请求换回大响应,这也是为什么UDP反射攻击在DDoS中占比相当高。
抓包看真相:怎样确认自己正在被反射?
如果你发现服务器带宽突然打满,但业务请求没增加,可以按下面步骤排查。
一条命令快速判断反射源端口
先看UDP流量来源端口:
tcpdump -i eth0 -nn udp -c 100 | awk '{print $5}' | sort | uniq -c | sort -rn
如果大量包的源端口集中在53、123、1900、11211,基本可以判断是UDP反射放大攻击。
用tcpdump验证放大倍数
抓取一段流量,观察请求和响应的大小差异:
tcpdump -i eth0 -nn -s 0 udp -w reflect.pcap
然后用Wireshark打开,过滤出同一个会话,你会看到请求包可能只有几十字节,响应包动辄上千字节,放大器类型不同,倍数也不同,多数情况下,响应越大,攻击越难扛。
租用服务器防UDP反射攻击多少钱:钱花在哪才有效
很多运维问“租用服务器防UDP反射攻击多少钱”,这个问题的答案不取决于服务器本身,而是取决于清洗能力。
高防服务的成本主要看三块:
- 保底清洗带宽,比如日常抗100G还是300G,价格差异大。
- 弹性清洗容量,攻击超过保底后,按实际清洗流量叠加计费。
- 地域节点,北京服务器防UDP反射攻击方案往往贵在BGP带宽和运营商接入质量,但清洗效果更稳。
如果业务不需要UDP,最省钱的办法不是买高防,而是直接关闭UDP端口,如果必须开UDP,优先给单IP限速,再考虑高防服务,没有清洗能力的高防叫“假高防”,钱会白花。
小结
UDP反射攻击把第三方服务器变成了攻击者的放大器,防住它的关键不是拼带宽,而是减少互联网上可被利用的开放UDP服务,并在源头校验IP,被攻击前,关闭无用端口;被攻击时,流量清洗加限速,这两件事比买多少带宽都管用。
Q&A:UDP反射攻击和TCP攻击的区别及常见疑问
UDP反射攻击和TCP攻击的区别是什么?
TCP攻击需要完成三次握手,源地址很难伪造,UDP反射攻击不需要连接,攻击者把源IP改为受害者IP,第三方服务器直接把响应包发回给受害者,UDP反射攻击还带有放大效应,攻击成本更低,防御更难。
UDP反射放大攻击怎么防御最省钱?
最省钱的方式是关闭公网不必要的UDP服务,并在出口路由器开启源地址校验(uRPF),如果业务必须提供UDP服务,给单IP响应限速,把放大倍数控制在可接受范围,这些措施基本不需要额外购买设备。
怎样判断服务器是否被当作UDP反射攻击的反射器?
登录服务器执行netstat -ulnp,查看是否对外开放了53、123、1900、11211、389等端口,再用tcpdump抓包,检查是否收到大量来源IP异常的请求,而响应包远大于请求包,如果出现这些特征,说明服务器很可能已经被利用为反射器,应立即关闭服务或限制来源。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/637427.html





