Wazug HAProxy WAF mit Coraza: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Der Seiteninhalt wurde durch einen anderen Text ersetzt: „*Wazuh-Anbindung der WAF (Coraza) Debian *Wazuh-Anbindung der WAF (Coraza) Rocky“)
Markierung: Ersetzt
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=Wazuh-Anbindung der WAF (Coraza)=
+
*[[Wazuh-Anbindung der WAF (Coraza) Debian]]
Die '''WAF''' (HAProxy + Coraza-SPOA) liefert die Abwehr-Telemetrie an das SIEM: welcher Angriff wurde von welcher Regel geblockt. Das ergänzt die VulnSite-Sicht — dort sieht Wazuh den Angriffsversuch im Apache-Log, hier sieht es die '''Abwehr davor'''.
+
*[[Wazuh-Anbindung der WAF (Coraza) Rocky]]
 
 
'''Hinweis:''' Wazuhs eingebaute ModSecurity-Regeln greifen nur auf das Apache-error.log klassischer ModSecurity. Coraza-SPOA schreibt ein eigenes Audit-Log und läuft nicht über Apache — daher binden wir das Coraza-JSON-Audit-Log ein und ergänzen einen eigenen Decoder samt Regel auf dem Manager.
 
 
 
==== Repository einrichten ====
 
;GPG-Schlüssel importieren
 
<syntaxhighlight lang="bash">
 
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
 
chmod 644 /usr/share/keyrings/wazuh.gpg
 
</syntaxhighlight>
 
;Repository hinzufügen
 
<syntaxhighlight lang="bash">
 
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" > /etc/apt/sources.list.d/wazuh.list
 
apt update
 
</syntaxhighlight>
 
 
 
==== Agent installieren ====
 
;Agent mit Manager-Adresse und Namen installieren
 
<syntaxhighlight lang="bash">
 
WAZUH_MANAGER="wazuh.dkbi.com" WAZUH_AGENT_NAME="waf" apt install -y wazuh-agent
 
</syntaxhighlight>
 
;Dienst aktivieren und starten
 
<syntaxhighlight lang="bash">
 
systemctl daemon-reload
 
systemctl enable --now wazuh-agent
 
</syntaxhighlight>
 
;Repository deaktivieren
 
<syntaxhighlight lang="bash">
 
sed -i "s/^deb /#deb /" /etc/apt/sources.list.d/wazuh.list
 
apt update
 
</syntaxhighlight>
 
 
 
==== Coraza-Audit-Log auf JSON umstellen ====
 
Das Audit-Log liegt standardmäßig im nativen ModSecurity-Format (Multiline mit Trennern wie ''--aaCuCNaqNi-A--''). Das kann Wazuh nicht sauber parsen. Auf JSON umstellen.
 
;In ''/etc/coraza-spoa/coraza-spoa.yaml'' ergänzen
 
<pre>
 
SecAuditLogFormat JSON
 
</pre>
 
;Daemon neu starten
 
* systemctl restart coraza-spoa
 
;Eine Zeile prüfen — muss jetzt mit { beginnen
 
* tail -1 /var/log/coraza/audit.log
 
 
 
==== Audit-Log anbinden ====
 
;In ''/var/ossec/etc/ossec.conf'' auf der WAF
 
<pre>
 
<localfile>
 
  <log_format>json</log_format>
 
  <location>/var/log/coraza/audit.log</location>
 
</localfile>
 
</pre>
 
 
 
==== Leserechte für den Agent ====
 
Der ''wazuh''-User muss das Audit-Log lesen können, sonst werden keine Ereignisse übertragen.
 
;Zugriff testen
 
* sudo -u wazuh cat /var/log/coraza/audit.log > /dev/null
 
;Bei "Permission denied" Gruppe/Rechte setzen
 
<syntaxhighlight lang="bash">
 
chmod 640 /var/log/coraza/audit.log
 
setfacl -m u:wazuh:rx /var/log/coraza/
 
setfacl -m u:wazuh:r /var/log/coraza/audit.log
 
</syntaxhighlight>
 
 
 
 
 
==== Decoder und Regel (auf dem Wazuh-Manager) ====
 
Coraza-JSON wird vom generischen JSON-Decoder zerlegt, aber von keiner eingebauten Regel klassifiziert. Beides ergänzen.
 
;Falls die Verzeichnisse fehlen (All-in-One), anlegen
 
* mkdir -p /var/ossec/etc/decoders /var/ossec/etc/rules
 
;Decoder in ''/var/ossec/etc/decoders/local-coraza_decoders.xml''
 
<pre>
 
<decoder name="coraza-audit">
 
  <prematch>^{"transaction":</prematch>
 
  <plugin_decoder>JSON_Decoder</plugin_decoder>
 
</decoder>
 
</pre>
 
;Regel in ''/var/ossec/etc/rules/local_rules.xml'' ergänzen
 
<pre>
 
<group name="coraza,waf,">
 
  <rule id="100100" level="0">
 
    <decoded_as>json</decoded_as>
 
    <field name="transaction.client_ip">\.+</field>
 
    <description>Coraza WAF Audit-Log.</description>
 
  </rule>
 
  <rule id="100101" level="10">
 
    <if_sid>100100</if_sid>
 
    <field name="transaction.is_interrupted">true</field>
 
    <description>Coraza WAF: Angriff geblockt auf $(transaction.request.uri) von $(transaction.client_ip).</description>
 
    <group>attack,web,</group>
 
  </rule>
 
</group>
 
</pre>
 
;Eigentümer und Rechte setzen
 
<syntaxhighlight lang="bash">
 
chown wazuh:wazuh /var/ossec/etc/decoders/local-coraza_decoders.xml /var/ossec/etc/rules/local_rules.xml
 
chmod 660 /var/ossec/etc/decoders/local-coraza_decoders.xml /var/ossec/etc/rules/local_rules.xml
 
</syntaxhighlight>
 
;Vor dem Neustart mit logtest prüfen — eine echte JSON-Audit-Zeile reinpasten
 
* /var/ossec/bin/wazuh-logtest
 
Erwartete Ausgabe: ''transaction.is_interrupted: 'true''' in Phase 2 und ''Rule id: '100101''' in Phase 3.
 
;Erst dann Manager neu starten
 
* systemctl restart wazuh-manager
 
 
 
==== Kontrolle ====
 
;Angriff von der Kali gegen die WAF
 
<syntaxhighlight lang="bash">
 
curl "http://waf.it213.xinmen.de/?id=1'+OR+'1'='1"
 
</syntaxhighlight>
 
;Im Dashboard
 
* Öffne ''Threat Hunting'', Filter ''rule.id:100101''
 
* Der Alert "Coraza WAF: Angriff geblockt" muss erscheinen
 
 
 
[[Kategorie:WAZUH]]
 
[[Kategorie:Coraza]]
 

Aktuelle Version vom 9. September 2026, 09:15 Uhr