Viren-Scanner in einen Mailserver integrieren

Aus LinuxUser 12/2014

Viren-Scanner in einen Mailserver integrieren

Schutzschirm

Viren, Würmer, Trojaner bedrohen fast ausschließlich Windows-Rechner. Deswegen ist der Einsatz von Virenscannern unter Linux in erster Linie auf File- oder Mail-Servern sinnvoll, die Windows-Clients bedienen.

Windows dominiert den Desktop mit etwa 90 Prozent Marktanteil [1], wobei das immer noch in bedenklich hohen Zahlen eingesetzte Windows XP wegen des inzwischen eingestellten Updates ein enormes Schadenspotenzial darstellt. Dem gegenüber läuft weltweit etwa die Hälfte aller Server unter Linux oder Unix.

Die hohe Verbreitung von Linux im Server-Bereich – auch in den großen Server-Farmen von Google, Facebook und Konsorten – ließe vermuten, dass solche Rechner ein attraktives Ziel für Angriffe durch Schadsoftware darstellen. Tatsächlich trifft das aber nicht zu. Allein an der Systemarchitektur kann das nicht liegen, denn die Sicherheitskonzepte aktueller Windows-Versionen unterscheiden sich gar nicht so sehr von jenen unixoider Betriebssysteme.

Sicheres Linux?

Sowohl unter Linux und Unix als auch unter Windows gibt es Benutzer mit unterschiedlichen Rechten. Auf unixoiden Systemen erhält ein Benutzer nur Zugriff auf seine eigenen Dateien und auf solche, für die ihm explizit Rechte eingeräumt wurden. Administrative Rechte bleiben dem Superuser root vorbehalten. Grundsätzlich wäre auch unter Windows eine solche Vorgehensweise möglich – allerdings lässt sie sich praktisch nicht umsetzen, weil das System für fast alle Aktivitäten Administrator-Rechte einfordert oder andernfalls viele Programme nicht korrekt ablaufen.

Deswegen stattete Microsoft bis Windows XP die Anwender grundsätzlich mit erweiterten Rechten aus. Seit Windows Vista erfolgt vor dem Wechsel in den Administrationsmodus zumindest eine Abfrage an den Benutzer. Noch immer aber verfügt der unter Windows bei Installation angelegte Standard-Benutzer über uneingeschränkte administrative Rechte: Alle Prozesse, die er startet, dürfen auf alle Teile des Systems zugreifen. Unter Linux und Unix erlauben nur su oder sudo den Wechsel in den Modus mit der effektiven User-ID 0 (Root), von Haus aus besitzt kein Benutzer die Privilegien des Administrators.

Immer wieder hört man das Argument, Windows böte aufgrund mannigfaltiger Software-Fehler Einfallstore für Schadsoftware. Tatsächlich liegen Windows, Linux und Unix aber hinsichtlich der Verletzbarkeit aufgrund von Programmierfehlern, konzeptionellen Fehlern, Pufferüberläufen und ähnlichen Schwächen aber gleichauf – wovon auch die Release-Notes der Updates zeugen. Tatsächlich liegen die Unterschiede nur in der Konfiguration, in der Windows die Sicherheit nicht selten zugunsten der Bequemlichkeit opfert. Das liegt nicht zuletzt daran, dass der typische Windows-Nutzer eine völlig andere Geisteshaltung bezüglich seines Rechnersystems an den Tag legt als ein Linux-Anwender.

Ein Linux-Desktop ist also nicht grundsätzlich sicherer als ein Windows-Rechner. Er bietet aber anders als die Microsoft-Maschine keine Dienste auf allen möglichen Ports nach außen an – der Grund dafür, dass “Personal Firewalls” unter Linux so gut wie unbekannt sind. Virenscanner unter Linux scannen Daten für andere Systeme, die selbst keinen ausreichenden Schutz gegen Angriffe mitbringen.

AV-Software unter Linux

