Praktische Anwendung in einer Domänenumgebung (GPO-gesteuerte Sammlung und Konvertierung)
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /de/docs/examples/gpo-driven-collection/index.md.
Dieses Dokument beschreibt ein praktisches, durchgängiges Beispiel für den Einsatz von DNSServer.DebugLogParser in einer Active Directory-Domänenumgebung, mit Fokus auf die Konvertierung von Windows DNS Server-Debug-Protokollen auf Domänencontrollern.
Dieses Beispiel wird von einem ZIP-Archiv begleitet, das die Richtlinien-Artefakte enthält, die zur Umsetzung des hier beschriebenen Workflows verwendet werden.
Die wichtigsten Artefakte sind das Backup-Manifest, der GPO-Bericht, die Files.xml, das Set-DNSServerDebugLogging.ps1 und die ScheduledTasks.xml.
Szenario
- Mehrere Domänencontroller (DCs) hosten die DNS-Serverrolle.
- DNS-Debug-Protokollierung ist auf jedem DC aktiviert und wird konsistent über eine geplante Aufgabe konfiguriert (Protokolldateien werden nach
C:\Administration\Logs\DNSServergeschrieben). - Ein zentral verwalteter Prozess konvertiert die Protokolle in CSV für:
- Sicherheitsanalysen
- Betriebsberichte
- Fehlerbehebung
- Compliance/Aufbewahrung
Zielergebnisse
- Einheitliche Konvertierungseinstellungen auf allen DCs
- Vorhersehbarer Ausgabeort und -namen
- Optionale Komprimierung zur Reduzierung des Speicherbedarfs
- Optionale Statistik-Ausgaben für schnelle tägliche Zusammenfassungen
- Minimales Risiko auf dem Host mit expliziten Wiederholungs- und Bereinigungsüberlegungen
Vorgeschlagene Architektur
Sammelmodell: lokale Konvertierung + zentrale Abholung
- Jeder DC schreibt DNS-Debug-Protokolle mit aktivierter Rollierung auf die Festplatte.
- Jeder DC konvertiert die rotierten
*.log-Dateien in eine Daten-CSV und Statistik-CSVs und komprimiert die Ausgaben dann zeitgesteuert (Task Scheduler) zu*.zip. - Die Ausgaben werden neben den Protokolldateien abgelegt, damit die Pipeline einfach bleibt.
- Ein zentraler Server sammelt die
*.zip-Ausgaben, z. B. über Dateifreigabe, geplante Kopie, SIEM-Forwarder oder einen agentenbasierten Collector.
Dieses Modell minimiert Netzwerkzugriffe auf große Rohprotokolle und hält die Verarbeitung nahe an den Daten.
GPO-Workflow
Der Workflow wird über Gruppenrichtlinien (Computerkonfiguration) implementiert, um konsistente Einstellungen auf allen Domänencontrollern sicherzustellen.
Referenzimplementierung in diesem Repository enthalten (GPO-Bericht):
- Archiv-/Berichtsname:
T0-C-Analytics-DNSDebugLogging - Backup-ID:
{2B6F16BC-0E7C-4787-83D7-2854FED882EE} - GPO-Linkziel:
corp.company.com/Domain Controllers - Elementfilter (für Datei-Bereitstellung und geplante Aufgaben): gilt nur, wenn
C:\Windows\System32\dns.exeexistiert
1) Voraussetzungen (Ordner + Modul)
Das bereitgestellte Backup geht davon aus, dass diese Ordner bereits existieren. Füge separate GPP-Elemente hinzu, wenn die Bereitstellung sie automatisch erstellen soll:
C:\Administration\ScriptsC:\Administration\Logs\DNSServer
Das Backup setzt außerdem voraus, dass Convert-DNSDebugLogFile bereits auf den DCs verfügbar ist. Die Konvertierungsaufgabe startet Windows PowerShell 5.1 mit -NoProfile und importiert das Modul nicht explizit, daher muss das Modul in einem maschinenweiten Windows PowerShell-Modulpfad installiert sein, der für LocalSystem sichtbar ist. Empfohlene Vorgehensweisen:
- Installiere DNSServer.DebugLogParser auf den DCs, z. B. aus der PowerShell Gallery (wenn die Richtlinie dies erlaubt).
- Stelle das Modul über ein internes Repository / Dateifreigabe bereit, sodass es in
$env:PSModulePathauffindbar ist. - Füge einen expliziten
Import-Module-Befehl zur Aufgabenaktion hinzu, wenn du ein deterministisches Ladeverhalten möchtest.
2) Bereitstellung des Debug-Logging-Konfigurationsskripts (GPP Dateien)
Die GPO stellt das Skript bereit:
- Quelle (im SYSVOL via GPP):
%GptPath%\Preferences\Files\Set-DNSServerDebugLogging.ps1 - Ziel (auf jedem DC):
C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1
Dies ist im GPP-Dateielement in Files.xml implementiert.
3) Geplante Aufgabe: DNS-Debug-Logging konfigurieren
Die GPO erstellt eine geplante Aufgabe namens Set-DNSServerDebugLogging.
- Sicherheitskontext im bereitgestellten Backup:
SYSTEMmit AnmeldetypS4U - Trigger im bereitgestellten Backup: täglich (Startzeitpunkt
2025-03-01T00:00:01) - Aktion in ScheduledTasks.xml:
powershell.exe -ExecutionPolicy RemoteSigned -command " & { C:\Administration\Scripts\Set-DNSServerDebugLogging.ps1 }"- Arbeitsverzeichnis:
C:\Administration\Scripts
Das verlinkte Set-DNSServerDebugLogging.ps1-Skript konfiguriert DNS-Debug-Logging über Get-DnsServerDiagnostics / Set-DnsServerDiagnostics und insbesondere:
- Aktiviert Logging in Dateien + Rollierung
- Schreibt nach:
C:\Administration\Logs\DNSServer\DnsDebugLog_<COMPUTERNAME>.<Domain>_.log - Verwendet eine Rolliergröße von 10 MB pro Datei
- Erfasst hauptsächlich abfragebezogene Aktivitäten (Abfragen + Benachrichtigungen + Updates + Frage-Transaktionen) und schließt vollständiges Paket-Logging aus
4) Geplante Aufgabe: konvertiere rotierte Debug-Protokolle in komprimierte CSV
Die GPO erstellt eine geplante Aufgabe namens Convert-DNSDebugLogs.
- Sicherheitskontext im bereitgestellten Backup:
SYSTEMmit AnmeldetypInteractiveToken - Trigger im bereitgestellten Backup: täglich (Startzeitpunkt
2026-01-01T00:30:00) - Arbeitsverzeichnis:
C:\Administration\Logs\DNSServer - Aktion in ScheduledTasks.xml (zur besseren Lesbarkeit formatiert):
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
Designhinweise:
Select-Object -Skip 1vermeidet absichtlich die Verarbeitung der neuesten (aktiven) Protokolldatei. Convert-DNSDebugLogFile kann eine aktuell vom DNS-Server geöffnete Protokolldatei lesen, aber diese Datei ändert sich während des Lesens: Die Ausgabe kann die neuesten Einträge vermissen oder mit einem abgeschnittenen Datensatz enden, und zwei Durchläufe liefern nicht identische Ergebnisse. Das Überspringen der aktiven Datei macht die geplante Ausgabe reproduzierbar.- Das bedeutet, dass aktuelle Daten erst nach der Rollierung exportiert werden; bei DCs mit geringem Volumen kann die aktive Protokolldatei länger als einen Tag unberührt bleiben. Verringere die Rolliergröße, wenn diese Verzögerung für deinen Anwendungsfall zu lang ist.
- Da Convert-DNSDebugLogFile standardmäßig
-OutputFileauf „gleicher Ordner, gleicher Name,.csv“ setzt, landen die Ausgaben neben den*.log-Eingaben. - Mit
-CompressOutputerzeugt jede verarbeitete Protokolldatei eine*.zipund die Zwischen-CSVs werden entfernt. - Sofern du verarbeitete
*.log-Dateien nicht archivierst oder löschst, werden spätere Durchläufe jede nicht-aktive Protokolldatei erneut verarbeiten. - Die Aufgabe wirft einen Fehler, wenn
$Error.Count -gt 0ist, um einen fehlgeschlagenen Lauf zu signalisieren.
5) Zentrale Erfassung
Optionen (eine auswählen):
- Dateifreigabe-Erfassung: DC schreibt (oder kopiert)
C:\Administration\Logs\DNSServer\*.zipnach\\fileserver\share\dns\$env:COMPUTERNAME\...(erteile Freigabe- und NTFS-Rechte für die DC-Computer-Konten oder die Gruppe Domänencontroller, wenn die Aufgabe alsSYSTEMläuft) - Pull-Modell: zentraler Job liest
\\dc\C$\Administration\Logs\DNSServer\*.zip(am wenigsten bevorzugt; erfordert Admin-Freigaben) - Agent-Forwarder: SIEM-/Log-Pipeline, die die
*.zip-Ausgaben versendet
Betriebstechnische Überlegungen
- Least Privilege: Aufgaben laufen als
SYSTEM; stelle sicher, dass die lokalen Ordner beschreibbar sind und dass alle UNC-Ziele Zugriff für das Computerkonto gewähren, falls verwendet. - Signierungsrichtlinie: beide Aufgaben verwenden
-ExecutionPolicy RemoteSigned; signiere oder entsperre das bereitgestellte Skript und Modul gemäß deiner Richtlinie. - Plattennutzung:
-CompressOutputhilft erheblich, aber dieser Workflow entfernt die Quellprotokolle nicht; plane Aufbewahrung und Bereinigung. - Wiederverarbeitungsverhalten: Sofern du verarbeitete Protokolle nicht archivierst oder löschst, verarbeitet die Konvertierungsaufgabe bei späteren Läufen jede nicht-aktive
*.log-Datei erneut. Das ist einfach und robust, kann aber Ausgaben überschreiben und doppelte nachgelagerte Erfassungen erzeugen, wenn dein Collector nicht dedupliziert. - Multi-DC-Konsolidierung:
-ComputerName $env:COMPUTERNAMEist enthalten, damit konsolidierte Datensätze nachvollziehbar bleiben. Beachte, dass-ComputerNamenur die Ausgabe beschriftet — es stellt keine Remote-Verbindung her. - Netzwerkfreigaben: Convert-DNSDebugLogFile kann Quellprotokolle von SMB/UNC-Pfaden lesen, aber lokale Konvertierung und Versand der komprimierten Ergebnisse ist das bessere Muster für große Rohprotokolle. Wenn du einen UNC-Pfad verwendest, denke daran, dass eine Aufgabe, die als
SYSTEMläuft, sich im Netzwerk als Computerkonto authentifiziert und dort Freigabe- sowie NTFS-Rechte benötigt. - Datumsformat:
-OutputCulture sv-SEwird bewusst verwendet, damit Zeitstempel als2026-01-20 23:00:16geschrieben werden. Dieses Format wird von SQL Server, Power BI und den meisten Importwerkzeugen ohne Hinweis gelesen, unabhängig von der Gebietsschema-Einstellung des DC, der das Protokoll erzeugt hat. - Validierung: Die Kopfzeilenvalidierung bleibt aktiviert, da die Aufgabe
-SkipHeaderValidationnicht verwendet (empfohlen).
Validieren und anpassen (mit dem ZIP)
Nutze das ZIP-Archiv als Referenzimplementierung und passe dann folgende Aspekte an deine Umgebung an:
- Zielbereich: welche DCs / OUs die Richtlinie erhalten
- Ausführungsidentität: bestätige, dass beide geplanten Aufgaben den vorgesehenen Anmeldetyp verwenden (
S4Uvs.InteractiveToken) oder normalisiere sie auf deinen Standard - Ordnererstellung: entscheide, ob
C:\Administration\ScriptsundC:\Administration\Logs\DNSServeranderswo vorab bereitgestellt werden oder durch zusätzliche GPP-Elemente erstellt werden sollen - Pfade: bestätige, dass
C:\Administration\ScriptsundC:\Administration\Logs\DNSServerdeinen Standards entsprechen - Aufbewahrung: entscheide, ob Rohprotokolle behalten werden und wie lange (besonders bei aktivierter Bereinigungsoption)
- Erfassung: bestätige, wo CSV/ZIP-Ausgaben geschrieben und wie sie zentral gesammelt werden
Wenn du die genaue GPO-Konfiguration validieren möchtest, ohne sie zu importieren, sind die maßgeblichen Quellen in diesem Repo:
- manifest.xml für Backup-Metadaten
- gpreport.xml für den menschenlesbaren Vollbericht
- Files.xml für die Datei-Bereitstellung
- Set-DNSServerDebugLogging.ps1 für Skriptinhalt
- ScheduledTasks.xml für geplante Aufgaben