Postfix und Amavis: Virenscan an der Quelle

Postfix und Amavis: Virenscan an der Quelle

Eigentlich ist jeder Admin stolz auf seinen Mailserver und dann kommt eine Email mit Word Anhang durch, in dem ein Makro- Virus drin ist. Wie das? Postfix mit Amavis ist aktiv, clamav ist installiert und aktiviert. Wo hackt’s? Naja, die Lücke ist eigentlich schon genannt: clamav.

Nach dem letzten Vergleich von mehr als ein Dutzend Linux Anti- Viren scannern auf av-test.de kann Admina den clamav nur noch unterirdisch nennen. Eigentlich auch nur ein Ergebnis, dass Vergleichstests der letzten Jahre nochmal bestätigt. Da nützt es wenig, dass clamav OpenSource ist, in vielen Distros mitgeliefert und vorkonfiguriert ist – Fakt ist: clamav bringt es einfach nicht. Achtung: Wir reden hier von Viren in Emails und das ist nicht automatisch spam!

Wenn wir uns /etc/amavis/conf.d/15-av_scanners in einen Ubuntu System anschauen und sehen, welche Virenscanner vor-konfiguriert eingetragen sind, scheint es eine große Auswahl zu geben. Wenn wir aber die Liste überprüfen scheidet ganz schnell ein Scanner nach dem anderen aus: Den Einen gibt es nicht mehr, der Andere ist vom Konkurrenten aufgekauft und nicht mehr kostenlos oder nicht mehr für Linux verfügbar. Am Ende bleiben nur wenige Viren-scanner aus dieser Liste übrig. Letztlich hatte ich Sophos als testwert ausgewählt.

Einen kurzen Überblick und Zugang zu einen Download (“Die ersten Schritte”, nach einer Registrierung) bietet dieser link. Die verfügbare Dokumentation von ‘Sophos Antivirus for Linux‘ ist wirklich super: umfassend, einfach und in deutsch.

Die meisten Admins werden wohl auf einen alleinstehenden Server installieren – Stichwort ‘Einzelplatz’. Eine sogenannte ‘Startup-Anleitung‘ (empfohlen) findet sich hier und die weitergehende ‘Konfigurations- Anleitung‘ findet sich hier.

Die Einzelplatz- Installation wird in der Startup-Anleitung in Kapitel 5 beschrieben. Die Registrierung für den download kann sehr schmal ausfallen (Mailadressen von trashmails.com werden akzeptiert).

Die Installation von ‘Sophos Antivirus for Linux’ auf einen Ubuntu 14.04 LTS Server ist sehr einfach: Lade das Archiv von Sophos auf deinen Server in einen Ordner deiner Wahl, entpacke es und führe das Installations-script aus. Es folgen einige Fragen, die aber, selbst für einen Anfänger, easy zu beantworten sind. Ich würde auch die vorgegebenen Ordnerpfade übernehmen. Der vorgegebene Installationsordner ist /opt/sophos-av.

Der On-Access Scanner – also der Virenschutz, der ständig im Hintergrund läuft und auf alle(!) Datei-Bewegungen reagiert, wurde von mir während der Installation nicht aktiviert. Die Aktualisierung von Sophos ist kein Thema: Gleich nach Installation schaut der Virenscanner automatisch jede Stunde nach Aktualisierungen auf den Sophos Servern.

Der Sophos Scanner spricht nach der Installation mit dem Sophos Server und übermittelt Daten (phone-home). Allerdings muss man sagen, dass Sophos so fair ist und eine ausführliche Liste bereit stellt, in der gelistet ist, was übermittelt wird. Will jemand diese Funktion abschalten, kann er das tun:

/opt/sophos-av/bin/savconfig set DisableFeedback true

(Quelle)

Der nächste Schritt ist die Einbindung von Sophos in Amavis für die ‘on-demand’ Überprüfung. Auch dies ist relativ geschmeidig, weil die entscheidenden Einträge für Sophos schon in /etc/amavis/conf.d/15-av_scanners stehen.

Suche in dieser Datei nach ‘sweep’ (die Scan-Komponente von Sophos, Eintrag am Ende der Datei) und kommentiere die Anweisungen für Sophos aus – also # entfernen. Starte mit service amavis restart den Amavis Dienst einmal durch und schaue Dir dann /var/log/mail.log an. Dort müßte ein Eintrag ähnlich Folgendem stehen:

amavis[15236]: Using primary internal av scanner code for ClamAV-clamd
amavis[15236]: Found secondary av scanner Sophos Anti Virus (sweep) at /usr/local/bin/sweep

Allerdings haben wir schon diskutiert, dass der clamav nicht gerade die Krone der Schöpfung ist, und verbannen clamav zum secondary und Sophos zum primary. Wo wird das gesteuert?

