Zum Inhalt springen

Windows Event Forwarding für Domänencontroller

Eine WEF-Pipeline für Domänencontroller aufbauen: quellinitiierte Abonnements, GPO, Protokollzugriff, XPath-Abfragen, Collector-Dimensionierung und Integritätsprüfungen.

Florian Amette7 Min. Lesezeit

Das Security-Protokoll eines Domänencontrollers ist ein Ringpuffer, der sich selbst überschreibt – auf einem ausgelasteten DC oft innerhalb von Stunden. Ein Angreifer mit Domain-Admin-Rechten kann es außerdem löschen. Jede Erkennung, die davon abhängt, die Protokolle auf dem DC selbst zu lesen, ist fragil. Sie hängt davon ab, dass das Ereignis überlebt, dass der DC erreichbar ist und dass niemand wevtutil cl Security ausgeführt hat. Windows Event Forwarding (WEF) ist in Windows integriert und überträgt Ereignisse von jedem DC innerhalb von Sekunden an einen zentralen Windows Event Collector (WEC). Von dort übernimmt sie ein SIEM-Agent.

Dieser Leitfaden baut eine produktionsreife WEF-Pipeline für Domänencontroller mit quellinitiierten Abonnements auf: Collector, GPO, Zugriff auf das Security-Protokoll, Abonnementabfrage, Dimensionierung und Integritätsüberwachung. Die Überwachungsrichtlinie, die festlegt, welche Ereignisse überhaupt entstehen, behandelt der Grundlagenleitfaden zu Auditing und Erkennung. Die Referenz der Ereignis-IDs erklärt, welche Sie behalten sollten.

Architektur

  • Quellen. Jeder DC sowie AD-CS-, AD-FS- und Entra-Connect-Server. Die integrierte Weiterleitungskomponente läuft im WinRM-Dienst als Network Service und sendet Ereignisse über WS-Management.
  • Collector. Ein dedizierter Windows Server mit dem Dienst Windows Event Collector (Wecsvc), der in das Protokoll ForwardedEvents oder in benutzerdefinierte Kanäle empfängt.
  • Nachgelagert. Ein SIEM-Agent oder der Azure Monitor Agent auf dem Collector leitet die Ereignisse weiter. Der Collector ist ein Puffer, nicht der Langzeitspeicher.

Der Collector hält eine Kopie jedes Sicherheitsereignisses aller DCs; behandeln Sie ihn daher als sensibles System. Verwalten Sie ihn aus demselben Tier wie die DCs oder aus einem dedizierten Sicherheits-Tier, das DC-Admins nicht administrieren können. Es geht darum, dass ein kompromittierter Domain Admin die Beweise nicht unbemerkt löschen kann. Nehmen Sie ihn in jedem Fall in Ihr Tier-0-Inventar auf.

Messen: Ereignisvolumen vor dem Aufbau

Dimensionieren Sie anhand realer Zahlen. Messen Sie auf zwei oder drei repräsentativen DCs, wie schnell das Security-Protokoll umläuft:

PowerShell
$log = Get-WinEvent -ListLog Security
$first = Get-WinEvent -LogName Security -MaxEvents 1 -Oldest
$last  = Get-WinEvent -LogName Security -MaxEvents 1
$span  = ($last.TimeCreated - $first.TimeCreated).TotalSeconds
[pscustomobject]@{
  DC              = $env:COMPUTERNAME
  RecordCount     = $log.RecordCount
  HoursCovered    = [math]::Round($span / 3600, 1)
  AvgEventsPerSec = [math]::Round($log.RecordCount / $span, 1)
  LogSizeMB       = [math]::Round($log.FileSize / 1MB)
}

Messen Sie erneut während der Anmeldespitze am Montagmorgen. Gehen Sie für die Planung von etwa 1 KB pro weitergeleitetem Ereignis aus, wenn ContentFormat auf Events gesetzt ist, und multiplizieren Sie mit den Spitzenwerten an Ereignissen pro Sekunde über alle DCs. Daraus ergibt sich die Aufnahmerate für den Collector-Datenträger und die SIEM-Lizenz.

