6. 区域完整性 (Zone Integrity)
确保所传输区域数据的完整性, 对维护 DNS 基础设施的安全性和可靠性至关重要. 本节讨论 AXFR 的完整性考虑, 并推荐最佳实践.
完整性威胁 (Integrity Threats)
区域传输面临若干完整性威胁:
-
Man-in-the-middle attacks: 位于 AXFR client 和 server 之间的攻击者可能拦截并修改传输中的区域数据.
-
Spoofing attacks: 攻击者可能冒充 AXFR server, 并向 AXFR client 发送伪造的区域数据.
-
Replay attacks: 攻击者可能捕获一次合法区域传输并在之后重放, 从而可能导致 client 回退到过时区域数据.
-
Unauthorized modifications: 如果没有适当认证和完整性检查, 攻击者可能在区域传输期间注入, 删除, 或修改 resource records.
完整性保护机制 (Integrity Protection Mechanisms)
为防范这些威胁, AXFR implementations 应该采用以下一种或多种完整性保护机制:
TSIG (Transaction Signature)
TSIG [RFC2845] 使用共享密钥和 HMAC algorithms 提供消息级认证和完整性保护.
TSIG 在 AXFR 中的工作方式:
-
AXFR client 在其 query message 中包含 TSIG RR, 并使用预共享密钥签名.
-
AXFR server 验证查询上的 TSIG signature. 如果验证失败, server 以 RCODE NOTAUTH 或 REFUSED 响应.
-
如果查询有效, AXFR server 在其 response messages 中包含 TSIG RRs:
- 第一条 response message 必须包含 TSIG RR.
- Intermediate messages 可以省略 TSIG (为提高效率), 但该序列仍由第一条和最后一条消息上的 TSIG 保护.
- 最后一条 response message 必须包含 TSIG RR.
-
AXFR client 验证 response messages 上的 TSIG signatures. 如果任一验证失败, client 必须丢弃整个区域传输.
优势: TSIG 提供强完整性保护和相互认证. 它在 DNS implementations 中得到广泛支持.
限制: 需要预共享密钥, 且必须安全分发和管理这些密钥.
SIG(0) (Signature)
SIG(0) [RFC2931] 使用 DNSSEC-style signatures 提供基于公钥的消息认证.
SIG(0) 在 AXFR 中的工作方式:
-
AXFR client 使用其私钥为 query message 签名, 并在查询中包含生成的 SIG(0) RR.
-
AXFR server 使用 client 的公钥验证签名 (该公钥通过 DNS 获取或来自本地 trust anchor).
-
AXFR server 可以使用自己的私钥为 response messages 签名, 使 client 能够验证响应的真实性.
优势: 消除预共享密钥需求. 适用于密钥分发具有挑战的场景.
限制: 相比 TSIG, 实现和配置更复杂. 依赖 public key infrastructure.
DNSSEC
对于 DNSSEC-signed zones, AXFR client 可以使用 DNSSEC signatures (RRSIG records) 验证所传输区域数据的完整性.
DNSSEC 如何保护 AXFR:
-
AXFR server 传输区域, 包括所有 RRSIG, DNSKEY, 和 NSEC/NSEC3 records.
-
AXFR client 使用区域中的 DNSKEY records 验证所传输 RRsets 上的 RRSIG signatures.
-
如果 DNSSEC validation 失败, client 不应该提供该区域数据.
优势: 为区域数据提供端到端完整性保护, 不仅保护传输期间的数据, 也保护提供给 resolvers 时的数据.
限制: 要求区域已使用 DNSSEC 签名. 不保护 AXFR protocol 本身 (例如防范未授权 clients).
网络层安全 (Network-Level Security)
除应用层安全机制外, AXFR transfers 可以使用网络层安全进行保护:
-
TLS/SSL: 使用 TLS 或 SSL 加密 TCP connection, 可为区域传输提供机密性和完整性保护. (Note: 区域传输的 DNS-over-TLS 在本文撰写时尚未标准化.)
-
IPsec: 通过 IPsec-protected connections 进行的区域传输可受益于 IPsec 提供的机密性, 完整性, 和认证.
-
VPNs 或 private networks: 通过 private network (如 VPN) 进行区域传输可以提供额外安全层.
建议 (Recommendations)
-
使用 TSIG 或 SIG(0): AXFR servers 和 clients 应该支持并使用 TSIG 或 SIG(0) 保护区域传输. TSIG 是最常部署的方案, 对多数部署是推荐.
-
验证传输数据: AXFR clients 应该在将收到的区域数据提交到本地区域数据库之前验证其完整性. 对 DNSSEC-signed zones, 此验证包括检查 DNSSEC signatures.
-
安全密钥管理: 对基于 TSIG 的部署, operators 必须确保共享密钥使用密码学强随机数生成器生成, 并被安全存储和分发.
-
监控异常: Operators 应该监控区域传输中的异常, 例如区域大小的意外变化, 异常传输频率, 或完整性检查失败.
-
使用强算法: 使用 TSIG 时, operators 应该使用强 HMAC algorithms, 如 HMAC-SHA256 或 HMAC-SHA512, 而不是 HMAC-MD5 等较弱算法. 算法选择指南见 [RFC4635] 和 [RFC5702].
处理完整性失败 (Handling Integrity Failures)
如果 AXFR client 检测到完整性失败 (例如 TSIG validation failure, DNSSEC validation failure), 它必须:
- 丢弃从失败区域传输接收的所有数据.
- 记录该失败以供审计和故障排查.
- 可选地, 在适当延迟后重试区域传输 (带 backoff).
AXFR client 不得将部分接收的或完整性失败的区域数据提交到其 authoritative zone database, 因为这样可能导致向 DNS clients 提供不正确或恶意数据.