<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=Drupal_EOL-Erkennung_mit_Wazuh</id>
	<title>Drupal EOL-Erkennung mit Wazuh - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=Drupal_EOL-Erkennung_mit_Wazuh"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=Drupal_EOL-Erkennung_mit_Wazuh&amp;action=history"/>
	<updated>2026-09-17T06:16:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=Drupal_EOL-Erkennung_mit_Wazuh&amp;diff=2879&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Import aus Wazuh-Blog (m.a.x. it, eigenes Copyright)</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=Drupal_EOL-Erkennung_mit_Wazuh&amp;diff=2879&amp;oldid=prev"/>
		<updated>2026-09-15T00:00:00Z</updated>

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