Den Collector aufbauen

Auf einem dedizierten Mitgliedsserver mit Windows Server 2022 oder 2025:

PowerShell
# WinRM-Listener (auf aktuellen Windows Servern standardmäßig aktiviert), dann Wecsvc mit verzögertem automatischem Start
winrm quickconfig -q
wecutil qc /q

# Das Protokoll ForwardedEvents vergrößern und auf ein dediziertes Volume verschieben
wevtutil sl ForwardedEvents /ms:2147483648 /lfn:"E:\Logs\ForwardedEvents.evtx"
Get-WinEvent -ListLog ForwardedEvents | Select-Object LogName, MaximumSizeInBytes, LogFilePath

Legen Sie das Protokoll auf ein schnelles, dediziertes Volume. Prüfen Sie bei Collectoren unter Windows Server 2016 und 2019 das von Microsoft dokumentierte Problem, bei dem sich Quellen nicht verbinden können, weil WinRM und Wecsvc einen Diensthost mit der falschen HTTP-URL-ACL teilen. Wenden Sie die dokumentierte Korrektur an, bevor Sie irgendetwas anderes untersuchen.

Die Quellen per GPO konfigurieren

Erstellen Sie eine GPO, die mit der OU Domain Controllers verknüpft ist (und mit den OUs weiterer Tier-0-Server, von denen Sie weiterleiten).

  1. Quellen auf den Collector verweisen. Computer Configuration > Policies > Administrative Templates > Windows Components > Event Forwarding > Configure target Subscription Manager: Enabled, mit dem Wert:

    Server=http://wec01.corp.example.com:5985/wsman/SubscriptionManager/WEC,Refresh=60

  2. Sicherstellen, dass WinRM läuft. Computer Configuration > Policies > Windows Settings > Security Settings > System Services > Windows Remote Management (WS-Management): Automatic.

  3. Der Weiterleitungskomponente das Lesen des Security-Protokolls erlauben. Die Weiterleitungskomponente läuft als Network Service, das das Security-Protokoll standardmäßig nicht lesen kann. Nehmen Sie entweder NT AUTHORITY\NETWORK SERVICE in die integrierte Gruppe Event Log Readers auf, oder erweitern Sie die Kanal-ACL über Computer Configuration > Policies > Administrative Templates > Windows Components > Event Log Service > Security > Configure log access. Bei der zweiten Option hängen Sie (A;;0x1;;;NS) an die vorhandene SDDL an, die Sie mit wevtutil gl Security auslesen.

Auf DCs ist Event Log Readers eine domänenweite integrierte Gruppe. Eine einzige Mitgliedschaftsänderung, einmal auf einem beliebigen DC ausgeführt, deckt daher alle DCs ab:

PowerShell
net localgroup "Event Log Readers" "NT AUTHORITY\NETWORK SERVICE" /add
  1. Den Datenverkehr zulassen. DCs benötigen ausgehend TCP 5985 zum Collector, und der Collector benötigt eingehend 5985 ausschließlich von den DCs. Bilden Sie dies in Ihrer DC-Firewallrichtlinie ab.

Starten Sie nach gpupdate WinRM auf jedem DC neu oder starten Sie den DC neu, damit die Weiterleitungskomponente die neue Mitgliedschaft in Event Log Readers übernimmt.

Das Abonnement erstellen

Erstellen Sie das Abonnement als XML, damit es versioniert und reproduzierbar ist. Die SDDL in AllowedSourceDomainComputers erteilt der Gruppe Domain Controllers (DD) die Berechtigung, es zu verwenden:

