Windows-Viren unter Linux bekämpfen: Der Virenfilter ClamAV

Aus LinuxUser 05/2004

Windows-Viren unter Linux bekämpfen: Der Virenfilter ClamAV

Muscheln gegen Viren

Computerschädlinge sind so aktiv wie selten zuvor. Einem ständig aktualisierten Linux-System können sie in der Regel nichts anhaben. Wer neben Linux jedoch weiterhin Windows benutzt, mag von einem Virenfilter profitieren.

Kennen Sie den Spruch “Diesen Computer sichern Sie am besten mit einem Seitenschneider”? Leider ist er ein wenig veraltet, denn im Zeitalter der Hochleistungsakkus und drahtlosen Netzwerke schützt selbst das Abklemmen von Strom- und Netzkabel nicht mehr zuverlässig vor Eindringlingen (Kasten 1).

Wie man menschlichen Angreifern begegnet, erfahren Sie zum Beispiel ab Seite 27: Dabei helfen Firewalls, regelmäßige Updates des Betriebssystems oder äußerste Sparsamkeit beim Betrieb von Netzwerkdiensten. Thema dieses Artikels sind die automatisierten Computerschädlinge, die Ihre Geräte ganz ohne menschliches Zutun überfallen.

Sie existieren in drei groben Varianten: Echte Viren infizieren möglichst alle ausführbaren Dateien auf einem Computer und auf den erreichbaren Netzwerkdateisystemen (“Shares”). Sie werden beim Start eines befallenen Programms automatisch aktiv. Trojanische Pferde hingegen verlassen sich darauf, dass jemand sie mehr oder weniger bewusst auf seinen Rechner holt und startet. Würmer gehen einen Schritt weiter und bemühen sich aktiv um ihre Verbreitung auf fremden Computern, indem sie z. B. unsichere Netzwerkdienste vollautomatisch knacken oder sich per E-Mail versenden.

Eine auf dem aktuellem Stand gehaltene Linux-Distribution sollte gegen diese Fieslinge weitgehend immun sein. Viren im engeren Sinne des Wortes haben es auf Unix sowieso schwer: Wer als unprivilegierter Nutzer ein Programm ausführt, darf es in der Regel nicht verändern. Problematisch könnten eher Würmer und Trojaner werden. Doch ist Linux (derzeit noch) kein übermäßig attraktives Ziel für die Sorte Hacker, die Würmer bastelt, und etwaige Schwachstellen werden bei Open-Source-Programmen ohnehin meist innerhalb von Stunden nach dem Bekanntwerden geschlossen. Wer sein System aktuell hält, kann relativ ruhig schlafen.

Nicht ganz so einfach ist die Situation, wenn Sie nebenher noch mit Windows arbeiten. Schwachstellen in Microsoft-Programmen bleiben manchmal über Monate unkorrigiert und stellen damit ein offenes Tor für Angreifer dar. Egal ob Sie auf Ihrem Computer noch eine Windows-Installation vorhalten oder in einem kleinen Heim-Netzwerk einen separaten Windows-Computer betreiben: Linux kann dabei helfen, diese fremden Systeme zu schützen. Dieser Artikel zeigt einen Virenscanner für Linux, der ankommende E-Mails oder von Linux aus erreichbare Windows-Festplatten vollautomatisch überprüft.

Kostenloser Virenscanner

Ähnlich wie für Windows existieren auch für Linux zahlreiche Virenscanner, sowohl kostenpflichtig als auch kostenlos [4,5]. Freilich sind sie vor allem darauf ausgelegt, Windows-Viren und -Würmer aufzuspüren – schließlich neigt man unter Linux eher dazu, die zugrundeliegende Schwachstelle zu korrigieren als den Würmern hinterherzulaufen.

Dieser Artikel demonstriert beispielhaft ClamAV [1], ein echtes Open-Source-Produkt. Wer eine möglichst vollständige Abdeckung wünscht, wird eventuell einen weiteren Scanner ergänzen – die hier gezeigten Techniken lassen sich ohne weiteres auf andere Virenscanner übertragen.