Unter Linux lauffähige Virenscanner gibt es reichlich. Die gängigen Notfallkits wie Avira, F-Secure und Bitdefender Rescue arbeiten alle auf der Grundlage eines Linux-Systems. Solche Notfallretter starten Sie als Linux-Live-System entweder von CD oder einem USB-Stick. Sie eignen sich wegen ihrer Linux-Basis auch sehr gut dazu, von einem Server aus bei Bedarf via PXE zu booten.

Alle gängigen Linux-Distributionen stellen die Pakete Amavis [2] und ClamAV [3] zur Installation bereit. Bei ClamAV handelt es sich um den eigentlichen Virenscanner, Amavis bindet diesen in ein Mailsystem ein. Daneben existieren eine Reihe weiterer kostenloser Systeme, etwa von Bitdefender, Sophos und AVG. Im kostenpflichtigen kommerziellen Lager tummeln sich Kaspersky, Trend Micro und andere.

Im Folgenden zeigen wir, wie Sie einen Linux-Server mit einem Virenscanner auf der Grundlage von ClamAV und Amavis dazu ausrüsten, Verzeichnisse und E-Mails nach Schadsoftware zu scannen.

ClamAV

Alle gängigen Linux-Distributionen enthalten entweder ClamAV/Amavis-Installationspakete oder erlauben zumindest das Hinzufügen von Repositories, aus denen Sie diese Pakete beziehen können. Die Installation erfolgt jeweils über den Paketmanager des Systems. Vom Übersetzen aus dem Quellcode sollten Sie Abstand nehmen, denn die Distributionen verwenden oft spezifisch gepatchte Kernel und Bibliotheken, die sich nicht unbedingt mit den nativen Software-Versionen vertragen.

Unter Debian und dessen Ablegern wie Ubuntu, Knoppix oder Raspian genügt das Einrichten von ClamAV, dem ClamAV-Daemon und Freshclam. Nach der Installation bringen Sie zunächst mit Freshclam die Signaturen auf den neuesten Stand. Es empfiehlt sich, dieses Programm regelmäßig von einem Cron-Job ausführen zu lassen (Listing 1).

Listing 1

$ echo "0 4 * * * /usr/bin/freshclam" > cron.txt
$ sudo crontab -u root cron.txt

Danach testen Sie den Virenscanner. Laden Sie die harmlose Eicar-Virensignaturdatei eicar.com.txt herunter [4] und tippen danach in der Konsole clamscan eicar.com.txt, um diese zu prüfen. Erscheint in der Ausgabe eicar.com.txt: Eicar-Test-Signature FOUND, arbeitet der Scanner korrekt. Vergessen Sie nicht, die Signaturdatei wieder zu löschen, sonst bekommen Sie in Zukunft ständig Alarme.

Zum ClamAV existiert mit ClamTk [5] eine grafische Bedienoberfläche. Darin nehmen Sie alle Einstellungen und Scan-Aufrufe etwas bequemer vor (Abbildung 1).

Abbildung 1: Das grafische Frontend ClamTk erleichtert das Setup und die Bedienung des freien Virenscanners ClamAV.

Abbildung 1: Das grafische Frontend ClamTk erleichtert das Setup und die Bedienung des freien Virenscanners ClamAV.

Amavis

Ein datei- oder verzeichnisorientierter Virenscanner wie ClamAV eignet sich besonders dafür, eingehende E-Mails nach Viren zu durchsuchen. Mit Amavis steht hierfür ein Spezialist bereit, der sich beliebig auf andere installierte Virenscanner stützt. Über eine SMTP-Port-Schnittstelle arbeitet Amavis kompatibel mit Sendmail, Postfix, Exim und zahlreichen anderen SMTP-MTAs.

Im Folgenden beschreiben wir die Konfiguration von Amavis mit einem Postfix-MTA. Der Ausschnitt eines Mail-Headers in Listing 2 zeigt recht anschaulich den Ablauf einer entsprechenden Prüfung.

Listing 2

