Zum Inhalt springen
10 · Überwachung & ProtokollierungTeil 3 von 4Fortgeschritten

Windows Event Forwarding im großen Maßstab

Windows Event Forwarding, das trägt: Collectors, quellinitiierte Abonnements, XPath-Abfragen, Zustellungsoptimierung, Zugriff aufs Sicherheitsprotokoll und Zustandsprüfungen.

Florian Amette7 Min. Lesezeit

Die Baseline für Überwachungsrichtlinie und Sysmon endet mit vier Zeilen zur Weiterleitung: wecutil qc ausführen, ein Abonnement anlegen, Quellen auf den Collector verweisen, Log-Zugriff gewähren. Für ein Labor genügt das. In der Produktion scheitert WEF leiser: ein Abonnement, das zehnmal mehr abruft als geplant, ein Collector, der nicht hinterherkommt, Domänencontroller, die ihr Sicherheitsprotokoll nie weiterleiten. Dieser Leitfaden behandelt Design, Konfiguration und Betrieb von Windows Event Forwarding für Tausende Hosts.

Die Architektur in einem Absatz

Quellen (jeder Windows-Host) betreiben einen Client zur Ereignisprotokoll-Weiterleitung, der den WinRM-Dienst nutzt. Collectors betreiben den Dienst Windows Event Collector (Wecsvc) und halten Abonnements: XPath-Abfragen plus Zustellungseinstellungen. Bei quellinitiierten Abonnements erfahren die Quellen die Collector-Adresse per Gruppenrichtlinie, holen sich die für sie bestimmten Abonnements und senden passende Ereignisse per WinRM. Gesammelte Ereignisse landen in ForwardedEvents (oder einem benutzerdefinierten Log), wo ein SIEM-Agent sie abholt. Quellinitiiert ist das richtige Modell im großen Maßstab; collectorinitiierte Abonnements erfordern, dass jede Quelle einzeln aufgeführt wird.

Schritt 1: die Abonnements entwerfen

Gruppieren Sie Ereignisse nach Zweck, nicht nach Log. Ein typischer Satz:

AbonnementZieleInhalt
Baseline-SecurityAlle ComputerAnmeldungen, Kontoänderungen, Prozesserstellung, Erstellung von Diensten und Aufgaben, Löschen von Logs
DC-SecurityDomänencontrollerKerberos, Verzeichnisänderungen, Replikationsrechte, Gruppenänderungen
PowerShellAlle Computer4103, 4104, 400
SysmonHosts mit SysmonSysmon Operational, bereits an der Quelle optimiert
DefenderAlle Computer1116, 1117, 5001, 5007

Kleine, fokussierte Abonnements lassen sich leichter analysieren und dimensionieren, und eine fehlerhafte Abfrage legt nur eines davon lahm. Entscheiden Sie anhand der Referenz der Sicherheitsereignis-IDs, was in welches gehört.

ForwardedEvents oder benutzerdefinierte Logs

Standardmäßig schreibt jedes Abonnement nach ForwardedEvents, ein Log für alles. Das ist einfach, doch ein lautes Abonnement kann wichtige Ereignisse verdrängen, und der SIEM-Agent muss ein sehr großes Log lesen. Die Alternative sind benutzerdefinierte Ereigniskanäle: eine kleine, auf dem Collector registrierte Manifest-DLL, die separate Logs anlegt, etwa eines für Security, eines für Sysmon und eines für PowerShell, jedes mit eigener Größe. Community-Projekte veröffentlichen fertige WEF-Kanalmanifeste und Abonnementsätze, die Sie anpassen können. Benutzerdefinierte Kanäle bedeuten einen zusätzlichen Build- und Verteilungsschritt; beginnen Sie daher mit ForwardedEvents und wechseln Sie, sobald Volumen oder Aufbewahrungsanforderungen es verlangen.

Schritt 2: den Collector aufbauen

Verwenden Sie dedizierte Collectors (keine Domänencontroller), die vor allem auf Datenträger-I/O ausgelegt sind. Auf jedem Collector:

PowerShell
wecutil qc /q                                        # Wecsvc konfigurieren (automatischer Start, verzögert)
wevtutil sl ForwardedEvents /ms:4294967296           # 4 GB Puffer

Erlauben Sie in der Host-Firewall eingehend TCP 5985 aus den Quellsubnetzen. Der Collector ist ein hochwertiger Log-Host; verwalten Sie ihn aus Ihrem Admin-Tier und wenden Sie auf ihn wie auf jeden anderen Server die WinRM-Härtung an.