XML
<Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
  <SubscriptionId>DC-Security</SubscriptionId>
  <SubscriptionType>SourceInitiated</SubscriptionType>
  <Description>Security events from domain controllers</Description>
  <Enabled>true</Enabled>
  <Uri>http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog</Uri>
  <ConfigurationMode>Custom</ConfigurationMode>
  <Delivery Mode="Push">
    <Batching>
      <MaxItems>500</MaxItems>
      <MaxLatencyTime>30000</MaxLatencyTime>
    </Batching>
    <PushSettings>
      <Heartbeat Interval="900000"/>
    </PushSettings>
  </Delivery>
  <Query><![CDATA[
    <QueryList>
      <Query Id="0">
        <Select Path="Security">*[System[(EventID=1102 or EventID=4719 or EventID=4706 or EventID=4707 or EventID=4716)]]</Select>
        <Select Path="Security">*[System[(EventID&gt;=4720 and EventID&lt;=4767)]]</Select>
        <Select Path="Security">*[System[(EventID=4768 or EventID=4769 or EventID=4771 or EventID=4776)]]</Select>
        <Select Path="Security">*[System[(EventID=4662 or EventID=5136 or EventID=5137 or EventID=5138 or EventID=5139 or EventID=5141)]]</Select>
        <Select Path="Security">*[System[(EventID=4624 or EventID=4625 or EventID=4648 or EventID=4672 or EventID=4697)]]</Select>
        <Select Path="System">*[System[(EventID=7045)]]</Select>
        <Select Path="Directory Service">*[System[(EventID=2887 or EventID=2889 or EventID=2089)]]</Select>
      </Query>
    </QueryList>
  ]]></Query>
  <ReadExistingEvents>false</ReadExistingEvents>
  <TransportName>HTTP</TransportName>
  <ContentFormat>Events</ContentFormat>
  <Locale Language="en-US"/>
  <LogFile>ForwardedEvents</LogFile>
  <AllowedSourceNonDomainComputers></AllowedSourceNonDomainComputers>
  <AllowedSourceDomainComputers>O:NSG:BAD:P(A;;GA;;;DD)</AllowedSourceDomainComputers>
</Subscription>

Anmerkungen zu den gewählten Einstellungen:

  • Benutzerdefinierte Zustellung (Custom) mit einer maximalen Latenz von 30 Sekunden liegt nah am integrierten Modus MinLatency, erlaubt aber, die Stapelgröße festzulegen. Der Modus Normal kann Ereignisse um bis zu 15 Minuten verzögern – zu langsam für Alarmierung.
  • ContentFormat Events verzichtet auf den gerenderten Meldungstext und halbiert den Speicherbedarf ungefähr. Ihr SIEM rendert die Meldung aus den Ereignisdaten.
  • Mehrere Select-Elemente statt einer langen or-Kette. Lange XPath-Ausdrücke stoßen an Längenbegrenzungen für Abfragen und schlagen an der Quelle stillschweigend fehl.
  • ReadExistingEvents false verhindert, dass jeder DC beim Erstellen des Abonnements sein gesamtes Protokoll erneut sendet. Setzen Sie den Wert vorübergehend auf true, wenn Sie Daten nachladen müssen.

Legen Sie für AD-CS-Server (4886 bis 4900) ein separates Abonnement mit eigener SDDL oder Sicherheitsgruppe an, statt das DC-Abonnement zu erweitern.

PowerShell
wecutil cs C:\WEF\DC-Security.xml
wecutil gs DC-Security

Skalierung und Ausfallsicherheit

