Einleitung
Komplexe Use Cases erfordern in Wazuh häufig mehr als eine einfache „Wenn Event X, dann Alert“-Logik. Typische Szenarien sind Multi-Stage-Angriffe, Brute-Force-Versuche mit Vorbedingungen oder Korrelation unterschiedlicher Logquellen innerhalb eines Zeitfensters. Eine häufige Frage lautet daher: Kann eine Wazuh-Regel mehrere Bedingungen enthalten – und wird der Alert nur ausgelöst, wenn alle erfüllt sind?
Die kurze Antwort: Ja, aber nicht beliebig kombiniert. Entscheidend ist das Verständnis der Unterschiede zwischen if_sid, if_matched_sid und if_matched_group sowie der internen Logik von Rule-Chaining und Frequency/Timeframe.
Ausgangslage / Problemstellung
Beispiel einer Regel mit zwei if_matched_sid-Einträgen:
<rule id="100005" level="12" frequency="2" timeframe="120">
<if_matched_sid>100003</if_matched_sid>
<if_matched_sid>100002</if_matched_sid>
<description>Rule test.</description>
<options>no_full_log</options>
</rule>
Ziel: Ein Alert soll nur erzeugt werden, wenn sowohl Regel 100003 als auch 100002 innerhalb von 120 Sekunden ausgelöst wurden – idealerweise mindestens zweimal.
Das Problem: Diese Konfiguration funktioniert so nicht wie erwartet.
Technische Analyse
1) Unterschied zwischen if_sid und if_matched_sid
Wazuh unterscheidet klar zwischen:
if_sid
Wird genutzt, um eine Regel direkt auf eine andere Regel „aufzusetzen“, die im selben Event-Matching-Prozess bereits gegriffen hat.
→ Klassisches Rule-Chaining innerhalb desselben Logs.if_matched_sid
Wird für zeitbasierte Korrelation verwendet.
→ Prüft, ob eine bestimmte Regel innerhalb eines definiertentimeframebereits ausgelöst wurde.
Wichtig:if_matched_sid ist auf eine einzelne SID pro Bedingung ausgelegt und wird im Kontext von Frequency/Timeframe ausgewertet. Mehrere if_matched_sid-Einträge führen nicht automatisch zu einer logischen UND-Verknüpfung im Sinne „beide müssen erfüllt sein“.
Die offizielle Syntax und das Verhalten sind in der Wazuh-Dokumentation beschrieben.
https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html#if-matched-group
2) Mehrere SIDs mit if_sid (kommagetrennt)
Im Gegensatz dazu erlaubt if_sid mehrere, kommagetrennte Rule-IDs:
<if_sid>100002,100003</if_sid>
Das bedeutet:
Die aktuelle Regel wird nur geprüft, wenn eine der genannten Regeln im selben Evaluierungsprozess gegriffen hat. Es handelt sich dabei um eine logische ODER-Verknüpfung im Vererbungsmechanismus.
Das funktioniert jedoch nur für unmittelbare Chaining-Szenarien – nicht für zeitbasierte Mehrfachkorrelation über unterschiedliche Events hinweg.
3) Warum mehrere if_matched_sid nicht wie erwartet funktionieren
if_matched_sid prüft:
- Wurde diese spezifische Regel innerhalb von
timeframeSekunden ausgelöst? - Wurde sie mindestens
frequencymal ausgelöst?
Die Engine verwaltet diese Korrelation pro SID.
Mehrere if_matched_sid-Blöcke werden nicht automatisch als „alle müssen erfüllt sein“ aggregiert. Das führt häufig zu unerwartetem Verhalten.
Lösung / Best Practices
Option 1: Rule-Chaining (empfohlen für AND-Logik)
Wenn Sie eine echte UND-Verknüpfung zweier Regeln über Zeit möchten, ist die sauberste Methode eine gestufte Korrelation.
Beispiel:
Schritt 1: Regel A (100002)
<rule id="100002" level="5">
...
</rule>
Schritt 2: Regel B (100003)
<rule id="100003" level="5">
...
</rule>
Schritt 3: Zwischenregel (A-Korrelation)
<rule id="100010" level="8" frequency="2" timeframe="120">
<if_matched_sid>100002</if_matched_sid>
<description>Rule A triggered twice</description>
</rule>
Schritt 4: Finale UND-Korrelation
<rule id="100005" level="12" timeframe="120">
<if_matched_sid>100003</if_matched_sid>
<if_sid>100010</if_sid>
<description>Rule A and Rule B correlation</description>
</rule>
Hier ist die Logik sauber getrennt:
- Regel 100010 kümmert sich um Frequency/Timeframe für A
- Regel 100005 kombiniert das Ergebnis mit Regel B
So entsteht eine stabile UND-Logik.
Option 2: if_matched_group für gruppenbasierte Korrelation
Wenn mehrere Regeln derselben Gruppe angehören, kann statt einzelner SIDs eine Gruppenprüfung genutzt werden:
<if_matched_group>authentication_failures</if_matched_group>
Das ist sinnvoll, wenn es nicht auf eine konkrete SID, sondern auf eine Kategorie ankommt.
Option 3: Gleicher Event – mehrere Bedingungen direkt matchen
Wenn beide Bedingungen im selben Logeintrag enthalten sind (z. B. IP + Port + Action), dann ist keine Korrelation notwendig.
Dann reicht eine einzelne Regel mit mehreren Match-Feldern:
<rule id="100020" level="10">
<field name="srcip">1.2.3.4</field>
<field name="dstport">22</field>
<field name="action">block</field>
</rule>
In diesem Fall gilt automatisch eine logische UND-Verknüpfung.
Typische Fehlerquellen
- Mehrere
if_matched_sidverwenden und eine UND-Logik erwarten frequencyohne korrektes Korrelationsdesign einsetzenno_full_logverwenden und später forensische Details vermissen- Gruppen und SIDs vermischen, ohne die Trigger-Reihenfolge zu verstehen
Lessons Learned / Best Practices
if_sid= Vererbung im selben Eventif_matched_sid= zeitbasierte Korrelation pro Regel-ID- Mehrere
if_matched_sidergeben nicht automatisch eine UND-Logik - Komplexe Korrelationen sollten gestuft aufgebaut werden
- Erst Einzelregeln stabil machen, dann korrelieren
- Logik immer mit gezielten Testlogs validieren (
wazuh-logtestreicht für reine Decoder/Single-Rule-Tests nicht für echte Timeframe-Korrelationen – hier sind reale Events notwendig)
Offizielle Referenz:
https://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html
Fazit
Ja, Wazuh unterstützt mehrere Bedingungen in Regeln – aber die Art der Bedingung bestimmt das Verhalten. Während if_sid für Rule-Chaining geeignet ist, dient if_matched_sid der zeitbasierten Korrelation einzelner Regeln. Wer eine echte UND-Verknüpfung über mehrere Events hinweg benötigt, sollte eine gestufte Korrelationsstruktur aufbauen, anstatt mehrere if_matched_sid-Einträge direkt zu kombinieren.
Saubere Korrelationsarchitektur verhindert Fehlalarme, erhöht die Transparenz und sorgt für nachvollziehbare Detection-Logik – besonders bei komplexen Angriffsmustern.
Mehr zu Wazuh …
https://wazuh.com/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program
Mehr zum Wazuh Ambassador Program …
https://wazuh.com/ambassadors-program/?utm_source=ambassadors&utm_medium=referral&utm_campaign=ambassadors+program
https://wazuh.slack.com/archives/C07CCCCGHHP/p1770728412000249