开放解析器检查是什么
开放解析器指对任意来源都提供递归服务的 DNS 服务器。这类服务器会被用于 DNS 放大攻击,也会成为攻击者隐藏查询来源的跳板。检查分两手:配置层面核对 allow-recursion、allow-query、allow-query-cache 与 recursion 开关;验证层面必须从外部网络实际发起查询,因为只在内网测试无法发现对外开放。
基本信息
| 适用平台 | BIND 9、Unbound、PowerDNS 等递归解析器 |
|---|---|
| 核心配置 | allow-recursion、allow-query、allow-query-cache、recursion |
| 验证方式 | 从外部网络或第三方节点发起查询,看是否获得递归答案 |
| 常见背景 | 应急响应的入口检查项之一 |
典型使用场景
- 安全基线与等保核查:确认解析器是否对外提供递归
- 被通报为放大攻击源:定位是哪台解析器开放了递归
- 新上线 DNS 服务的验收:确认 ACL 已按设计生效
- 多台解析器资产盘点:逐台核对配置一致性
- 变更后复测:调整 ACL 后从外部重新验证
检查与加固
检查与加固
# 检查当前递归与 ACL 相关配置
grep -A3 -E 'allow-recursion|allow-query|recursion' /etc/bind/named.conf.options 2>/dev/null
# 加固示例(BIND):只允许内网网段递归
# options { recursion yes; allow-recursion { 10.0.0.0/8; 192.168.0.0/16; }; };
# 生效并复测
sudo rndc reload
# 从外部网络执行查询验证,例如:
# dig @<该服务器公网IP> example.com配置项含义
| 配置项 | 含义 | 风险点 |
|---|---|---|
| allow-recursion | 允许递归查询的来源 | 配置为 any 即成为开放解析器 |
| allow-query | 允许普通查询的来源 | 过宽会暴露内部记录 |
| allow-query-cache | 允许查询缓存的来源 | 过宽会被利用做缓存探测 |
| recursion | 是否提供递归服务 | 对外应关闭或严格限制 |
只从内部网络测试无法发现『对外开放递归』:必须借助外部网络或第三方在线检测,才能得到与攻击者视角一致的结论。
开放解析器被利用时,你的服务器会成为攻击流量的一部分:除承担通报与封禁风险外,还会因异常流量导致自身解析服务质量下降。
加固后的复核清单
加固后的复核清单
# 1) 配置层面确认 ACL 已按设计收紧
grep -E 'allow-recursion|allow-query|recursion' /etc/bind/named.conf.options
# 2) 重载配置
sudo rndc reload
# 3) 从外部网络复测,确认递归已被拒绝
# dig @<公网IP> example.com
# 4) 核对查询日志中是否仍出现大量非本地来源
sudo journalctl -u named --since '1 hour ago' | tail -20加固动作要在变更窗口内做,并同时通知依赖该解析器的业务方:把 ACL 一次性收紧到最小范围,可能与某些跨网段调用方产生冲突。