首页/安全/安全加固速查/DNS 服务递归与放大风险控制
服务与端口收敛50 条

DNS 服务递归与放大风险控制

对外解析服务器若开放递归,会被用于 DNS 放大攻击:按角色拆分权威/递归,用 allow-recursion 限定来源。

安全加固速查安全更新于 2026-10-13

开放递归的危害

对外提供解析的 DNS 服务器如果开放递归,会被第三方当作放大攻击的反射源:一个很小的查询可以触发一个很大的响应,攻击者等于借你的带宽与信誉去打别人。正确做法是按角色拆分:面向公网的只做权威解析,递归只对内部来源开放,并用 allow-recursion 明确限定来源网段。

基本信息

适用平台Linux(BIND、Unbound)
相关端口53,TCP 与 UDP
风险等级高
基线要求不存在开放递归
关键配置allow-query、allow-recursion、allow-transfer

典型使用场景

  • DNS 服务器角色梳理与配置收敛
  • 排查开放递归带来的风险
  • 限制区域传送,防止域数据被拉取
  • 新建解析服务时的最小化配置
  • 收到放大攻击投诉后的应急处置
  • 多台 DNS 分层的来源规划

核查与收紧

核查与收紧
ss -tulnp | grep ':53 '                        # 确认 53 端口的监听情况
named-checkconf 2>/dev/null                    # 检查 BIND 配置语法
grep -E 'allow-(query|recursion|transfer)' /etc/named.conf 2>/dev/null   # 查看三个关键条目
# 建议:allow-query { any; }; allow-recursion { 10.0.0.0/8; };
unbound-control status 2>/dev/null | head      # Unbound 环境可用它查看运行状态

配置项读法

配置项含义注意点
allow-query允许查询的来源与递归控制是两件事
allow-recursion允许递归查询的来源必须限定为内部网段
allow-transfer允许区域传送的来源显式配置,默认值因版本而异
监听地址服务绑定的地址与端口不宜绑到不可信网段
递归开关是否提供递归服务按服务器角色决定
存在开放递归时,第三方可以借你的带宽与信誉发动放大攻击:处置优先级等同于一个高危漏洞。
allow-query 与 allow-recursion 是两件事:只改前者不解决问题,递归开关必须单独收敛。
区域传送同样要限制:allow-transfer 的默认值随版本变化,不同版本行为不一致,必须显式写出来才可靠。
改动 DNS 配置属于高风险操作:改之前先备份配置,改完用 named-checkconf 检查语法,再从内部与外部各验证一次解析行为,避免解析中断影响全体业务。

易错点

  • 只改 allow-query 不改 allow-recursion,开放递归依旧存在
  • 不显式配置 allow-transfer,依赖默认值时域数据可能被任意拉取
  • 权威解析与递归服务混在同一实例上,公共面与管理面无法分离
  • 改动配置后不检查语法直接重启,服务起不来导致全员无法解析
  • 只在防火墙上封端口不改配置,内部来源依然能滥用递归

数据来源与参考

  • US-CERT:DNS 放大攻击(TA13-088A)
  • BIND 官方文档:allow-recursion

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