Delivered-To: fritz@fhotz.local
Received: from localhost (localhost [127.0.0.1])
  by fhserver.fhotz.local (Postfix) with ESMTP id 5BC84420565
  for <fritz@fhotz.local>; Tue, 14 Oct 2014 21:36:22 +0200 (CEST)
X-Virus-Scanned: amavisd-new at fhotz.local
Received: from smtp.efhotz.de ([127.0.0.1])
  by localhost (fhserver.fhotz.local [127.0.0.1]) (amavisd-new, port 10024)
  with ESMTP id Igt25lhcMl0o for <fritz@fhotz.local>;
  Tue, 14 Oct 2014 21:36:20 +0200 (CEST)
Received: from fhserver.fhotz.local (localhost [IPv6:::1])
  by fhserver.fhotz.local (Postfix) with ESMTP id 1B71842001B
  for <fritz@fhotz.local>; Tue, 14 Oct 2014 21:36:20 +0200 (CEST)
Received: from pop.1und1.de [212.227.15.178]
  by fhserver.fhotz.local with POP3 (fetchmail-6.3.26)
  for <fritz@fhotz.local> (single-drop); Tue, 14 Oct 2014 21:36:20 +0200 (CEST)
Received: from mail.linux-new-media.de ([62.245.157.204]) by
  mx.emig.kundenserver.de (mxeue101) with ESMTP (Nemesis) id
  0MarX8-1Xtzkv4C0w-00KN0M for <Friedrich.Hotz@ef-hotz.de>; Tue, 14 Oct 2014
  21:34:28 +0200
Received: from localhost (mail.linux-new-media.de [62.245.157.204])
  by mail.linux-new-media.de (Postfix) with ESMTP id B432E169D
  for <Friedrich.Hotz@ef-hotz.de>; Tue, 14 Oct 2014 21:34:27 +0200 (CEST)

Die E-Mail läuft zunächst beim Mail-Server ein, für den ein MX-Record hinterlegt ist, der für die Mail-Domäne des Autors zuständig ist. Von dort holt sie ein Fetchmail-Daemon mittels POP3 vom Server des Autors ab und reicht sie auf Port 25 (SMTP) an den lokalen SMTP-Server Postfix weiter. Der Postfix-Daemon arbeitet so, dass er alle Mails, die über Port 25 und über Port 587 (Submission) ankommen, an Amavis weiterleitet. Er gibt also die Mail über den Port 10024 an Amavis weiter.

Nach dem Virenscan durch Amavis leitet dieser die E-Mail erneut an Postfix weiter, nun aber über den Port 10025, damit die Mail nicht endlos zwischen Postfix und Amavis kreist. Am Ende landet die Nachricht schließlich im Postfach des Empfängers.

Amavis einrichten

Amavis steht den Repositories aller gängigen Distributionen zur Installation bereit, sodass Sie es bequem über den Paketmanager System einrichten. Um die Software mit dem MTA zu verbinden, öffnen Sie die Datei /etc/postfix/main.cf und ergänzen folgende Zeile:

content_filter=amavis:[127.0.0.1]:10024

Das bewirkt, dass Postfix alle Mails (außer jenen, die über den Port 10025 eintreffen) nicht mehr direkt weiterreicht, sondern erst einmal an Amavis zur Überprüfung gibt. Auch in der Datei /etc/amavisd.conf gilt es, einige Einstellungen vorzunehmen beziehungsweise zu überprüfen (Listing 3). Damit Postfix mit Amavis zusammenarbeitet und Einlieferungen nicht nur auf Port 25 und 587, sondern auch auf Port 20025 erlaubt, passen Sie die Datei /etc/postfix/master.cf wie in Listing 4 gezeigt an.

Listing 3

