Drupal EOL-Erkennung mit Wazuh
Custom Decoder & Rules korrekt umsetzen (inkl. typischer Stolperfallen)
Einleitung
Viele Organisationen betreiben CMS-basierte Webanwendungen wie Drupal und stehen vor der Herausforderung, End-of-Life-Versionen (EOL) zuverlässig zu erkennen. Wazuh bietet dafür alle notwendigen Bausteine – Logsammlung, Decoder und Regeln – allerdings mit einigen syntaktischen und logischen Feinheiten.
Dieser Artikel zeigt anhand eines realen Community-Falls:
- wie Drupal-Versionen korrekt dekodiert werden
- warum Regeln trotz korrektem Decoder nicht feuern
- und wie man das Problem sauber und regelkonform löst
1. Ausgangssituation & Ziel
Ziel
Wazuh soll Alarm schlagen, wenn eine nicht unterstützte Drupal-Version auf einem Webserver erkannt wird.
Voraussetzungen
- Webserver loggt Drupal-Versionen (z. B. via Skript oder Health-Check)
- Wazuh Agent liest das Log korrekt ein
- Decoder extrahiert:
url
drupal_version(Major.Minor)
Beispiel-Log:
test1.com : 10.5.4
test2.com : 11.2
2. Custom Decoder – korrekt und bewusst reduziert
Da nur Major.Minor relevant sind (Patchlevel ignorieren), ist folgender Decoder sinnvoll:
<decoder name="drupal_version">
<prematch> : </prematch>
<regex type="pcre2">^(\S+)\s:\s([0-9]+\.[0-9]+)</regex>
<order>url,drupal_version</order>
</decoder>
Ergebnis im wazuh-logtest
Phase 2: Completed decoding.
name: 'drupal_version'
url: 'test1.com'
drupal_version: '10.5'
📌 Wichtig: Decoder funktionieren korrekt – das Problem liegt nicht hier.
3. Der erste Fehler: Regel ohne Kontext
Der ursprüngliche Regelversuch:
<rule id="100051" level="10">
<field name="drupal_version" negate="yes">^(10\.5|11\.2)$</field>
</rule>
Typischer Fehler
ERROR: (5107): Syntax error on tag 'drupal_version'
Ursachen
- Kein Bezug zum Decoder
- Regel wird isoliert ausgeführt
- Wazuh weiß nicht, wann diese Regel geprüft werden soll
📌 In Wazuh gilt:
Regeln müssen immer an einen Decoder oder eine Parent-Rule gebunden sein
4. Die korrekte Lösung: Parent-Rule + Child-Rule
Schritt 1: Baseline-Regel (Decoder-Bindung)
<rule id="100052" level="0">
<decoded_as>drupal_version</decoded_as>
<description>Drupal Version erkannt</description>
</rule>
Diese Regel:
- verknüpft den Decoder mit dem Regelwerk
- erzeugt keinen Alert
- dient als Einstiegspunkt (
if_sid)
Schritt 2: EOL-Prüfung als Folge-Regel
<rule id="100053" level="3">
<if_sid>100052</if_sid>
<field name="drupal_version" negate="yes" type="pcre2">10.5|11.2</field>
<description>
Unsupported Drupal version detected on $(url): $(drupal_version)
</description>
</rule>
Funktionsweise
- Regel 100053 wird nur geprüft, wenn:
Decoder drupal_version aktiv war
Alert feuert, wenn:
- Version nicht
10.5oder11.2ist
5. Warum diese Struktur zwingend notwendig ist
Wazuh Regel-Pipeline (vereinfacht)
- Log → Decoder
- Decoder → Parent-Rule (
decoded_as) - Parent-Rule → Child-Rules (
if_sid) - Feldbedingungen → Alert
Ohne diesen Ablauf:
- wird die Regel nie evaluiert
- oder führt zu Syntax-Fehlern
6. Regex-Best Practices in Wazuh
<field>nutzt OSRegex oder PCRE2- Für Versionsvergleiche:
PCRE2 verwenden
Klammern, Punkte, Pipes bewusst einsetzen
📘 Offizielle Regex-Doku:
- Wazuh Regex Syntaxhttps://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/regex.html
7. Drupal EOL – externe Referenzen
Damit die Regel fachlich korrekt bleibt, sollte sie sich an offiziellen Drupal-Lifecycle-Informationen orientieren:
- Drupal Release & EOL Policyhttps://www.drupal.org/about/core/policies/core-release-cycle
- Aktuelle Drupal Versionenhttps://www.drupal.org/project/drupal
➡️ Empfehlung: EOL-Versionen regelmäßig prüfen und Regex anpassen.
8. Zusammenfassung
Was war das Problem?
- Regel war syntaktisch korrekt, aber logisch nicht eingebunden
Was ist die Lösung?
- Trennung in:
Decoder-Rule
- Prüf-Rule mit
if_sid
Best Practice
- Decoder ≠ Regel
- Eine Regel = eine Aufgabe
- Kontext immer explizit herstellen
9. Weiterführende Wazuh-Quellen
- Custom Ruleshttps://documentation.wazuh.com/current/user-manual/ruleset/rules/custom.html
- Rules Syntaxhttps://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/rules.html
- Decoder Syntaxhttps://documentation.wazuh.com/current/user-manual/ruleset/ruleset-xml-syntax/decoders.html
- wazuh-logtesthttps://documentation.wazuh.com/current/user-manual/reference/tools/wazuh-logtest.html
Fazit
Mit der richtigen Regelstruktur eignet sich Wazuh hervorragend für Compliance-Checks, EOL-Überwachung und Application Security Monitoring – auch jenseits klassischer System-Logs.
🛡️ Decoder liefern Kontext – Regeln liefern Bedeutung.
https://wazuh.slack.com/archives/C07CCCCGHHP/p1766134461965409
Quelle
Dieser Artikel stammt aus dem Wazuh-Blog von m.a.x. it (veröffentlicht am 15. März 2026).
Unterstützung von m.a.x. it
Bei Einführung, Betrieb und Feintuning von Wazuh (SIEM) unterstützt Sie m.a.x. it mit SIEM-Services auf Open-Source-Basis.
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