Bei größerem Umfang sollten Sie dem Collector-Dienst mit sc.exe config Wecsvc type= own einen eigenen Prozess geben, damit er sich keinen Diensthost mit WinRM teilt. Microsoft dokumentiert die zugehörigen Änderungen an den HTTP-URL-Reservierungen für dieses Setup; folgen Sie den aktuellen Empfehlungen zur Collector-Skalierbarkeit, statt Schnipsel aus Foren zu kopieren.

Schritt 3: das Abonnement-XML schreiben

Legen Sie Abonnements aus Dateien an, damit sie in der Versionsverwaltung liegen. Ein quellinitiiertes Abonnement für Domänencomputer:

XML
<Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
  <SubscriptionId>Baseline-Security</SubscriptionId>
  <SubscriptionType>SourceInitiated</SubscriptionType>
  <Description>Core security events from all domain computers</Description>
  <Enabled>true</Enabled>
  <Uri>http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog</Uri>
  <ConfigurationMode>Custom</ConfigurationMode>
  <Delivery Mode="Push">
    <Batching>
      <MaxItems>50</MaxItems>
      <MaxLatencyTime>60000</MaxLatencyTime>
    </Batching>
    <PushSettings>
      <Heartbeat Interval="3600000"/>
    </PushSettings>
  </Delivery>
  <Query><![CDATA[
    <QueryList>
      <Query Id="0" Path="Security">
        <Select Path="Security">*[System[(EventID=4624 or EventID=4625 or EventID=4648 or EventID=4672)]]</Select>
        <Select Path="Security">*[System[(EventID=4688 or EventID=4697 or EventID=4698 or EventID=4720 or EventID=4732)]]</Select>
        <Select Path="Security">*[System[(EventID=1102)]]</Select>
        <Select Path="System">*[System[(EventID=7045 or EventID=104)]]</Select>
      </Query>
    </QueryList>
  ]]></Query>
  <ReadExistingEvents>false</ReadExistingEvents>
  <TransportName>HTTP</TransportName>
  <ContentFormat>RenderedText</ContentFormat>
  <Locale Language="en-US"/>
  <LogFile>ForwardedEvents</LogFile>
  <AllowedSourceNonDomainComputers></AllowedSourceNonDomainComputers>
  <AllowedSourceDomainComputers>O:NSG:BAD:P(A;;GA;;;DC)S:</AllowedSourceDomainComputers>
</Subscription>
PowerShell
wecutil cs .\Baseline-Security.xml
wecutil gs Baseline-Security          # das Abonnement so anzeigen, wie der Collector es sieht

Die wichtigsten Entscheidungen in dieser Datei:

  • AllowedSourceDomainComputers ist eine SDDL-Zeichenfolge. DC steht für Domain Computers. Für das Abonnement DC-Security berechtigen Sie stattdessen die Gruppe der Domänencontroller oder die SID einer eigenen AD-Gruppe, damit jedes Abonnement nur die dafür vorgesehenen Hosts erreicht.
  • ReadExistingEvents false bedeutet, dass Quellen nur neue Ereignisse weiterleiten. Mit true bei einem neuen Abonnement lädt jede Quelle ihren gesamten passenden Verlauf auf einmal hoch, was einen Collector in die Knie zwingen kann.
  • ContentFormat RenderedText enthält die gerenderte Nachricht, die viele SIEM-Parser erwarten; Events ist kleiner, weil nur das rohe XML gesendet wird.
  • Zustellung. Der Modus Custom mit einer MaxLatencyTime von 60 Sekunden ist ein guter Standard für Sicherheitsereignisse. Die integrierten Modi sind Normal (gebündelt, bis zu 15 Minuten), MinLatency (etwa 30 Sekunden) und MinBandwidth (Stunden, für langsame Verbindungen).
  • Abfragegröße. Sehr lange XPath-Ausdrücke werden unter Umständen nicht angewendet. Verteilen Sie die IDs wie gezeigt auf mehrere Select-Elemente statt auf eine riesige or-Kette.

Schritt 4: die Quellen per GPO konfigurieren

