Version 1.2.1.0 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot.
域环境中的实际应用(基于 GPO 的收集与转换)
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /v1.2.1.0/cn/docs/examples/gpo-driven-collection/index.md.
本文档概述了在 Active Directory 域环境中运行 DNSServer.DebugLogParser 的一个实际端到端示例,重点是转换域控制器上的 Windows DNS 服务器调试日志。
本示例附带一个 ZIP 压缩包,其中包含用于实现本文描述工作流的策略工件。
最相关的工件包括 备份清单、GPO 报告、Files.xml、Set-DNSServerDebugLogging.ps1 以及 ScheduledTasks.xml。
场景
- 多个域控制器(DC)承载 DNS 服务器角色。
- 通过计划任务在每个 DC 上启用并统一配置 DNS 调试日志(日志文件写入路径为
C:\Administration\Logs\DNSServer)。 - 集中管理的进程将日志转换为 CSV,用于:
- 安全分析
- 运营报告
- 故障排查
- 合规/保留
目标结果
- 所有 DC 上的转换设置保持一致
- 输出位置和命名可预测
- 可选压缩以减少存储占用
- 可选统计输出以实现快速的每日汇总
- 主机端风险最小,明确重跑和清理策略
建议架构
收集模型:本地转换 + 中央拉取
- 每个 DC 将 DNS 调试日志写入磁盘,并启用日志轮转。
- 每个 DC 将轮转的
*.log文件转换成数据 CSV 和统计 CSV,然后通过计划任务压缩输出为*.zip。 - 输出文件与日志文件写在同一目录,简化管道流程。
- 中央服务器收集
*.zip输出,例如通过文件共享导入、定时复制、SIEM 转发器或基于代理的收集器。
该模型最大限度减少了对大型原始日志文件的网络读取,将解析工作保持在数据近旁。
GPO 工作流
该工作流通过组策略(计算机配置)实现,确保所有域控制器的设置一致。
本仓库中包含参考实现(GPO 报告):
- 归档/报告名称:
T0-C-Analytics-DNSDebugLogging - 备份 ID:
{2B6F16BC-0E7C-4787-83D7-2854FED882EE} - GPO 目标链接:
corp.company.com/Domain Controllers - 项目筛选器(用于文件部署和计划任务):仅当存在
C:\Windows\System32\dns.exe时应用
1) 前置条件(文件夹 + 模块)
提供的备份假定以下文件夹已存在。如果希望部署时自动创建,请添加单独的 GPP 项目:
C:\Administration\ScriptsC:\Administration\Logs\DNSServer
备份还假定 Convert-DNSDebugLogFile 模块已在 DC 上可用。转换任务启动 Windows PowerShell 5.1,使用 -NoProfile,且不显式导入模块,因此模块必须安装在对 LocalSystem 可见的机器范围 Windows PowerShell 模块路径中。推荐做法:
- 在 DC 上安装 DNSServer.DebugLogParser,例如从 PowerShell Gallery(如果策略允许)。
- 通过内部仓库或文件共享部署模块,使其可在
$env:PSModulePath中被发现。 - 如果需要确定性加载行为,可在任务动作中显式添加
Import-Module。
2) 部署调试日志配置脚本(GPP 文件)
GPO 部署以下脚本:
- 源(SYSVOL 中的 GPP):
%GptPath%\Preferences\Files\Set-DNSServerDebugLogging.ps1 - 目标(每个 DC 上):
C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1
此项在 Files.xml 的 GPP 文件首选项中实现。
3) 计划任务:配置 DNS 调试日志
GPO 创建名为 Set-DNSServerDebugLogging 的计划任务。
- 备份中安全上下文:
SYSTEM,登录类型为S4U - 备份中触发器:每日(起始时间
2025-03-01T00:00:01) - 动作在 ScheduledTasks.xml 中:
powershell.exe -ExecutionPolicy RemoteSigned -command " & { C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1 }"- 工作目录:
C:\Administration\Scripts
链接的 Set-DNSServerDebugLogging.ps1 脚本通过 Get-DnsServerDiagnostics / Set-DnsServerDiagnostics 配置 DNS 调试日志,重点包括:
- 启用文件日志及轮转
- 写入路径:
C:\Administration\Logs\DNSServer\DnsDebugLog_<COMPUTERNAME>.<Domain>_.log - 每个文件轮转大小为 10 MB
- 主要捕获查询相关活动(查询、通知、更新、查询事务),排除完整数据包日志
4) 计划任务:转换轮转的调试日志为压缩 CSV
GPO 创建名为 Convert-DNSDebugLogs 的计划任务。
- 备份中安全上下文:
SYSTEM,登录类型为InteractiveToken - 备份中触发器:每日(起始时间
2026-01-01T00:30:00) - 工作目录:
C:\Administration\Logs\DNSServer - 动作在 ScheduledTasks.xml(格式化以便阅读):
Get-ChildItem .\*.log |
Sort-Object lastwritetime, Name -Descending |
Select-Object -Skip 1 |
Convert-DNSDebugLogFile `
-ComputerName $env:COMPUTERNAME `
-Delimiter ';' `
-OutputType Both `
-ContextFilter Packet `
-OutputCulture sv-SE `
-CompressOutput
设计说明:
Select-Object -Skip 1有意跳过最新(活动)日志文件。- 这意味着当前数据仅在轮转后导出;在低流量 DC 上,活动日志可能超过一天未处理。
- 由于 Convert-DNSDebugLogFile 默认
-OutputFile为“同一文件夹,同名,扩展名为.csv”,输出文件与*.log输入文件并列。 - 使用
-CompressOutput时,每个处理的日志生成一个*.zip,并删除中间 CSV 文件。 - 除非归档或删除已处理的
*.log文件,否则后续运行会再次处理所有非活动日志。 - 任务在
$Error.Count -gt 0时抛出异常,表示运行失败。
5) 中央采集
选项(任选其一):
- 文件共享采集:DC 写入(或复制)
C:\Administration\Logs\DNSServer\*.zip到\\fileserver\share\dns\$env:COMPUTERNAME\...(为 DC 计算机账户或域控制器组授予共享和 NTFS 权限,若任务以SYSTEM运行) - 拉取模型:中央作业读取
\\dc\C$\Administration\Logs\DNSServer\*.zip(最不推荐,需管理员共享) - 代理转发:SIEM / 日志管道转发
*.zip输出
运营注意事项
- 最小权限:任务以
SYSTEM运行;确保本地文件夹可写,且任何 UNC 目标对计算机账户开放访问(如使用)。 - 签名策略:两个任务均使用
-ExecutionPolicy RemoteSigned;根据策略签署或解除阻止部署的脚本和模块。 - 磁盘使用:
-CompressOutput显著减少空间,但该工作流不删除源日志;请规划保留和清理策略。 - 重复处理行为:除非归档或删除已处理的日志,转换任务会在后续运行时再次处理所有非活动
*.log文件。此方法简单且稳健,但可能覆盖输出并在收集器不去重时产生重复数据。 - 多 DC 合并:包含
-ComputerName $env:COMPUTERNAME,确保合并数据集可追溯。 - 验证:头部验证保持启用,因为任务未使用
-SkipHeaderValidation(推荐做法)。
使用 ZIP 进行验证和调整
使用 ZIP 压缩包 作为参考实现,然后根据环境调整以下方面:
- 目标范围:哪些 DC / OU 接收该策略
- 执行身份:确认两个计划任务使用预期的登录类型(
S4U与InteractiveToken),或统一为标准 - 文件夹创建:决定是否预先创建
C:\Administration\Scripts和C:\Administration\Logs\DNSServer,或由额外 GPP 项目创建 - 路径:确认
C:\Administration\Scripts和C:\Administration\Logs\DNSServer符合标准 - 保留:决定是否保留原始日志及保留时长(尤其启用清理选项时)
- 采集:确认 CSV/ZIP 输出的写入位置及中央采集方式
如果想在不导入的情况下验证 GPO 配置,仓库中的权威资源包括:
- manifest.xml 备份元数据
- gpreport.xml 人类可读完整报告
- Files.xml 文件部署
- Set-DNSServerDebugLogging.ps1 脚本内容
- ScheduledTasks.xml 计划任务