Active Directory DNS服务器允许普通用户枚举区域:配置错误还是合规实践?
结论:这属于Active Directory DNS服务器的安全配置错误
首先可以明确:普通域用户能够枚举AD DNS服务器的区域列表,绝对不是可接受的安全实践,而是典型的权限配置疏漏。
为什么这是个问题?
- 默认权限设计:Active Directory集成的DNS服务器,默认权限是严格限制的——只有域管理员、DNS管理员等特权组的成员,才有枚举DNS区域、查看完整记录的权限。普通用户本应被拒绝这类访问。
- 安全风险:允许普通用户获取DNS区域列表,相当于泄露了内部网络的核心拓扑信息:攻击者可以从中提取域控制器主机名、关键业务服务器地址、服务定位(SRV)记录等,为横向移动、针对性攻击提供重要情报。
如何验证与修复?
检查当前权限
可以用PowerShell命令查看DNS区域的ACL:Get-DnsServerZoneAcl -ZoneName "your-domain.com"查看输出中是否包含普通域用户组(比如
Domain Users)的List Contents或类似权限。修正权限配置
- 打开DNS控制台,右键目标区域 → 「属性」→ 「安全」选项卡,移除普通用户/
Domain Users组的不必要权限(比如列出内容、读取权限)。 - 或者用PowerShell调整ACL,确保只有授权的管理员组保留相关权限:
# 示例:移除Domain Users对区域的List Contents权限 $acl = Get-DnsServerZoneAcl -ZoneName "your-domain.com" $rule = $acl.Access | Where-Object { $_.IdentityReference -eq "DOMAIN\Domain Users" -and $_.FileSystemRights -match "ListDirectory" } if ($rule) { $acl.RemoveAccessRule($rule) Set-DnsServerZoneAcl -ZoneName "your-domain.com" -ZoneAcl $acl }- 打开DNS控制台,右键目标区域 → 「属性」→ 「安全」选项卡,移除普通用户/
特殊需求处理
如果有业务场景需要非特权用户访问DNS记录(比如自动化脚本),应该创建专用的服务账户,仅授予其所需的最小权限(比如仅允许读取特定记录,而非枚举所有区域),避免给所有普通用户开放权限。
内容的提问来源于stack exchange,提问作者Julak Doom
相关产品推荐
相关产品推荐