Ein einzelner Collector ist ein Single Point of Failure für Ihre Erkennung. Sobald das erste Abonnement funktioniert, härten Sie das Design:

  • Zwei Collectoren, ein Name. Verweisen Sie die GPO für den Subscription Manager auf einen DNS-Alias, oder tragen Sie zwei Server=-Einträge in die Richtlinie ein. Ein DNS-Alias schickt jede Quelle jeweils nur an einen Collector: Für ein Failover muss der Alias umgestellt werden, doppelte Aufnahme entsteht aber nicht. Die Richtlinie akzeptiert auch mehrere Werte, und jede Quelle leitet dann an jeden aufgeführten Collector weiter: Das bringt echte Redundanz, verdoppelt aber die Aufnahme; entscheiden Sie also, was wichtiger ist: Verfügbarkeit oder SIEM-Kosten.
  • Nach Volumen aufteilen, nicht nur nach Serverrolle. Wenn eine Handvoll DCs an Hub-Standorten die meisten Ereignisse erzeugt, geben Sie ihnen einen eigenen Collector. Ein Collector, der zurückfällt, zeigt wachsende Abstände zwischen TimeCreated und dem Zeitpunkt, an dem Ereignisse in ForwardedEvents ankommen.
  • Benutzerdefinierte Kanäle für Daten mit hohem Volumen. Alles in ForwardedEvents liegt in einer Datei. Sehr große Umgebungen bauen auf dem Collector benutzerdefinierte Ereigniskanäle (einen pro Abonnement), damit sich jeder separat dimensionieren und aufbewahren lässt und eine Flut von 4662-Ereignissen seltenere, wertvollere Ereignisse nicht verdrängen kann.
  • Erst weiterleiten, dann kürzen. Der Collector ist ein Puffer. Lassen Sie den SIEM-Agenten kontinuierlich daraus lesen und behalten Sie lokal nur wenige Tage. Fällt das SIEM aus, rettet Sie genau dieser Puffer – dimensionieren Sie ihn daher für Ihren längsten realistischen SIEM-Ausfall.
  • Den Collector selbst überwachen. Alarmieren Sie, wenn der Dienst Windows Event Collector stoppt, wenn der Speicherplatz auf dem Protokoll-Volume knapp wird und wenn das Protokoll ForwardedEvents seine maximale Größe erreicht.

Überprüfen

Bestätigen Sie auf dem Collector, dass jeder DC aktiv ist und aktuell liefert:

PowerShell
wecutil gr DC-Security          # Laufzeitstatus pro Quelle: Active, Heartbeat-Zeit, Fehler
Get-WinEvent -LogName ForwardedEvents -MaxEvents 20 |
  Select-Object TimeCreated, MachineName, Id

# DCs, die in der letzten Stunde nichts geliefert haben
$dcs = (Get-ADDomainController -Filter *).HostName
$seen = Get-WinEvent -FilterHashtable @{ LogName='ForwardedEvents'; StartTime=(Get-Date).AddHours(-1) } |
  Select-Object -ExpandProperty MachineName -Unique
$dcs | Where-Object { $_ -notin $seen }

Lesen Sie auf einem DC, der nicht liefert, das Protokoll Microsoft-Windows-Eventlog-ForwardingPlugin/Operational. Ereignis 100 bedeutet, dass das Abonnement erstellt wurde. Fehler wie 104 und 105 beschreiben Verbindungs- oder Zugriffsprobleme – meist eine Firewallregel, eine falsche URL des Subscription Managers oder fehlender Lesezugriff auf das Security-Protokoll.

PowerShell
Get-WinEvent -LogName 'Microsoft-Windows-Eventlog-ForwardingPlugin/Operational' -MaxEvents 10 |
  Format-List TimeCreated, Id, Message

Führen Sie anschließend einen durchgängigen Test durch. Fügen Sie ein Testkonto einer überwachten Gruppe hinzu, entfernen Sie es wieder und bestätigen Sie, dass 4728 und 4729 innerhalb Ihres Latenzziels im SIEM ankommen. Übernehmen Sie eine geplante Version der obigen Prüfung auf „stumme DCs“ in Ihr Monitoring. Ein DC, der nicht mehr weiterleitet, ist selbst ein Erkennungsmerkmal.

Was dadurch nicht mehr funktioniert

  • Konflikte mit der WinRM-Härtung. GPOs, die den WinRM-Dienst auf Servern deaktivieren, oder Firewall-Baselines, die ausgehend 5985 von DCs blockieren, stoppen die Weiterleitung stillschweigend. Die Weiterleitungskomponente versucht es erneut, ohne Fehler im System-Protokoll anzuzeigen.
  • Ein Collector-Ausfall bedeutet eine Lücke. Quellen führen ein Lesezeichen und senden erneut, sobald der Collector zurück ist – aber nur, solange die Ereignisse noch im lokalen Protokoll existieren. Halten Sie die Security-Protokolle der DCs groß genug (mehrere GB), um einen Collector-Ausfall von mindestens einem Tag abzudecken.
  • Last auf den DCs. Die Weiterleitungskomponente benötigt wenig CPU, aber ReadExistingEvents mit dem Wert true bei einem großen Protokoll erzeugt einen Last- und Netzwerkschub auf allen DCs gleichzeitig.
  • SIEM-Kosten. Das Weiterleiten von 4624 Typ 3 und 4662 von ausgelasteten DCs kann das Aufnahmevolumen dominieren. Filtern Sie am Collector oder im SIEM erst, nachdem Sie die Daten gesehen haben. Was Sie an der Quelle filtern, ist endgültig verloren.
  • Uhrzeit und Benennung. MachineName in weitergeleiteten Ereignissen ist der FQDN der Quelle. Umbenannte oder neu aufgebaute DCs erscheinen als neue Quellen; passen Sie daher alle Dashboards pro DC an.