Wenn wir uns den Inhalt von /etc/amavis/conf.d/15-av_scanners anschauen, sehen wir, das zu Beginn der Datei ein @av_scanners steht und etwa in der Mitte, ein @av_scanners_backup beginnt. Die zwei Bereiche schließen mit einen ); ab. Damit sind alle Scanner, die im ersten Block stehen, die primary’s und alle im zweiten Block die secondary’s.

Wann kommt der secondary scanner zum Einsatz? Laut der Info in der genannten Datei:

If no virus scanners from the @av_scanners list produce ‘clean’ nor ‘infected’ status (i.e. they all fail to run or the list is empty), then all scanners from the @av_scanners_backup list are tried (again, subject to $first_infected_stops_scan).

Auf gut Deutsch: Wenn der erste Scanner kein eindeutiges Ergebnis liefert, darf der Zweite ran.

Setze in /etc/amavis/conf.d/15-av_scanners im ersten Block vor den clamav Einträgen die Rauten# zum deaktivieren und entferne die Rauten im zweiten Block vor den 3 Zeilen clamav. Damit wird clamav secondary! Die sechs Zeilen für den sweep Eintrag werden aus dem zweiten Block in den ersten Block kopiert und die noch aktiven sweep Einträge im zweiten Block wieder mit Rauten deaktiviert. Fertig. Damit ist Sophos der primary! Im log sieht das dann so aus:

amavis[20242]: Found primary av scanner Sophos Anti Virus (sweep) at /usr/local/bin/sweep
amavis[20242]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan

Schick Dir eine Email mit Anhang und führe danach folgenden Befehl aus:

/opt/sophos-av/bin/savlog --today

und Du siehst die aktuellen log Einträge. Ein typischer scan sieht dann so aus:

savscan.log    On-demand scan started.
savscan.log    On-demand scan details: master boot records scanned: 0, boot records scanned: 0,
files scanned: 1, scan errors: 0, threats detected: 0, infected files detected: 0
savscan.log    On-demand scan finished.

Letztlich stellt sich natürlich die Frage, mit welchen Optionen Sophos scannt. Sehen wir uns den Eintrag in /etc/amavis/conf.d/15-av_scanners an, …

['Sophos Anti Virus (sweep)', 'sweep',
'-nb -f -all -rec -ss -sc -archive -cab -mime -oe -tnef '.
'--no-reset-atime {}',
[0,2], qr/Virus .*? found/m,
qr/^>>> Virus(?: fragment)? '?(.*?)'? found/m,
],

… können wir uns die Scan- Optionen mit der manpage erklären:

Wert Bedeutung
-nb keine akustischen Zeichen (no-bell)
-f vollständiger scan von Dateien (full scan, nicht nur Meta Daten)
-all alle Datei- Anhänge, egal welcher Dateityp, scannen.
-rec rekursiv/durchläuft alle Ordner
-ss absolut keine Meldungen außer bei Fehler (super-silent)
-sc scan dynamisch komprimierte Dateien
-archive scan alle Archiv Dateien (zip,tar,usw.)
-cab scan M$ cabinet Dateien (ähnlich Archive, meistens Treiber, patches oder Programm sourcen)
-mime scan inside MIME encoded Dateien (siehe Mailheader)
-oe scan von 'Outlook Express' Dateien
-tnet scanne tnef Dateien (siehe Dateityp tnef in Wikipedia)
-no-reset-atime nicht die Zeit einer Datei ändern (Wichtig f. Backups)

Ich denke, dass Admina mit diesen Scan- Optionen gut leben kann. Grundsätzliche Einstellungen und Aktionen von Sophos Anti-Virus lassen sich mit folgenden Befehlen anzeigen:

/opt/sophos-av/bin/savdstatus
/opt/sophos-av/bin/savconfig -v
/opt/sophos-av/bin/savlog --today

Sophos bringt zu jeden Sophos Befehl auch manpages mit! Die verfügbaren Befehle finden sich in /opt/sophos-av/bin. So kann in diesen Ordner mit ./savsetup die Konfiguration nach der Installation nochmal gestartet werden. Auch ein Eintrag in die crontab zum zeitlich- gesteuerten scan von Daten kann mit sweep realisiert werden.

Laut av-test.de (Test von 2015 aber nicht mehr präsent) hat clamav eine Erkennungsrate Windows/Linux Malware von 15/66% wobei Sophos mit 99/95% geradezu glänzt! Die wenige Arbeit sollte sich für dieses Ergebnis rentieren und schließt ja nicht aus, dass Admina noch clamsmtp als Filter in Postfix integriert.

Have fun…


Autor: Mathias R. Ludwig

MCSE, MCITP, MCDBA, RHCT, CompTIA, ITILv3, AdA, VWA Ökonom, Dipl.SozArb., Kfz-Mechaniker, Panzer-Mechaniker/-Fahrer (HptGefr), Stanislaw Lem und Linux Fan, Feuerpferd.

Kommentare “Postfix und Amavis: Virenscan an der Quelle”