# cat /etc/amavisd.conf
$max_servers = 20;           # num of pre-forked children (2..30 is common), -m
$daemon_user  = 'vscan';     # (no default;  customary: vscan or amavis), -u
$daemon_group = 'vscan';     # (no default;  customary: vscan or amavis), -g
$mydomain = 'fhotz.local';   # a convenient default for other settings
@mynetworks = qw( 127.0.0.0/8 [::1] [FE80::]/10 [FEC0::]/10 192.168.0.0/16 );
$unix_socketname = "$MYHOME/amavisd.sock";  # amavisd-release or amavis-milter
               # option(s) -p overrides $inet_socket_port and $unix_socketname
$inet_socket_port = 10024;   # listen on this local TCP port(s)

Listing 4

# cat /etc/postfix/master.cf
amavis   unix  -      -       n       -        20      smtp
        -o smtpd_tls_security_level=may
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20
localhost:10025 inet   n       -       n       -       -       smtpd
  -o content_filter=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_tls_security_level=may
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o mynetworks=127.0.0.0/8
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,\
no_address_mappings
  -o local_header_rewrite_clients=
  -o local_recipient_maps=
  -o relay_recipient_maps=

Nun gilt es, sicherzustellen, dass auf Port 10024 auch der Daemon bereitsteht, um die Anfragen entgegenzunehmen. Nach Änderungen an der Konfiguration starten Sie den Daemon mit dem Aufruf service amavis restart beziehungsweise systemctl restart amavis.service neu. Danach liefern Sie mit einem einfachen Telnet-Dialog (Listing 5) eine Testmail an Amavis. Diese sollte danach im Postfach des Empfängers liegen, den Weg zeigt der Mail-Header (Listing 6).

Von nun an prüft Amavis alle Mails mittels ClamAV und sortiert solche mit fragwürdigen Inhalten gegebenenfalls aus. Sie überprüfen die Funktionsfähigkeit, indem Sie die bereits vorgestellte Eicar-Testdatei an sich selbst verschicken: Die Mail sollte nicht bei Ihnen ankommen. 

Listing 5

$ telnet localhost 10024
220 [::1] ESMTP amavisd-new service readyhelo
250 [::1]mail from: <testuser>
250 2.1.0 Sender <testuser> OKrcpt to: fritz@fhotz.local
250 2.1.5 Recipient <fritz@fhotz.local> OKdata
354 End data with <CR><LF>.<CR><LF>from:meto:yousubject:Testmail with AmavisHello. This is scanned by Amavis.
250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 42E7D42020Cquit
221 2.0.0 [::1] amavisd-new closing transmission channel
Connection closed by foreign host.

Listing 6

Return-Path: testuser@fhotz.local
X-Original-To: fritz@fhotz.local
Delivered-To: fritz@fhotz.local
Received: from localhost (localhost [127.0.0.1])
  by fhserver.fhotz.local (Postfix) with ESMTP id 42E7D42020C
  for <fritz@fhotz.local>; Mon, 20 Oct 2014 11:41:16 +0200 (CEST)
X-Quarantine-ID: <CswUSUl0jnLO>
X-Virus-Scanned: amavisd-new at fhotz.local
X-Spam-Flag: NO
X-Spam-Score: 2.781
Received: from unknown ([IPv6:::1])
  by localhost (fhserver.fhotz.local [IPv6:::1]) (amavisd-new, port 10024)
  with SMTP id CswUSUl0jnLO for <fritz@fhotz.local>;
  Mon, 20 Oct 2014 11:40:06 +0200 (CEST)
from:me
to:you
subject:Testmail with Amavis

Glossar

PXE

Preboot Execution Environment. Von Intel ersonnene Erweiterung von DHCP für das Booten von Rechnern über das Netzwerk.

MTA

Mail Transfer Agent. Die Server-Software, die E-Mails entgegennimmt und sendet.

Submission

Neuere MTAs benutzen Port 587, um Mails ausschließlich von authentifizierten Benutzern entgegenzunehmen (“E-Mail Submission Agent”). Die klare Trennung eigener und fremder Benutzer soll Konfigurationsprobleme und Spam vermeiden.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 12/2014 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben