Jeder mit PLESK administrierte Server lässt sich kostenlos mit ClamScan Antivirus nachrüsten, sofern man SSH-Zugang mit Root-Rechten hat. Eingehende Mails werden dann automatisch von ClamScan nach Viren und Trojanern untersucht und ggf. aus dem Verkehr gezogen. Dieses Tutorial zeigt die einzelnen Schritte um ClamScan Antivirus unter PLESK zu integrieren.
Plesk: Postfix SMTP Server und Virenscanner
Plesk nutzt Postfix als SMTP-Server. Postfix selbst hat eine offene Architektur, die es erlaubt über TCP/IP Ports mit externen Programmen wie Virenscannern zu kommunizieren. Da ClamScan keine direkte Kommunikation per TCP/IP beherrscht, muss ein Art Proxy-Server, hier ClamSMTP dazwischen geschaltet werden.
Die folgende Grafik zeigt das Zusammenspiel der einzelnen Komponenten:
- Postfix empfängt Mails von aussen über Port 25 und gibt diese über Port 10026 an ClamSMTP weiter.
- ClamSMTP kommuniziert mit dem Virenscanner (ClamScan) über eine lokale Unix Socket und teilt mit, welche Dateien zu scannen sind.
- Wenn keine Infektion vorliegt, gibt ClamSMTP die Mail an Postfix über Port 10025 zurück.
- Ansonsten wurde die Mail von ClamScan je nach Konfiguration entweder gelöscht oder in Quarantäne verschoben.
- Postfix speichert die Mail anschliessend in der Mailbox des Users.

ClamScan und ClamSMTP installieren
Neben ClamScan und ClamSMTP wird noch ein vernünftiger Editor (hier Nano) benötigt. Mit dem folgenden Befehl werden die entsprechenden Pakete installiert:
|
1 |
apt-get install clamav clamsmtp nano |
In den folgenden beiden Config-Dateien ist AllowSupplementaryGroups auf true zu setzen:
- /etc/clamav/clamd.conf
- /etc/clamav/freshcalm.conf
Die Datei /etc/clamsmtpd.conf wird mit folgenden Einträgen ergänzt:
|
1 2 3 |
Header: X-AV-Checked: ClamAV using ClamSMTP on mail.domain.com Quarantine: off VirusAction:/usr/local/bin/clamsmtp_on_virus.sh |
mail.domain.com ist hier durch den Namen des eigenen SMTP-Servers zu ersetzen.
ClamSMTP VirusAction-Script
Nun erzeugen wir das zugehörige VirusAction-Script für ClamSMTP. Jede eingehende Mail durchläuft dieses Script. Enthält die Mail eine Bedrohung, so wird sie unmittelbar gestoppt. Der Admin und optional auch der Empfänger werden benachrichtigt:
|
1 |
nano /usr/local/bin/clamsmtp_on_virus.sh |
Der Inhalt des Scripts fügen wie per Copy-Paste direkt in den Editor ein. Die Variablen ADMIN und MAILFROM müssen entsprechend angepasst werden:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#!/bin/bash # # clamscan_on_virus 1.0.0 # # Virus handler script for ClamSMTPd # # (c)2017 Harald Schneider # ADMIN="notify@domain.com" MAILFROM="clamscan@domain.com" LOG="/var/log/virus.log" DIR="/var/spool/clamsmtp" exec 1>>$LOG exec 2>>$LOG # Add to log echo "----------------------------------------" echo FROM $SENDER echo TO $RECIPIENTS echo VIRUS $VIRUS echo "----------------------------------------" # Move to quarantine # This only works if quarantine is enabled # #if [ -n "$EMAIL" ]; then # mv "$EMAIL" "$DIR" #fi MAILTEXT=" The following threat has been deteced and eleminated: VIRUSNAME: $VIRUS SENDER IP: $REMOTE SENT FROM: $SENDER RECIPIENT: $RECIPIENTS -- ClamScan Antivirus " # Send mail to original recipient: #echo "$MAILTEXT" | mail -r $MAILFROM -s "VIRUS filtered ($SENDER)" $RECIPIENTS # Send mail to admin echo "$MAILTEXT" | mail -r $MAILFROM -s "CLAMSCAN: VIRUS filtered ($SENDER)" $ADMIN |
Nachdem wir das Script gespeichert haben, setzen wir die Zugriffsrechte mit
|
1 |
chmod 755 /usr/local/bin/clamsmtp_on_virus.sh |
ClamScan in Postfix integrieren
Um die Kommunikation zwischen ClamSMTP und Postfix herzustellen, müssen 2 Config-Dateien von Postfix entsprechend angepasst werden:
|
1 |
nano /etc/postfix/main.cf |
Nach
|
1 |
sender_dependent_default_transport_maps = hash:/var/spool/postfix/plesk/sdd_transport_maps |
muss diese Zeile eingefügt werden:
|
1 |
content_filter = scan:127.0.0.1:10026 |
Nun die 2. Datei:
|
1 |
nano /etc/postfix/master.cf |
Hier fügt man am Ende der Datei die folgenden Zeilen ein:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes # For injecting mail back into postfix from the filter 127.0.0.1:10025 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8 |
Plesk: ClamScan automatisch aktualisieren
Das stündliche Aktualisieren der Virusdefinitionen von ClamScan wird über den Task-Scheduler von PLESK übernommen. Hierzu erstellen wir einen Task mit dem folgenden Kommando:
|
1 |
rm /var/log/clamav/freshclam.log;/usr/bin/freshclam --quiet |
ClamScan + ClamSMTP + Postfix: GO !
Über die folgenden Befehle werden die Änderungen aktiviert:
|
1 2 3 |
/etc/init.d/clamav-daemon start /etc/init.d/clamavsmtp start /etc/init.d/postfix restart |
Wenn wir alles richtig gemacht haben, enthalten alle ab jetzt empfangenen Mails im Header folgende Zeile:
|
1 |
X-AV-Checked: ClamAV using ClamSMTP on mail.domain.com |
Um ClamScan zu testen, können wir eine Mail mit der EICAR-Testdatei an einen Empfänger auf unserem Server senden. Die Datei enthält nur die EICAR Virus-Signatur, jedoch nicht den Virus selbst. Ist alles OK, kommt beim Empfänger anstatt der Testmail die Nachricht des VirusAction-Scripts an.