Vor den Preis der vollautomatischen Virenjagd haben die Götter leider den Schweiß der Installation gesetzt. Gemeinerweise wünscht ClamAV sich nämlich eine besondere Bibliothek namens MP [2], die oft nicht vorinstalliert wird. Suchen Sie sich diese also aus den Archiven Ihrer Distribution heraus, bevor Sie ClamAV herunterladen!

Die anschließende Installation von ClamAV selbst folgt in weiten Teilen der üblichen Prozedur unter Linux. Für das Quellcode-Paket ist sie im mitgelieferten Handbuch ausgiebig dokumentiert; eine Übersicht finden Sie in Listing 1. Für ein Einzelplatzsystem empfiehlt der Autor zusätzlich, ein kleines Utility namens clamassassin einzuspielen. Damit binden Sie den Virenscanner in Ihr E-Mail-System ein, ohne den SMTP-Daemon umzukonfigurieren. Das ist einfacher, aber nicht so effizient wie andere Lösungen. Beachten Sie bei den “ln -s“-Befehlen, dass es sich um Backticks handelt, also um Accents graves.

Listing 1

Installation von ClamAV und Clamassassin

$ su
Password: root-Passwort
# groupadd clamav
# useradd -g clamav -s /bin/false clamav
# exit
$ tar xzf clamav-0.70-rc.tar.gz
$ cd clamav-0.70-rc
$ ./configure --sysconfdir=/etc
[…]
$ make
[…]
$ su
Password: root-Passwort
# make install
[…]
# exit
$ cd ..
$ tar xzf clamassassin-1.0.0.tar.gz
$ cd clamassassin-1.0.0
$ su
Password: root-Passwort
# install clamassassin /usr/local/bin
# cd /usr/local/bin
# ln -s `which mktemp` .
# ln -s `which formail` .
# exit

Unmittelbar nach der Installation können Sie ClamAV bereits ausprobieren. Wenn Sie beispielsweise Ihre Windows-Partitionen unter /windows gemountet haben, lautet der Befehl zum Scan

clamscan -ri /windows

E-Mail scannen

Wirklich interessant wird ClamAV spätestens dann, wenn es ankommende E-Mails automatisch auf Viren überprüft. Wie Sie es allerdings in Ihr Mail-System einbinden, hängt von Ihren persönlichen Vorlieben ab.

Viele Leute konfigurieren einen echten Mailserver auf ihrem lokalen Linux-System. Suse bietet dies beispielsweise über Yast an. Dabei holt ein kleines Tool namens fetchmail ankommende E-Mails vom Server des Providers ab und überträgt sie an den eigenen Mailserver. Der wiederum speichert die Nachrichten in /var/mail oder /var/spool/mail. Diese Variante nutzt die Leistungsfähigkeit der verbreiteten Mailsoftware überhaupt erst aus.

ClamAV binden Sie auf einem derartigen Einzelplatzsystem am schnellsten über procmail ein. Ergänzen Sie dazu einfach Listing 2 am Anfang Ihrer ~/.procmailrc. Wenn eine solche Datei in Ihrem Heimatverzeichnis noch nicht existiert, legen Sie sie neu an.

Listing 2

~/.procmailrc

für ClamAV

# Ankommende E-Mail mit ClamAV prüfen
:0 fw
| /usr/local/bin/clamassassin
# Virus gefunden? Dann im Folder "virus-gefangen" abspeichern
:0 :
* X-Virus-Status: Yes
virus-gefangen
# Andere Mails werden wie gewohnt ausgeliefert

Bequemere Zeitgenossen, die ihre E-Mails von einem grafischen Client wie Evolution oder KMail direkt vom Server abholen lassen, brauchen deshalb nicht auf ClamAV verzichten. Freilich stellt sich die Frage, ob sie einen Virenfilter für E-Mail benötigen, wenn sie die Nachrichten ausschließlich unter Linux ansehen – schaden kann er aber kaum.

In dieser Variante bekommt procmail Ihre Nachrichten niemals zu Gesicht, Listing 2 funktioniert also nicht. Daher richten Sie einen Filter direkt in Ihrem Mailprogramm ein. Abbildung 1 zeigt das beispielhaft für Evolution. Als Kommando für die Pipe eignet sich

sh -c "/usr/local/bin/clamassassin | grep -i 'x-virus-status: yes'"