Auf den Quellen unter Computer Configuration > Policies > Administrative Templates > Windows Components > Event Forwarding:

  • Configure target Subscription Manager (Ziel-Abonnement-Manager konfigurieren) = Enabled, mit Server=http://wec01.corp.example:5985/wsman/SubscriptionManager/WEC,Refresh=60. Verwenden Sie den FQDN des Collectors, damit Kerberos funktioniert. Sie können mehr als einen Server angeben; jede Quelle leitet dann an jeden aufgeführten Collector weiter, was Redundanz bringt, aber das Volumen verdoppelt.

Stellen Sie dann sicher, dass die Quellen die Logs tatsächlich lesen und senden können:

  • WinRM-Dienst läuft. Der Weiterleitungsclient benötigt ihn, auch auf Arbeitsplätzen ohne WinRM-Listener. Setzen Sie Windows Remote Management (WS-Management) unter Security Settings > System Services auf Automatisch, falls Ihre Baseline ihn deaktiviert.
  • Zugriff auf das Sicherheitsprotokoll. Der Forwarder läuft als Network Service, das das Sicherheitsprotokoll standardmäßig nicht lesen darf. Nehmen Sie entweder NT AUTHORITY\NETWORK SERVICE per Gruppenrichtlinie in die lokale Gruppe Event Log Readers auf, oder hängen Sie (A;;0x1;;;NS) mit Windows Components > Event Log Service > Security > Configure log access an die Zugriffszeichenfolge des Security-Kanals an. Domänencontroller haben keine lokalen Gruppen; verwenden Sie dort die Log-Zugriffsmethode oder die integrierte Domänengruppe Event Log Readers.

Verteilen Sie die Quellen per GPO-Bereich auf Collectors, zum Beispiel ein GPO pro OU oder Standort, das jeweils auf einen anderen Collector zeigt. WEF hat keinen integrierten Lastenausgleich.

Was kaputtgeht

  • Fehlende Sicherheitsereignisse von DCs liegen fast immer am Schritt zum Log-Zugriff. Prüfen Sie die Zugriffszeichenfolge des Kanals mit wevtutil gl Security.
  • Falscher Collector-Name (Kurzname oder IP) bedeutet kein Kerberos, sodass sich die Quellen nicht authentifizieren können.
  • Der Laufzeitzustand der Abonnements in der Registrierung wächst mit jeder Quelle; sehr große Einzelabonnements verlangsamen den Start des Collectors. Mehr und kleinere Abonnements sowie mehr Collectors lösen das.
  • Der Datenträger des Collectors läuft voll, wenn der SIEM-Agent nicht mehr liest. ForwardedEvents ist ein Puffer, kein Archiv.
  • Firewall-Änderungen auf Collectors oder ein deaktivierter WinRM-Dienst auf Quellen beenden die Weiterleitung stillschweigend.

Schritt 5: dimensionieren und überwachen

Dimensionieren Sie nach gemessenen Ereignissen pro Sekunde, nicht nach Anzahl der Hosts. Pilotieren Sie jedes Abonnement auf einer repräsentativen Gruppe und lesen Sie die Rate dann auf dem Collector und in Ihrem SIEM ab. Halten Sie genug Reserve, damit der Collector Nachholspitzen nach einem Ausfall abfangen kann, wenn jede Quelle ihren Rückstand sendet.

Zustand der Abonnements vom Collector aus prüfen:

PowerShell
wecutil gr Baseline-Security    # Laufzeitstatus: jede Quelle, Zustand, letzter Heartbeat

Quellen im inaktiven Zustand oder mit einem letzten Heartbeat, der älter als das Heartbeat-Intervall ist, erfordern Aufmerksamkeit. Auf einer Quelle erscheinen Fehler unter Applications and Services Logs > Microsoft > Windows > Eventlog-ForwardingPlugin > Operational, und die Konnektivität lässt sich mit Test-WSMan wec01.corp.example testen.

Richten Sie im SIEM drei Alarme ein: ein Collector, der nichts mehr sendet, ein Abonnement, dessen Quellenanzahl stark sinkt, und kritische Hosts (Domänencontroller, Tier-0-Server), die in der letzten Stunde kein Ereignis weitergeleitet haben.

Schritt 6: Ereignisse ins SIEM bringen

Betreiben Sie den Agent Ihres SIEM nur auf den Collectors. Für Microsoft Sentinel kann der Azure Monitor Agent ForwardedEvents über den Datenconnector Windows Forwarded Events erfassen. Bei anderen SIEMs richten Sie deren Windows-Agent auf das Log ForwardedEvents (oder Ihre benutzerdefinierten Logs) aus. Die Protokollierung von Firewallregeln aus Firewall-Protokollierung und -Überwachung und Sysmon aus Sysmon verteilen und optimieren können über dieselbe Pipeline laufen.

Überprüfung

  1. Auf einer Quelle: gpresult /r /scope computer zeigt das Event-Forwarding-GPO; wevtutil gl Security zeigt den Zugriff für Network Service.
  2. Ein bekanntes Ereignis erzeugen, zum Beispiel eine fehlgeschlagene Anmeldung mit falschem Kennwort (4625).
  3. Auf dem Collector: Get-WinEvent -LogName ForwardedEvents -MaxEvents 20 zeigt es innerhalb der konfigurierten Latenz.
  4. Im SIEM: Das Ereignis ist mit dem richtigen Hostnamen und Zeitstempel auffindbar.
  5. wecutil gr listet die erwartete Anzahl aktiver Quellen.

Mehr zum gesamten Logging-Stack auf der Themenseite Überwachung und Protokollierung.

Checkliste

  • Abonnements nach Zweck entworfen und als XML in der Versionsverwaltung abgelegt
  • Dedizierte, gehärtete Collectors mit ForwardedEvents als Puffer dimensioniert
  • Quellinitiierte Abonnements per AllowedSourceDomainComputers eingegrenzt
  • ReadExistingEvents bei neuen Abonnements auf false; benutzerdefinierte Zustellungslatenz gesetzt
  • GPO für den Target Subscription Manager verwendet den FQDN des Collectors
  • WinRM-Dienst läuft auf den Quellen; Sicherheitsprotokoll für Network Service lesbar, auch auf DCs
  • Collector-Last in Ereignissen pro Sekunde gemessen, mit Reserve für Rückstände
  • Alarme für Abonnementzustand, Quellenanzahl und stille kritische Hosts eingerichtet

Häufige Fragen

Ist der Datenverkehr von Windows Event Forwarding verschlüsselt?

Ja. In einer Domäne authentifiziert sich die quellinitiierte Weiterleitung über HTTP auf Port 5985 per Kerberos und verschlüsselt die Nutzdaten mit dem Sitzungsschlüssel, wie anderer WinRM-Verkehr auch. Für Quellen außerhalb der Domäne verwenden Sie HTTPS mit Client- und Serverzertifikaten. Lassen Sie „Allow unencrypted traffic“ auf Quellen und Collectors deaktiviert, damit sich der Schutz nicht abschalten lässt.

Wie viele Quellen verkraftet ein Collector?

Das hängt viel stärker von der Ereignisrate ab als von der Anzahl der Hosts. Ein Collector, der nur wenige gezielte Ereignis-IDs von Arbeitsplätzen empfängt, bedient viele Tausend Quellen, einer mit vollständigen Sicherheitsprotokollen von Domänencontrollern deutlich weniger. Microsofts Faustregel für einen stabilen Collector auf Standardhardware liegt bei durchschnittlich etwa 3.000 Ereignissen pro Sekunde über alle Abonnements. Messen Sie die Ereignisse pro Sekunde in einem Pilot und lassen Sie Reserve unterhalb dieses Werts.

Brauche ich WEF noch, wenn ich einen SIEM-Agent habe?

Nicht unbedingt. Wenn ein Agent dieselben Ereignisse bereits mit geringer Latenz von jedem Host erfasst, bringt WEF wenig zusätzlich. WEF lohnt sich dort, wo Sie Agenten nicht überall verteilen können oder wollen: Es ist in Windows integriert, braucht keine Lizenz und lässt einige wenige Collector-Server den SIEM-Agent tragen statt jedes Endgerät.

Windows Event Forwarding im großen Maßstab

Verwandte Leitfäden

Überwachung & Protokollierung

Sysmon im großen Maßstab verteilen und optimieren

Eine Sysmon-Konfiguration wählen, Rauschen ohne blinde Flecken reduzieren, Updates sicher auf Tausende Hosts ausrollen und Sysmon selbst überwachen.

Fortgeschritten
Überwachung & Protokollierung

Windows-Sicherheitsereignis-IDs, die wirklich zählen

Praxisreferenz der Windows-Ereignis-IDs, die sich zu erfassen und alarmieren lohnen: Anmeldungen, Fehlercodes, Kerberos, Kontoänderungen, Persistenz, Manipulation.

Grundlagen