RSPAMD an WAZUH: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „= Rspamd mit Virenerkennung = Rspamd wird als Milter an Postfix angebunden und prüft jede Mail. Über das Antivirus-Modul bindet es ClamAV ein und weist vers…“) |
|||
| Zeile 112: | Zeile 112: | ||
CLAM_VIRUS(0.00){Eicar-Test-Signature;} ... action: reject | CLAM_VIRUS(0.00){Eicar-Test-Signature;} ... action: reject | ||
</pre> | </pre> | ||
| + | = RSPAMD an WAZUH = | ||
| + | |||
| + | Rspamd weist virenbehaftete Mails am Milter ab und schreibt den Fund als Symbol | ||
| + | '''CLAM_VIRUS''' ins Log. Der Wazuh-Agent auf dem Mailserver liest dieses Log, | ||
| + | ein Decoder zerlegt die Zeile, eine Regel macht daraus einen Alert. | ||
| + | |||
| + | Da der Alert auf '''Level 12''' liegt (über dem email_alert_level 7), verschickt | ||
| + | der Manager automatisch eine Alarmmail ins ''soc''-Postfach — der Bogel | ||
| + | ''Detection → Response'' schließt sich also bis nach Roundcube. | ||
| + | |||
| + | == Agent: rspamd.log als Logquelle == | ||
| + | Der Agent liest das Rspamd-Log standardmäßig nicht. Wir ergänzen es als localfile. | ||
| + | ;In /var/ossec/etc/ossec.conf ergänzen (auf dem Mailserver) | ||
| + | <pre> | ||
| + | <localfile> | ||
| + | <log_format>syslog</log_format> | ||
| + | <location>/var/log/rspamd/rspamd.log</location> | ||
| + | </localfile> | ||
| + | </pre> | ||
| + | |||
| + | ;Agent neu starten | ||
| + | *systemctl restart wazuh-agent | ||
| + | |||
| + | == Manager: Decoder == | ||
| + | Der Decoder greift auf die CLAM_VIRUS-Zeile und extrahiert den Virusnamen. | ||
| + | ;In /var/ossec/etc/decoders/local_decoder.xml ergänzen (auf dem Manager) | ||
| + | <syntaxhighlight lang="xml"> | ||
| + | <decoder name="rspamd-clamav"> | ||
| + | <prematch>CLAM_VIRUS</prematch> | ||
| + | <regex type="pcre2">CLAM_VIRUS\([^)]*\)\{([^;]+);</regex> | ||
| + | <order>virus_name</order> | ||
| + | </decoder> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | == Manager: Regel == | ||
| + | ;In /var/ossec/etc/rules/local_rules.xml ergänzen (auf dem Manager) | ||
| + | <syntaxhighlight lang="xml"> | ||
| + | <group name="rspamd,clamav,"> | ||
| + | <rule id="100200" level="12"> | ||
| + | <decoded_as>rspamd-clamav</decoded_as> | ||
| + | <description>Rspamd/ClamAV: Virus in E-Mail erkannt und abgewiesen ($(virus_name))</description> | ||
| + | <group>virus,malware,attack,</group> | ||
| + | </rule> | ||
| + | </group> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ;Manager neu starten | ||
| + | *systemctl restart wazuh-manager | ||
| + | |||
| + | == Decoder und Regel testen == | ||
| + | Vor dem scharfen Test prüfen wir die Logik offline mit einer echten Logzeile. | ||
| + | ;Eine CLAM_VIRUS-Zeile aus dem Log holen | ||
| + | *grep CLAM_VIRUS /var/log/rspamd/rspamd.log | tail -1 | ||
| + | |||
| + | ;Die Zeile durch wazuh-logtest jagen (auf dem Manager) | ||
| + | */var/ossec/bin/wazuh-logtest | ||
| + | * Die Zeile einfügen — erwartet wird: Decoder ''rspamd-clamav'', Rule ''100200'', Level 12, Feld ''virus_name'' | ||
| + | |||
| + | == Scharfer Test (EICAR-Mail) == | ||
| + | ;EICAR-Mail an einen Lab-User schicken | ||
| + | <syntaxhighlight lang="bash"> | ||
| + | echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt | ||
| + | mail -s "Rechnung" -A /tmp/eicar.txt martha@it213.xinmen.de < /dev/null | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ;Alert auf dem Manager mitlesen | ||
| + | *tail -f /var/ossec/logs/alerts/alerts.log | grep -A5 CLAM_VIRUS | ||
| + | |||
| + | * Erwartet: Rule 100200, Level 12, mit dem Virusnamen ''Eicar-Test-Signature'' | ||
| + | * Zusätzlich landet die Alarmmail im ''soc''-Postfach und ist in Roundcube sichtbar | ||
| + | |||
| + | [[Kategorie:WAZUH]] | ||
| + | [[Kategorie:Mail]] | ||
Aktuelle Version vom 28. Juni 2026, 05:55 Uhr
Rspamd mit Virenerkennung
Rspamd wird als Milter an Postfix angebunden und prüft jede Mail. Über das Antivirus-Modul bindet es ClamAV ein und weist verseuchte Mails ab.
Installation Rspamd
- Repo-Werkzeuge
- apt update
- apt install -y lsb-release wget gpg
- Signing-Key des offiziellen Rspamd-Repos
- mkdir -p /etc/apt/keyrings
- wget -O- https://rspamd.com/apt-stable/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/rspamd.gpg > /dev/null
- Repo eintragen
- echo "deb [signed-by=/etc/apt/keyrings/rspamd.gpg] http://rspamd.com/apt-stable/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rspamd.list
- Rspamd und Redis installieren (Redis für Statistik/Cache)
- apt update
- apt install -y rspamd redis-server
- Dienste aktivieren
- systemctl enable --now redis-server
- systemctl enable --now rspamd
Rspamd an Postfix anbinden
Ohne diese Anbindung läuft Rspamd zwar, wird von Postfix aber nie aufgerufen.
- In die main.cf aufnehmen
- vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:11332 non_smtpd_milters = inet:127.0.0.1:11332 milter_default_action = accept milter_protocol = 6
- Wichtig
- Der smtps-Block (Port 465) muss den Milter explizit bekommen
Roundcube liefert über 465 ein. Ohne diese Zeile wird Rspamd für Webmail-Mail nicht aufgerufen, also auch nicht für die Virenprüfung.
- vi /etc/postfix/master.cf
smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_milters=inet:127.0.0.1:11332
- Postfix neu laden
- systemctl restart postfix
Installation ClamAV
- Scanner und Daemon installieren
- apt install -y clamav clamav-daemon
- Signaturen holen (clamd startet sonst nicht)
- systemctl stop clamav-freshclam
- freshclam
- systemctl start clamav-freshclam
- systemctl enable --now clamav-daemon
- Prüfen, dass der Socket da ist
- ls -l /run/clamav/clamd.ctl
Rspamd darf an den clamd-Socket
Der Rspamd-User muss in die clamav-Gruppe, sonst kein Zugriff auf den Unix-Socket.
- usermod -a -G clamav _rspamd
Antivirus-Modul konfigurieren
- Datei anlegen
- vi /etc/rspamd/local.d/antivirus.conf
clamav {
type = "clamav";
symbol = "CLAM_VIRUS";
servers = "/run/clamav/clamd.ctl";
# Virus gefunden => harte Ablehnung, unabhängig vom Spam-Score
action = "reject";
message = '${SCANNER}: Virus gefunden: "${VIRUS}"';
scan_mime_parts = true;
scan_text_mime = false;
scan_image_mime = false;
max_size = 20000000;
# EICAR sauber als eigenes Symbol erkennbar machen
patterns {
JUST_EICAR = '^Eicar-Test-Signature$';
}
}
- Syntax prüfen und neu starten
- rspamadm configtest
- systemctl restart clamav-daemon
- systemctl restart rspamd
Funktionstest
- 1. ClamAV direkt prüfen (muss "Eicar-Test-Signature FOUND" zeigen)
- echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | clamdscan -
- 2. Mail mit EICAR-Anhang an einen Lab-User schicken
- echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt
- mail -s "Rechnung" -A /tmp/eicar.txt martha@it2XX.int < /dev/null
- 3. Treffer im Rspamd-Log
- tail -f /var/log/rspamd/rspamd.log | grep CLAM_VIRUS
Erwartete Logzeile:
CLAM_VIRUS(0.00){Eicar-Test-Signature;} ... action: reject
RSPAMD an WAZUH
Rspamd weist virenbehaftete Mails am Milter ab und schreibt den Fund als Symbol CLAM_VIRUS ins Log. Der Wazuh-Agent auf dem Mailserver liest dieses Log, ein Decoder zerlegt die Zeile, eine Regel macht daraus einen Alert.
Da der Alert auf Level 12 liegt (über dem email_alert_level 7), verschickt der Manager automatisch eine Alarmmail ins soc-Postfach — der Bogel Detection → Response schließt sich also bis nach Roundcube.
Agent: rspamd.log als Logquelle
Der Agent liest das Rspamd-Log standardmäßig nicht. Wir ergänzen es als localfile.
- In /var/ossec/etc/ossec.conf ergänzen (auf dem Mailserver)
<localfile> <log_format>syslog</log_format> <location>/var/log/rspamd/rspamd.log</location> </localfile>
- Agent neu starten
- systemctl restart wazuh-agent
Manager: Decoder
Der Decoder greift auf die CLAM_VIRUS-Zeile und extrahiert den Virusnamen.
- In /var/ossec/etc/decoders/local_decoder.xml ergänzen (auf dem Manager)
<decoder name="rspamd-clamav">
<prematch>CLAM_VIRUS</prematch>
<regex type="pcre2">CLAM_VIRUS\([^)]*\)\{([^;]+);</regex>
<order>virus_name</order>
</decoder>
Manager: Regel
- In /var/ossec/etc/rules/local_rules.xml ergänzen (auf dem Manager)
<group name="rspamd,clamav,">
<rule id="100200" level="12">
<decoded_as>rspamd-clamav</decoded_as>
<description>Rspamd/ClamAV: Virus in E-Mail erkannt und abgewiesen ($(virus_name))</description>
<group>virus,malware,attack,</group>
</rule>
</group>
- Manager neu starten
- systemctl restart wazuh-manager
Decoder und Regel testen
Vor dem scharfen Test prüfen wir die Logik offline mit einer echten Logzeile.
- Eine CLAM_VIRUS-Zeile aus dem Log holen
- grep CLAM_VIRUS /var/log/rspamd/rspamd.log | tail -1
- Die Zeile durch wazuh-logtest jagen (auf dem Manager)
- /var/ossec/bin/wazuh-logtest
- Die Zeile einfügen — erwartet wird: Decoder rspamd-clamav, Rule 100200, Level 12, Feld virus_name
Scharfer Test (EICAR-Mail)
- EICAR-Mail an einen Lab-User schicken
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.txt
mail -s "Rechnung" -A /tmp/eicar.txt martha@it213.xinmen.de < /dev/null
- Alert auf dem Manager mitlesen
- tail -f /var/ossec/logs/alerts/alerts.log | grep -A5 CLAM_VIRUS
- Erwartet: Rule 100200, Level 12, mit dem Virusnamen Eicar-Test-Signature
- Zusätzlich landet die Alarmmail im soc-Postfach und ist in Roundcube sichtbar