Die Nachricht wird also durch clamassassin geschickt; grep (siehe Seite 76) sucht nach dem Signaltext, der einen gefundenen Virus anzeigt. Ist die Bedingung erfüllt, wandert die Mail automatisch in einen Spezialfolder für Viren.

Abbildung 1: So binden Sie ClamAV in Evolution ein.

Abbildung 1: So binden Sie ClamAV in Evolution ein.

Aktuell bleiben

Wie Sie von Windows wissen, nützt der beste Virenscanner nichts, wenn seine Datenbank nicht ständig aktualisiert wird. “Ständig” bedeutet dabei nicht etwa, dass der Nutzer einmal pro Woche per Hand prüft, ob es vielleicht ein Update gibt, sondern wesentlich öfter.

ClamAV beinhaltet mit freshclam ein nützliches Programm zur automatischen Aktualisierung der Virendatenbank. Rufen Sie als root den Befehl

/usr/local/bin/freshclam --quiet

etwa einmal pro Stunde auf. Wenn Sie ihn beispielsweise in die Datei /etc/ppp/ip-up einfügen, startet dieses Skript jedesmal, wenn Sie eine PPP-Verbindung aufbauen.

Wer eine Flatrate besitzt, überträgt am besten dem Cron-Daemon diese Arbeit, indem er eine Zeile wie

24 * * * * root /usr/local/bin/freshclam --quiet

in die Datei /etc/crontab einfügt. Dann frischt der die Datenbank jeweils 24 Minuten nach jeder vollen Stunde auf.

Dann stellt sich nur noch die Frage: Taugt der Virenscanner etwas? Hier bietet EICAR [7] eine Datei an, mit der sich die Antivirensoftware testen lässt.

Kasten 1: Wie schützt man moderne Betriebssysteme?

Welche Wege stehen einem Angreifer offen, um auf Ihren Rechner zu gelangen? Die offensichtliche Methode ist der Zugriff auf einen Netzwerkdienst Ihres Systems. Bei vielen Unix-Systemen läuft beispielsweise ein Webserver wie Apache. Enthält dieser eine Sicherheitslücke, kann der Angreifer sie einfach ausnutzen, indem er eine Verbindung zum Webserver aufbaut und seinen Exploit überträgt. Auf Ihrem privaten Rechner schützen Sie sich vor diesem Angriffsweg, indem Sie Serverdienste ausschalten (vgl. Seite 27 ff.) oder gar nicht erst installieren.

Im Prinzip können aber alle fremden Daten einen solchen Exploit enthalten. Wenn beispielsweise eine E-Mail sich bereits auf dem eigenen Rechner befindet, reicht manchmal das bloße Anzeigen der Nachricht zum Ausnutzen der Schwachstelle aus. Besonders Outlook und Outlook Express enthalten einige bekannte Schwächen in dieser Hinsicht; deshalb spielen Virenfilter für E-Mail eine so große Rolle.

Auch in einem Webbrowser könnte sich eine Sicherheitslücke befinden, die beim Ansehen einer fremden Website ausgenutzt wird. Manche dieser Probleme lassen sich durch einen Proxy (vgl. Seite 73 ff.) ausschalten, andere nicht.

Vor einiger Zeit verbreiteten sich Viren und Würmer auch über Netzwerkdateisysteme, z. B. über offene Windows-Shares. Dank korrigierter Voreinstellungen in Windows sowie der zunehmenden Verbreitung von Paketfiltern ist dieses Problem weitgehend verschwunden.

Andere Zugangswege sind exotisch und für Privatleute kaum zu verteidigen. So können praktisch alle grundlegenden Protokolle missbraucht werden, wenn die beteiligte Software Fehler enthält. In der Vergangenheit waren beispielsweise Würmer unterwegs, die DNS oder manche ICMP-Protokolle ausnutzten.

Der Autor

Marc André Selig arbeitet je zur Hälfte als wissenschaftlicher Mitarbeiter an der Universität Trier und als Arzt im Praktikum am Bezirkskrankenhaus Augsburg. In seiner Freizeit bastelt er zur Zeit vor allem an mobilen Netzwerkdiensten.

Glossar

SMTP-Daemon

