关闭DNS开放递归是降低反射放大攻击风险最直接有效的措施,只需修改一行配置,就能让服务器从攻击“帮凶”变成安全堡垒。
DNS服务器是互联网的“电话簿”,但配置不当的开放递归解析器就像一台没有门禁的对讲机任何人都能借用它发起致命攻击,攻击者伪造受害者IP地址,向大量开放递归服务器发送小型查询请求,服务器却将放大数十倍的响应包砸向真正的目标,根据行业共识,此类反射放大攻击峰值流量可达数百Gbps,足以瘫痪任何企业网络,更重要的是,绝大多数企业DNS服务器根本不需要对外提供递归解析服务,关闭它是零成本、零业务影响的“闭眼操作”。
DNS反射放大攻击怎么防御:先搞清楚流量是怎么被“借刀杀人”的
要理解防御逻辑,必须先弄懂攻击链条的三个环节:伪造源地址、开放递归放大、流量汇聚。
攻击者向全球开放的递归DNS服务器发送查询请求,但把请求中的源IP替换成受害者的IP,每台DNS服务器忠实地将回答发往这个伪造地址,而一条超短查询(约50字节)可触发超长响应(如ANY类型查询可达4000字节以上),放大倍数达80倍,当攻击者同时控制数万台肉鸡持续发送请求,成千上万台开放递归服务器就成了免费的DDoS发射器。
受害者视角的防御基本无解流量来自合法DNS服务器,封禁IP会误伤正常用户,清洗服务又昂贵。但服务器管理员的视角完全不同:只要自己的DNS不对全网开放递归,就切断了一条攻击通道,行业普遍共识是,世界上有数百万台开放递归DNS服务器,哪怕只关闭一部分,也能显著削弱攻击者可用资源池。
如何关闭DNS递归解析:三步自查法定位问题
别急着改配置,先确认你的服务器是否存在风险,以下操作在Linux服务器上执行,耗时不到两分钟。
- 检查当前递归状态,运行命令:
dig @8.8.8.8 www.baidu.com +short,若返回IP地址而非超时或拒绝,说明DNS响应正常但无法区分递归与迭代 - 从外部视角检测:在另一台机器上运行
dig @你的服务器IP www.google.com +short,如果返回了IP地址,说明你的DNS开启了对外开放递归;如果报错REFUSED或超时,说明已受限 - 使用专业扫描工具确认:
nmap -sU -p 53 --script=dns-recursion 你的服务器IP,输出显示RECURSION: Recursion appears to be enabled则存在风险
注意:检测时务必使用外部网络而非本机登录,很多管理员用dig @localhost测试,结果永远显示正常,根本无法反映公网视角的真实状态。
关闭DNS递归解析的三种操作路径:按服务器类型对号入座
不同DNS软件关闭递归的方式不同,但原则一致:明确允许内网客户端递归,拒绝外部递归,以下是主流平台的配置方法。
BIND/named服务器:最严谨的ACL控制法
BIND使用范围广泛,配置路径为/etc/named.conf或/etc/bind/named.conf.options,核心操作是在options块中定义一个内网网段访问控制列表,然后显式禁掉其余来源的递归。
acl internal-network {
10.0.0.0/8; # 内网A段
172.16.0.0/12; # 内网B段
192.168.0.0/16; # 内网C段
};
options {
recursion yes;
allow-recursion { internal-network; };
allow-query { any; }; # 允许所有人查询,但只对内部网段递归
allow-query-cache { internal-network; };
};
修改后执行named-checkconf验证语法,再执行systemctl restart named重启服务,这套配置的精髓在于:外部用户仍然可以查询你托管的权威解析记录,但无法利用你的缓存和递归能力。
如何关闭DNS递归解析在Windows Server上的配置
Windows环境使用图形界面操作,路径依次为:服务器管理器 → 工具 → DNS → 右键服务器 → 属性 → 高级,勾选“禁用递归”即可,但如果你需要为本地AD域提供解析服务,则不能全程禁用,需在“根提示”选项卡中删除默认的根服务器列表,原因是删除根提示后,DNS服务器无法向上级递归,自然只能处理区域内查询。
路由器/防火墙层拦截:最粗暴但有效
无论底层DNS软件是什么,你都可以在网络入口直接封堵UDP 53端口的异常请求,在边界防火墙上设置规则:仅允许来自内网网段的UDP 53进站流量,丢弃所有来自外网的UDP 53访问,操作命令参考iptables -A INPUT -p udp --dport 53 -s 内网网段 -j ACCEPT和iptables -A INPUT -p udp --dport 53 -j DROP,经过此设置,外部扫描工具将看到你的DNS端口超时,攻击者即使发来查询请求也无法触发递归。
关闭后的副作用与业务损耗评估:内网解析、权威解析和速度影响
很多管理员不敢动手,是担心关闭递归后DNS解析“瘫痪”,实际情况要分场景讨论。
- 内网客户端解析不受影响:内网机器使用内网DNS服务器解析时,源IP是内网地址,其递归请求同样被允许,解析速度和流程与之前完全一致
- 对外托管的权威域名解析不受影响:这是BIND配置中
allow-query { any; }的意义外部用户查询你托管的
example.com记录时,DNS服务器返回权威回答,行为与未关闭递归前完全相同 - 外部用户借用你的DNS解析公网域名被拒绝:这是预期中的结果,也是唯一遭受的“损耗”,如果有员工在外网办公时仍将电脑DNS指向公司服务器解析外部域名,这部分场景需要修改为使用公共DNS
- 性能提升:关闭对外开放递归后,服务器不再接收海量缓存请求,CPU和内存占用下降,日志中恶意查询量减少,安全团队每天收到的事件告警数也同步降低
需要警惕的特殊场景:如果你的服务器同时运行邮件服务并依赖反垃圾邮件DNSBL查询,则需要在防火墙中额外放行对特定DNSBL服务器的出站请求,但此类请求属于出站流量,通常不在入站封堵范围内。
开放递归检测工具与扫描服务清单
除了手动检测和配置,利用第三方工具持续监控更符合企业安全管理要求,以下工具在运维圈内使用广泛且免费:
- DNSFTP扫描脚本:开源工具,可批量扫描IP段的递归开放状态
- Shadowserver Foundation DNS Recursion Scanner:行业专业安全机构提供免费检索服务,输入IP即可查询该地址是否被标记为开放递归解析器
- Farsight Security DNSDB:用于分析DNS查询模式,识别异常放大行为
工具名称 | 用途 | 产出形式
安全扫描覆盖 | 自动化批量检测 | 开放递归IP清单
威胁情报分析 | 溯源攻击趋势 | 可视化报告
一台被攻击的DNS服务器赔偿了整个IP段:真实场景复盘
某中型电商公司在一次安全巡检中发现:其云服务器对外IP被安全厂商标注为“恶意放大器”,同网段的其他客户业务全部瘫痪,排查结果显示,这台服务器安装了默认配置的BIND仅用于转发内部应用日志域名,却意外对公网开放了递归解析,攻击者扫描端口时发现该漏洞,持续利用它发起了多轮攻击,不仅耗尽服务器自身带宽,还导致IDC机房将该IP段加入黑洞路由,最终因误伤另一家客户的在线交易系统引发纠纷。
从该案例中可提取两条关键教训:默认配置不等于安全配置,任何DNS服务安装完成后必须立即检查递归状态;安全检测应前置到上线流程,而不是等到被攻击再补课。
如何关闭DNS递归解析且不影响企业正常业务的分步清单
汇总配置要点,按顺序操作可确保零风险切换。
- 备份当前DNS配置文件
- 确认内网使用的IP地址范围和DNS服务器自身IP
- 按上文BIND或Windows Server部分的方法修改配置
- 严格测试三个解析场景,缺一不可:内网客户端递归外部域名,外网用户解析你托管的权威域名,外网用户递归解析其他域名(该场景必须返回REFUSED)
- 修改防火墙规则,丢弃来自非内网网段的UDP 53入站包
- 加入持续监控,每两周运行一次外部视角的检测命令验证风险状态
涉及公网IP的定向限制:封禁单IP不如封禁端口更彻底
只封堵特定IP的DDoS不太现实,但限制非信任来源的UDP 53端口访问却很容易做,在安全组和主机防火墙双层面配置后,攻击者的探测包会在极早期被丢弃,不会抵达BIND进程本身,安全组规则往往由云平台统一管理,操作路径为:控制台 → 云服务器 → 安全组 → 入方向规则 → 拒绝UDP 53来源为0.0.0.0/0,主机防火墙作为第二道保险,防止安全组配置被意外覆盖。
注意,简米云、酷番云等平台的安全组默认放行所有出站流量,因此仅需修改入站规则,接口路径可能因厂商控制台改版而略有不同,但搜索“云安全组UDP端口限制”均可找到对应文档,或者联系技术支持获取最新配置路径。
日常维护:每季度执行一次“递归自测”避免回退
配置完成后重新变成开放递归的可能性极低,但服务器迁移、镜像恢复、配置回滚等操作都会导致规则失效,建立每季度的定时检查任务十分必要,执行命令:
dig @服务器公网IP www.baidu.com +short +timeout=3 +tries=1
若输出connection timed out; no servers could be reached或REFUSED,说明本次检查通过,若返回IP地址,立刻重新审视安全组和named.conf配置,把这一条命令写进IT运维部的月度任务清单,由专人执行并记录结果,就能建立长期稳定的风险控制闭环。
DNS反射放大攻击是DDoS生态里“成本最低、收益最高”的手段,攻击者只花几十元租用扫描工具就能找出全网数百万台开放递归DNS服务器,而你关闭递归只是动一下手指的事,从攻击链的视角看,每关闭一台开放递归服务器,就相当于拆掉攻击者的一块免费跳板,疫情期间远程办公需求激增,更多企业DNS直接暴露在公网,暴露面管理与基础安全配置的优先级随之提升,基于多年安全运维经验判断,凡是被反射放大攻击波及的企业,事后回溯时几乎都能定位到某台“跑偏”的DNS服务器,而这类服务器网上搜“DNS反射放大攻击防范方案”能找到海量治理思路,但真正落地的第一条永远是今天讨论的关闭开放递归。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/636595.html





