Version 1.2.0.0 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot.

Uso práctico en un entorno de dominio (colección y conversión impulsadas por GPO)

Este ejemplo demuestra cómo implementar un flujo de trabajo impulsado por GPO para recopilar y convertir registros de depuración DNS en controladores de dominio.

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /v1.2.0.0/es/docs/examples/gpo-driven-collection/index.md.

Este documento describe un ejemplo práctico y completo de ejecución de DNSServer.DebugLogParser en un entorno de dominio de Active Directory, centrado en convertir registros de depuración del servidor DNS de Windows en controladores de dominio.

Este ejemplo se acompaña de un archivo ZIP, que proporciona los artefactos de la política usados para implementar el flujo de trabajo descrito aquí.
Los artefactos más relevantes son el manifiesto de respaldo, el informe de GPO, Files.xml, Set-DNSServerDebugLogging.ps1 y ScheduledTasks.xml.

Escenario

  • Varios controladores de dominio (DC) alojan el rol de servidor DNS.
  • La depuración de DNS está habilitada y configurada de forma consistente en cada DC mediante una tarea programada (escribiendo archivos de registro en C:\Administration\Logs\DNSServer).
  • Un proceso gestionado centralmente convierte los registros a CSV para:
    • análisis de seguridad
    • informes operativos
    • solución de problemas
    • cumplimiento/retención

Resultados esperados

  • Configuraciones de conversión consistentes en todos los DC
  • Ubicación y nombres de salida predecibles
  • Compresión opcional para reducir el espacio de almacenamiento
  • Salidas estadísticas opcionales para resúmenes diarios rápidos
  • Riesgo mínimo en el host, con consideraciones explícitas para reejecución y limpieza

Arquitectura sugerida

Modelo de recopilación: conversión local + extracción central

  1. Cada DC escribe los registros de depuración DNS en disco con habilitación de rollover.
  2. Cada DC convierte los archivos rotados *.log en un CSV de datos y CSVs de estadísticas, luego comprime las salidas en *.zip según un horario (Programador de tareas).
  3. Las salidas se escriben junto a los archivos de registro para mantener la canalización simple.
  4. Un servidor central recopila las salidas *.zip, por ejemplo mediante ingestión por recurso compartido de archivos, copia programada, reenvío SIEM o un colector basado en agente.

Este modelo minimiza las lecturas de red de archivos de registro grandes y mantiene el análisis cerca de los datos.

Flujo de trabajo con GPO

El flujo de trabajo se implementa mediante la Directiva de Grupo (configuración del equipo) para asegurar configuraciones consistentes en todos los controladores de dominio.

Implementación de referencia incluida en este repositorio (informe de GPO):

  • Nombre del archivo/informe: T0-C-Analytics-DNSDebugLogging
  • ID de respaldo: {2B6F16BC-0E7C-4787-83D7-2854FED882EE}
  • Destino del enlace GPO: corp.company.com/Domain Controllers
  • Filtro de elementos (usado tanto para el despliegue de archivos como para tareas programadas): solo aplica si existe C:\Windows\System32\dns.exe

1) Requisitos previos (carpetas + módulo)

La copia de seguridad proporcionada asume que estas carpetas ya existen. Agrega elementos GPP separados si quieres que el despliegue las cree automáticamente:

  • C:\Administration\Scripts
  • C:\Administration\Logs\DNSServer

La copia de seguridad también asume que Convert-DNSDebugLogFile ya está disponible en los DC. La tarea de conversión inicia Windows PowerShell 5.1 con -NoProfile y no importa el módulo explícitamente, por lo que el módulo debe estar instalado en una ruta de módulo de Windows PowerShell a nivel de máquina visible para LocalSystem. Enfoques recomendados:

  • Instalar DNSServer.DebugLogParser en los DC. Por ejemplo, desde PowerShell Gallery (si la política lo permite).
  • Desplegar el módulo vía repositorio interno / recurso compartido de archivos para que sea detectable en $env:PSModulePath
  • Añadir un Import-Module explícito a la acción de la tarea si quieres un comportamiento de carga determinista

2) Desplegar el script de configuración de registro de depuración (GPP Archivos)

La GPO despliega el script:

  • Origen (en SYSVOL vía GPP): %GptPath%\Preferences\Files\Set-DNSServerDebugLogging.ps1
  • Destino (en cada DC): C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1

Esto está implementado en el elemento de preferencia GPP Archivos en Files.xml.

3) Tarea programada: configurar el registro de depuración DNS

La GPO crea una tarea programada llamada Set-DNSServerDebugLogging.

  • Contexto de seguridad en la copia de seguridad suministrada: SYSTEM con tipo de inicio de sesión S4U
  • Disparador en la copia de seguridad suministrada: diario (inicio 2025-03-01T00:00:01)
  • Acción en ScheduledTasks.xml:
    • powershell.exe -ExecutionPolicy RemoteSigned -command " & { C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1 }"
    • Directorio de trabajo: C:\Administration\Scripts