Das Mailserver-Programm, das sich im Hintergrund um auszusendende Mails kümmert (und bei Bedarf – zum Beispiel bei Internet-Providern – auch um das Empfangen). SMTP steht für das “Simple Mail Transfer Protocol”, die “Sprache”, in der Mailserver Mails miteinander austauschen.

groupadd

Kommandozeilentool, das eine neue Benutzergruppe anlegt, in Listing 1 die Gruppe “clamav”. Oft muss es mit vollem Pfad als “/usr/sbin/groupadd” aufgerufen werden.

useradd

Kommandozeilenprogramm, mit dem root ein neues Benutzerkonto erstellt. Nach -g steht die Gruppe, der der neue User angehört, nach -s die Login-Shell. “/bin/false” sorgt in Listing 1 an dieser Stelle dafür, dass sich niemand als der neue User clamav einloggen kann. Er wird lediglich zum Ausführen von Programmen benötigt.

install

Das Programm “/usr/bin/install” kopiert das Progrämmchen clamassassin ins Verzeichnis “/usr/local/bin”.

procmail

Dieser leistungsfähige Mail Delivery Agent nimmt ankommende E-Mail und schreibt sie in eine Datei auf Ihrer Festplatte. Dabei sind unzählige Konfigurationsmöglichkeiten denkbar, unter anderem eben auch das Sortieren von E-Mails nach bestimmten Kriterien. Die meisten modernen Linux-Distributionen aktivieren procmail automatisch, sobald der Benutzer es durch Anlegen einer Datei ~/.procmailrc konfiguriert. Ist das bei Ihnen nicht der Fall, hilft [6] weiter.

Pipe

Der senkrechte Strich | leitet die Ausgabe des davor stehenden Kommandozeilenbefehls zur Bearbeitung weiter an das nach dem | stehende Programm.

Cron

Dieser im Hintergrund laufende Dämon führt Programme automatisch zu bestimmten Zeiten aus. Beispielsweise kann er einmal täglich nach neuer Dokumentation suchen oder einmal im Monat die Protokolldateien des Webservers archivieren. Die so genannten crontabs enthalten die geplanten Befehle, fein säuberlich nach den einzelnen Benutzern auf einem Computer getrennt.

Exploit

Wörtlich “Ausbeutung”. So nennt man ein Programm, das eine Schwachstelle in fremder Software ausnutzt und beispielsweise eigenen Programmcode auf dem angegriffenen System ausführt.

Proxy

Fungiert als Mittler zwischen einem lokalen Client, z. B. einem Webbrowser wie Mozilla, und einem Server im Internet. Der Proxy nimmt die Anfragen des Clients entgegen und schickt sie an den Server. Die Antworten wiederum leitet er an den lokalen Client. Dabei kann der Proxy beispielsweise Daten überprüfen, korrigieren oder schlicht zwischenspeichern, er kann Zugriffsbeschränkungen durchsetzen und für zusätzliche Sicherheit sorgen.

DNS

Der “Domain Name Service” sorgt für die Übersetzung zwischen Hostnamen wie www.zpid.de und IP-Adressen wie 136.199.85.18. Da praktisch jedes Netzwerkprogramm den DNS benötigt, sind Fehler in diesem Dienst besonders kritisch.

ICMP

Das “Internet Control Message Protocol” wird für Netzwerkanalysen benutzt, z. B. um die Verbindung zwischen zwei Rechnern zu prüfen oder die erlaubte Paketgröße herauszufinden. ping beispielsweise zeigt an, ob ein Computer läuft und über das Netz erreichbar ist. Ping-Bomben können ältere Windows-Systeme sofort außer Gefecht setzen.

Infos

[1] ClamAV: http://www.clamav.net/

[2] GNU MP: http://www.gnu.org/directory/GNU/gnump.html oder http://www.swox.com/gmp/

[3] Clamassassin: http://drivel.com/clamassassin/

[4] Übersicht kommerzieller Antivirusprodukte: http://tinyurl.com/33syb

[5] F-Prot von Frisk: http://www.f-prot.com/products/home_use/linux/

[6] Listings aus diesem Artikel plus zusätzliche Konfigurationshilfen: http://www.seligma.com/linux-user/virus/

[7] EICAR: http://www.eicar.org/anti_virus_test_file.htm

LinuxUser 05/2004 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
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben