小查询能触发大响应,根子在“伪造源IP+开放递归解析器+大响应报文”三件事同时成立。 攻击者用很小的查询包,借递归解析器的手,把数倍甚至数十倍的响应流量打到受害者IP上,链路一旦跑通,UDP 53端口就成了低成本流量入口。
DNS放大攻击原理是什么:一条查询怎样被放大
第一步:伪造源IP,让响应“寄错地址”
攻击者控制的机器发送DNS查询,源IP伪造成受害者IP,UDP没有三次握手,递归解析器不校验源地址,直接按源IP回包,受害者没发查询,却收到解析器返回的大响应。
你可以把链路想成三个角色:攻击者、递归解析器、受害者,攻击者只负责递一张“假回邮地址”的查询单,递归解析器按地址回信,受害者被迫签收一大包流量,请求包通常很小,响应包可能明显更大,这就是放大的起点。
第二步:开放递归解析器成了“扩音器”
开放递归指解析器对任意来源IP提供递归查询服务,企业出口DNS、云上自建BIND、老防火墙后的缓存服务器,都可能被配置成开放递归,检查命令很直接:
dig +recurse +short example.com @解析器IPnmap -sU -p53 --script dns-recursion 解析器IP
返回正常解析且没有来源限制,说明递归对外开放,这个“扩音器”越接近受害者网络,链路越顺,攻击者会批量扫描互联网上的开放递归,把可用列表变成“弹药库”。
第三步:大响应查询类型把倍率拉高
DNS查询类型不同,响应体积差异明显,TXT、ANY、DNSSEC相关查询更容易产生大响应,攻击者不关心内容,只要响应足够大。
| 查询类型 | 请求特点 | 响应特点 | 放大链路中的角色 |
|---|---|---|---|
| A | 请求小 | 响应小 | 倍率有限 |
| TXT | 请求小 | 响应可较大 | 常见放大素材 |
| ANY | 请求小 | 可能返回多记录 | 响应体积大 |
| DNSSEC相关 | 请求带标志 | 响应含签名链 | 体积明显增加 |
业内专家指出,开放递归解析器是历史遗留配置风险,不是单一厂商问题,据公开网络安全通报,UDP反射放大是常见DDoS形态之一,DNS协议因查询响应不对称被反复利用。
DNS放大攻击和反射攻击区别在哪里:别把两件事混成一件事
反射看“借谁的手”,放大看“换多少流量”
反射攻击强调攻击者不直接打受害者,而是借第三方服务回包,DNS放大是反射的一种具体形态,区别点可以这样记:
- 反射:源IP伪造,第三方回包。
- 放大:在反射基础上,响应包大于请求包,形成流量增益。
- 链路:DNS放大必须依赖可用递归解析器和大响应类型。
链路检测要看三个信号
- 出口出现大量目的端口53的UDP包,目的IP分散。
- 内网递归解析器QPS异常升高,查询类型集中在TXT/ANY。
- 受害者侧突然收到非预期DNS响应,源端口53。
抓包命令:tcpdump -nn -i eth0 udp port 53 -c 200,看请求源IP是否与内网真实主机不符,响应大小是否明显大于请求,开启BIND查询日志:rndc querylog,再查named.log中的query类型分布,检测时别只看总流量,查询类型和源IP分布更能说明链路是否被利用。
中小企业DNS放大攻击怎么防:从递归配置到流量清洗
先收紧递归权限
权威DNS服务器不需要开放递归,BIND配置示例:
recursion no;对纯权威服务器。allow-recursion { 10.0.0.0/8; 192.168.0.0/16; };只允许内网。allow-query { any; };与递归权限分开,避免把查询权限和递归权限混在一起。
Windows DNS在“服务器属性-高级”里关闭“启用递归”或限制监听接口,云解析服务检查是否关闭公网递归,边界NAT映射也要查,53端口暴露到互联网就可能被扫描利用。
再限制响应体积和速率
edns-udp-size 1232;减少UDP大响应。max-udp-size 1232;控制最大UDP报文。- BIND 9.11+可用
rate-limit { responses-per-second 5; };做示例限速。 - iptables示例:
iptables -A INPUT -p udp --dport 53 -m limit --limit 20/second -j ACCEPT,再配合DROP处理超限包,具体阈值按业务压测调整。
最后准备清洗和应急通道
中小企业没有清洗中心时,联系运营商做目的端口53的UDP限速或临时黑洞,云上业务启用云厂商DDoS基础防护和流量清洗,行业共识认为,DNS防护不能只靠一台设备,递归权限、速率限制、上游清洗要串成一条线。
DNS放大攻击防护方案价格怎么看
清洗服务通常按保底带宽、弹性带宽、清洗能力、响应时效计费,地域不同,运营商资源和机房成本有差异,看价格时问三个问题:
- 保底带宽是否覆盖业务峰值?
- 清洗触发是自动还是人工?
- 是否包含DNS专项防护和应急响应?
不要只比较单价,链路可用性更关键,价格低但清洗触发慢,攻击流量仍会先打满出口。
北京DNS放大攻击应急响应怎么做:现场处置顺序
北京某企业出口带宽突然被打满,监控显示UDP 53流量异常,这种场景要按顺序处置:
- 先确认受害者IP和攻击入口,查边界防火墙会话表,按目的端口53排序。
- 临时限速UDP 53。
iptables -I INPUT -p udp --dport 53 -j DROP仅用于紧急止血,随后改成白名单。 - 定位内网开放递归解析器,用
nmap扫描内网53端口,结合dig验证递归。 - 关闭递归或加ACL,清理缓存,BIND执行
rndc flush。 - 联系北京本地运营商或云清洗服务,提交攻击目的IP、源端口、协议和流量特征。
- 保留抓包和日志,便于回溯,抓包文件用
tcpdump -w dns.pcap udp port 53保存。
应急时不要只封受害者IP,否则业务中断;先限速再精准封禁,北京地域的运营商响应流程和云清洗接入方式要提前演练,临时找资源容易耽误时间。
DNS放大链路的形成条件并不神秘:伪造源IP是入口,开放递归是杠杆,大响应查询是燃料,把递归权限收回来、把UDP响应限制住、把上游清洗接上,链路就很难跑通。
DNS放大链路常见问题解答
为什么UDP 53端口更容易被用于DNS放大?
UDP无连接,源IP校验弱,攻击者不需要完成握手就能让解析器回包,TCP需要三次握手,伪造源IP后很难收到响应,放大链路自然难成立,多数DNS查询默认走UDP,这让53端口成为低成本入口。
内网DNS服务器会被利用做放大吗?
会,内网递归解析器如果对公网开放,或者NAT映射把53端口暴露到互联网,就可能被扫描利用,检查边界映射和ACL,确认allow-recursion只覆盖内网网段,云上安全组关闭公网53入方向,除非业务必须。
发现DNS放大攻击后先封IP还是先限速?
先限速止血,再定位开放递归解析器,直接封受害者IP会中断业务,直接封所有53流量会打断正常解析,用iptables限速UDP 53,同时抓包确认攻击源和查询类型,再按白名单精准放行,最后关闭开放递归并清理缓存,链路才会断掉。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/787835.html


