dig CH TXT 是什么
CHAOS 类(CH)是 DNS 的历史遗留类别,其中 version.bind 与 hostname.bind 被一些解析器用来暴露自身软件版本与主机名。查询它们可帮助运维与安全人员核对解析器身份,但同时也是一种信息泄露面:公开的版本号能让攻击者直接匹配已知漏洞。因此它既是加固核查项,也是基线检查项。
基本信息
| 适用平台 | BIND 9(dig 支持 CH 类查询)、Unbound、dnsmasq 行为各异 |
|---|---|
| 查询对象 | version.bind、hostname.bind、authors.bind |
| 期望结果 | 加固后返回 REFUSED 或 NOTIMP |
| 合规前提 | 仅对自有或获授权的服务器执行 |
典型使用场景
- 安全基线核查:确认对外解析器未暴露版本号
- 资产盘点:识别网络内未知解析器的软件与版本
- 变更验证:加固后复测确认 version 已隐藏
- 多台解析器一致性检查:避免个别实例遗漏加固
- 应急响应:快速判断某台服务器的角色与实现
查询与加固对照
查询与加固对照
# 查询解析器版本与主机名
dig CH TXT version.bind @192.168.1.1
dig CH TXT hostname.bind @192.168.1.1
# 加固后的期望结果:REFUSED 或 NOTIMP
# BIND 中隐藏版本(named.conf options 段)
# version none;
# 改完重新加载并复测
sudo rndc reload
dig CH TXT version.bind @127.0.0.1返回结果判读
| 返回结果 | 含义 | 处置建议 |
|---|---|---|
| 返回版本字符串 | 未加固,版本已暴露 | 在配置中隐藏版本并复测 |
| REFUSED | 已按基线加固 | 纳入基线清单,保持现状 |
| NOTIMP | 服务未实现该类查询 | 通常可视为安全 |
| 超时无响应 | 被策略或 ACL 拦截 | 结合服务器日志确认 |
不同实现对 CHAOS 查询的处理差异很大:BIND 默认应答,Unbound 与 dnsmasq 行为各不相同。返回空或超时不代表异常,需要结合具体实现判断。
对非自有或未获授权的 DNS 服务器执行此类查询属于边界行为:在企业合规与法律环境里,扫描行为需要事先取得书面授权。
批量核查自有解析器
批量核查自有解析器
# 对资产清单中的解析器逐台核查版本暴露情况
for ip in 10.0.0.53 10.0.0.54 10.0.1.53; do
printf '%s: ' $ip
dig +time=2 +tries=1 CH TXT version.bind @$ip | grep -o 'TXT.*' | head -1 || echo NO-ANSWER
done
# 核查主机名是否同样暴露
dig +time=2 CH TXT hostname.bind @10.0.0.53 | tail -3核查结果要落到资产清单上而不是凭记忆:新上线的解析器常常沿用默认配置,如果没有清单驱动,很容易在加固后重新引入暴露版本号的实例。