Weiterführende Lektüre: Speisen Sie diese Pipeline mit Ködersignalen aus Honeytokens und Deception, schützen Sie den Collector als Teil von Tier 0 und privilegierter Zugriff, und sehen Sie sich den gesamten Bereich Auditing, Protokollierung & Erkennung an.

Häufige Fragen

Sollte ich für Domänencontroller quellinitiierte oder collectorinitiierte Abonnements verwenden?

Quellinitiierte. Die DCs erfahren über Gruppenrichtlinien vom Collector und senden ihm die Ereignisse, sodass der Collector keine administrativen Rechte auf den DCs benötigt und neue DCs automatisch einbezogen werden, sobald sie in die OU Domain Controllers heraufgestuft werden. Collectorinitiierte Abonnements erfordern, dass sich der Collector mit einem Konto, das das Security-Protokoll lesen kann, mit jeder Quelle verbindet – also eine Anmeldeinformation mit Rechten auf Tier 0, die auf dem Collector liegt.

Ist der Datenverkehr von Windows Event Forwarding über HTTP-Port 5985 verschlüsselt?

Ja, in einer Domäne. Mit Kerberos-Authentifizierung verschlüsselt WinRM die Nutzdaten der Nachricht auch über den HTTP-Transport, sodass Ereignisse auf der Leitung nicht lesbar sind. HTTPS auf Port 5986 mit Zertifikaten wird hauptsächlich für Quellen benötigt, die keine Domänenmitglieder sind, oder wenn eine Richtlinie TLS auf Transportebene verlangt. Behalten Sie Kerberos bei und aktivieren Sie weder Basic-Authentifizierung noch AllowUnencrypted auf dem WinRM-Client oder -Dienst, nur damit die Weiterleitung funktioniert.

Wie viele Domänencontroller kann ein einzelner Windows Event Collector verarbeiten?

Bei DCs ist selten die Anzahl der Quellen die Grenze, sondern die Ereignisrate. Ein Collector mit schnellen Datenträgern und ausreichend Arbeitsspeicher verarbeitet einige Tausend Ereignisse pro Sekunde, und ausgelastete DCs können in Spitzenzeiten jeweils Hunderte pro Sekunde erzeugen. Messen Sie Ihre Ereignisse pro Sekunde während der Anmeldespitze am Montagmorgen und dimensionieren Sie so, dass jeder Collector deutlich unter seiner Obergrenze läuft. Verteilen Sie DCs mit hohem Volumen auf zwei Collectoren und verwenden Sie mehrere Abonnements statt eines großen.

Windows Event Forwarding für Domänencontroller

Verwandte Leitfäden

Auditing, Protokollierung & Erkennung

AD-Auditing und Erkennung: Richtlinie und Ereignis-IDs

Erweiterte Überwachungsrichtlinie, SACLs und Windows Event Forwarding so konfigurieren, dass Sie Kerberoasting, DCSync und Rechteausweitung in AD tatsächlich sehen.

Grundlagen
Kerberos & Authentifizierung

Abwehr von Kerberoasting und AS-REP-Roasting

Kerberoasting- und AS-REP-Roasting-Angriffsfläche verkleinern: SPNs inventarisieren, veraltete entfernen, auf gMSA und AES umstellen, Honey-SPN und RC4-4769 erkennen.

Grundlagen