El script vinculado Set-DNSServerDebugLogging.ps1 configura el registro de depuración DNS mediante Get-DnsServerDiagnostics / Set-DnsServerDiagnostics y (notablemente):

  • Habilita el registro en archivo + rollover
  • Escribe en: C:\Administration\Logs\DNSServer\DnsDebugLog_<COMPUTERNAME>.<Domain>_.log
  • Usa un tamaño de rollover de 10 MB por archivo
  • Captura principalmente actividad relacionada con consultas (consultas + notificaciones + actualizaciones + transacciones de preguntas) y excluye el registro completo de paquetes

4) Tarea programada: convertir registros de depuración rotados a CSV comprimido

La GPO crea una tarea programada llamada Convert-DNSDebugLogs.

  • Contexto de seguridad en la copia de seguridad suministrada: SYSTEM con tipo de inicio de sesión InteractiveToken
  • Disparador en la copia de seguridad suministrada: diario (inicio 2026-01-01T00:30:00)
  • Directorio de trabajo: C:\Administration\Logs\DNSServer
  • Acción en ScheduledTasks.xml (formateado para legibilidad):
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

Notas de diseño:

  • Select-Object -Skip 1 evita intencionadamente procesar el archivo de registro más nuevo (activo).
  • Eso significa que los datos actuales solo se exportan después del rollover; en DCs de bajo volumen, el registro activo puede permanecer sin procesar por más de un día.
  • Porque Convert-DNSDebugLogFile por defecto usa -OutputFile en “misma carpeta, mismo nombre, .csv”, las salidas quedan junto a las entradas *.log.
  • Con -CompressOutput, cada registro procesado produce un *.zip y los CSV intermedios se eliminan.
  • A menos que archives o elimines los archivos *.log procesados, ejecuciones posteriores reprocesarán cada registro no activo.
  • La tarea falla si $Error.Count -gt 0 para señalar una ejecución fallida.

5) Ingestión central

Opciones (elige una):

  • Ingestión por recurso compartido de archivos: el DC escribe (o copia) C:\Administration\Logs\DNSServer\*.zip a \\fileserver\share\dns\$env:COMPUTERNAME\... (otorga permisos de recurso compartido y NTFS a las cuentas de equipo DC o al grupo Domain Controllers si la tarea se ejecuta como SYSTEM)
  • Modelo pull: trabajo central lee \\dc\C$\Administration\Logs\DNSServer\*.zip (menos preferido; requiere recursos compartidos administrativos)
  • Reenviador agente: SIEM / canalización de registros que envía las salidas *.zip

Consideraciones operativas

  • Mínimos privilegios: las tareas se ejecutan como SYSTEM; asegúrate de que las carpetas locales sean escribibles y que cualquier destino UNC otorgue acceso a la cuenta de equipo si se usa.
  • Política de firma: ambas tareas usan -ExecutionPolicy RemoteSigned; firma o desbloquea el script y módulo desplegados según tu política.
  • Uso de disco: -CompressOutput ayuda significativamente, pero este flujo no elimina los registros fuente; planifica retención y limpieza.
  • Comportamiento de reprocesamiento: a menos que archives o elimines registros procesados, la tarea de conversión procesará cada archivo *.log no activo nuevamente en ejecuciones posteriores. Esto es simple y robusto, pero puede sobrescribir salidas y crear ingestiones duplicadas si tu colector no hace deduplicación.
  • Consolidación multi-DC: -ComputerName $env:COMPUTERNAME se incluye para que los conjuntos de datos consolidados sean rastreables.
  • Validación: la validación de encabezado permanece habilitada porque la tarea no usa -SkipHeaderValidation (recomendado).

Validar y adaptar (usando el ZIP)

Usa el archivo ZIP como implementación de referencia, luego ajusta los siguientes aspectos a tu entorno:

  • Alcance objetivo: qué DCs / UOs reciben la política
  • Identidad de ejecución: confirma que ambas tareas programadas usan el tipo de inicio de sesión previsto (S4U vs InteractiveToken) o normalízalos a tu estándar
  • Creación de carpetas: decide si C:\Administration\Scripts y C:\Administration\Logs\DNSServer se preconfiguran en otro lugar o deben crearse con elementos GPP adicionales
  • Rutas: confirma que C:\Administration\Scripts y C:\Administration\Logs\DNSServer coinciden con tus estándares
  • Retención: decide si conservar los registros sin procesar y por cuánto tiempo (especialmente si habilitas opciones de limpieza)
  • Ingestión: confirma dónde se escriben las salidas CSV/ZIP y cómo se recopilan centralmente

Si quieres validar la configuración exacta de la GPO sin importarla, las fuentes autorizadas en este repositorio son: