Next Previous Contents

42. Virenscanner unter LINUX installieren

Choosing Anti-Virus Products David J. Stang, Ph.D. Introduction Over the last few years, we have all learned a bit about computer viruses. Among other things, we know that viruses are not pleasant little chaps. They live in a world of kill and be killed http://sevenlocks.com/virushelp/virushandbook/choosingavproducts.htm

Die Installation Virenscanner in reinen LINUX bzw. UNIX - Umgebungen sind noch nicht erforderlich. Das liegt zum einen daran, daß UNIX im Vergleich zu Windows 98/NT ein Multi-User - Betriebssystem ist, und das Betriebssystem nicht mit der Benutzerumgebung verschmolzen ist, wie das bei Windows der Fall ist. Angriffe auf Office mit Hilfe von Makroviren oder zerstörerische, Trojanische Pferde bleiben also lokal auf den Einflußbereich des Users beschränkt. Das Betriebssystem selber und andere User können nur in Mitleidenschaft gezogen werden, wenn die User-Rechte zu frei vergeben sind, oder der Systemadministrator mit Supervisor-Rechten arbeitet.

LINUX kann aber sehr wohl für eine Abteilung oder eine ganze Firma E-Mails und die Festplatte nach Viren absuchen.

Wie man diesen Virenscanner installiert, und wie man ihn wartet, ist Inhalt dieses Kapitels.

42.1 Auswahl der Software

Wir gehen nun von einem standardmäßig installierten LINUX System aus. Da der Virenscanner alle Mails durchsuchen soll, müssen neben dem Mailerdämon Sendmail , SMAIL oder POSTFIX, einer besonders sicheren Variante, auch die Dekompressionsprogramme, wie unzip, uncompress, unrar, uudecode, unarj, xbin, lharc, bunzip, bunzip2, unarc, unfreeze, u.s.w. auf der Festplatte installiert sein, damit auch komprimierte Attachments analysiert werden können. Dies können Sie z.B mit which unzip... testen.

Als nächstes benötigen wir eine Software, die sich in unseren Mailerdämon einklinkt und bei jeder empfangenen und versendeten Mail zuvor die Attachments auf Viren überprüft. Hierzu gibt es das GNU Toolkit AMaViS - A Mail Virus Scanner. Dieses findet man auf dem WWW-Server http://www.amavis.org. Er ist in der Lage, ein Attachment, welches an einer Mail anhängt, zu analysieren. Da in vielen Fällen Attachments komprimiert wurden, kann er selbständig das Format erkennen, und die Mail entpacken. Erst dann startet der Virenscanner. Bei Attachments, die er nicht erkennt, z.B. weil der Entpacker nicht auf der Festplatte vorhanden ist, oder weil Viren enthalten sind, informiert er den Absender und Adressaten mit der Bitte, sich mit dem Systemadministrator in Verbindung zu setzen. Dieser kann dann aus einem gesicherten Verzeichnis heraus das Attachment genauer analysieren.

Leider ist AMaViS 0.20.x nur ausgiebig mit dem Sendmail Dämon getestet. Aus eigenen Erfahrungen kann ich aber sagen, daß diese Kombination absolut stabil und zuverlässig läuft.

Nun wird noch ein Virenscanner benötigt. Hierbei kann inzwischen fast jeder Virenscanner installiert werden. Falls Sie also bereits Serverlizenzen für McAffee, Dr. Solomon, AntiVir/X, Sophos Anti-Virus, AVP oder H+BEDV besitzen, dann dürfen und können Sie diese auch unter LINUX einsetzen.

Bevor Sie jedoch AMaViS installieren können, müssen Sie einen dieser Virenscanner unter LINUX installiert haben.

ftp://ftp.rubyriver.com/pub/jhardin/antispam/procmail-security.html

42.2 Installation des H+BEDV Virenscanners

Zunächst benötigen Sie eine Lizenz, die Sie im Internet anfordern müssen. Für den privaten Gebrauch unter LINUX können Sie bei H+BEDV eine kostenlose Lizenz anfordern. Schicken Sie hierzu eine Mail an: linux_registration@antivir.de, oder per FAX an:

H+BEDV Datentechnik GmbH
Lindauer Straße 21
D-88069 Tettnang
Tel.: 07542/93040
Fax.: 07542/52510
http://www.antivir.de
eMail: linux_support@antivir.de

Nun zu der Installation von H+BEDV Antivirus. Laden Sie sich die Datei avlglibc.tgz von der Homepage bei H+BEDV und installieren Sie sich diese wie folgt:

www:[src]# cd /usr/src/
www:[src]# mkdir antivir
www:[src]# mv avlglibc.tgz antivir/
www:[src]# cd antivir/
www:[antivir]# ls
avlglibc.tgz
www:[antivir]# tar -xzvf avlglibc.tgz
README
VERSION
antivir
antivir.vdf
install.sh
www:[antivir]# ls
README  VERSION  antivir*  antivir.vdf  avlglibc.tgz  install.sh*
www:[antivir]# pwd
/usr/src/antivir
www:[antivir]# ./install.sh
create symlink in /usr/bin?
y
www:[antivir]#

Der Virenscanner selber, also das Binary befindet sich im Verzeichnis /usr/bin/antivir. Die Schlüsseldatei und die Datei mit den Virensignaturen befinden sich nach der Installation mit install.sh im Verzeichnis /usr/lib/AntiVir. In diesem Verzeichnis müssen Sie auch stets die Updates für die Erkennung neuer Viren einspielen.

Nun muß der Lizenzschlüssel in ein Verzeichnis /usr/lib/AntiVir abgelegt werden. In diesem Verzeichnis befindet sich auch die Datei, die die aktuellen Virensignaturen enthält antivir.vdf. Der Schlüssel heißt HBEDV.KEY. Auf diesen müssen Sie mit ln -s /usr/lib/AntiVir/HBEDV.KEY /usr/lib/AntiVir/hbedv.key setzen.

Der Virenscanner ist nun Einsatzbereit.

www:[beate]# pwd
/home/beate
www:[beate]# antivir -z -s *
AntiVir/Linux Version 5.20.1.2, (Nov 22 1999, 15:38:19)
Copyright(c) 1994-99 by H+BEDV Datentechnik GmbH

VDF-Version: 5.20.1.4 - FUP(0), vom 03.12.1999

AntiVir-Lizenz: 000001 für H+BEDV

Prüfe Laufwerk/Pfad (list): Desktop
Prüfe Laufwerk/Pfad (list): Office51
Prüfe Laufwerk/Pfad (list): nsmail

----- Suchergebnisse -----
 Verzeichnisse:       43
       Dateien:       13
     Infiziert:        0
     Repariert:        0
      Gelöscht:        0
     Umbenannt:        0
     Warnungen:        0
Benötigte Zeit: 00:00:01
--------------------------
Vielen Dank für den Einsatz von AntiVir.
www:[beate]#

Damit nun der Virenscanner regelmäßig alle Homeverzeichnisse durchsucht, müssen Sie den Virenscanner im CRON Dämon regelmäßig starten. Sehen Sie hierzu im Kapitel CRON nach. Wichtig sind die möglichen Optionen des Virenscanners. Diese erhalten Sie, wenn Sie antivir --? aufrufen:

Copyright(c) 1994-99 by H+BEDV Datentechnik GmbH

Unbekannter Parameter: '--?'
Aufruf: antivir [parameter] [pfad[\*.ext]] [*.ext]
Parameter:
 -? / -h ......... Zeigt diesen Text an
 -allfiles ....... Prüft alle Dateien
 -s .............. Unterverzeichnisse durchsuchen
 -z .............. Dateien in ZIP-Archiven werden ausgepackt und untersucht
 -nolnk .......... Folgt keinen symbolischen links
 -onefs .......... Folgt symbolischen links nicht auf andere Dateisysteme
 -noboot ......... Bootsektorprüfung abschalten
 -nobreak ........ Kein Abbruch über Ctl-C bzw. Ctrl-Break möglich
 -nodef  ......... Nur die angegebenen Dateitypen (z.B. *.DOC) prüfen
 -cf[dateiname]... Schaltet die CRC-Prüfung ein
                   <dateiname> gibt den Namen der CRC-Datenbank an
 -cv ............. CRC-Prüfung der ganzen Datei (sonst nur 16k)
 -cn ............. Neue Dateien in die Datenbank aufnehmen
 -cu ............. CRC-Werte neu berechnen und in der Datenbank abgleichen
 -v .............. Ganze Datei prüfen (Fehlerkennungen sind hierbei möglich)
 -nopack ......... Interne Prüfung gepackter Dateien (PKLite+LZExe)
abschalten
 -e .............. Repariert infizierte Dateien
                   nicht reparable Dateien werden gelöscht!
 -ren ............ Benennt infizierte Dateien um (*.COM->*.VOM,...)
 -del ............ Löscht infizierte Dateien
 -dmdel .......... Löscht Word-Dokumente, die verdächtige Makros enthalten
 -dmds ........... Löscht verdächtige Makros
 -dmda ........... Löscht alle Makros
 -dmdas .......... Löscht alle Makros wenn ein verdächtiges gefunden
 -dmcnv .......... Konvertiert Templates
 -dmpack ......... Packt die Template-Data-Table
 -dmtl<wert> ..... Setzt die Trigger-Schwelle auf angegebene Tokenlänge
 -dmse ........... Setzt den Returncode auf 101, wenn ein Makro gefunden
wurde
 -r1 ............. Schreibt nur Infektionen + Warnungen in die Reportdatei
 -r2 ............. Zusätzlich alle durchsuchten Pfade vermerken
 -r3 ............. Zeichnet alle durchsuchten Dateien auf
 -r4 ............. Ausführlicher Reportmodus
 -rs ............. Virenmeldungen werden einzeilig ausgegeben
 -rf<dateiname> .. Name der Reportdatei <dateiname>
                   %d = Tag, %m = Monat, %y = Jahr (jeweils 2-stellig)
 -ra ............. Neue Reportdaten werden angehängt
 -ro ............. Die Reportdatei wird überschrieben
 -q .............. Es werden nur Viren- und Fehlermeldungen ausgegeben
 -once ........... AntiVir läuft nur einmal pro Tag
 -x<dir> ......... AntiVir sucht 'seine' Dateien z.B. 'antivir.vdf' in <dir>
 -if<dateiname> .. AntiVir verwendet die angegebene Ini-Datei
 -kf<dateiname> .. AntiVir verwendet die angegebene Lizenzdatei (hbedv.key)
 @<rspdatei> ..... Parameter werden aus der Datei <rspdatei> gelesen
                   wobei jede Option in einer eigenen Zeile steht

Liste der Returncodes:
   0: Normales Programmende, kein Virus, kein Fehler
   1: Virus in Datei (oder Bootsektor) gefunden
   2: Virus (evtl. aktiv) im Speicher gefunden
 100: AntiVir hat nur den Hilfetext angezeigt
 101: Es wurde ein Makro in einer Datei gefunden
 102: Der Parameter -once war angegeben und AntiVir lief bereits
 200: Programmabbruch wegen Speichermangel
 201: Die angegeben Responsedatei wurde nicht gefunden
 202: Innerhalb einer Responsedatei wurde @<rsp> angegeben
 203: Ungültiger Parameter angegeben
 204: Ungültiges Verzeichnis angegeben
 205: Die angegebene Reportdatei konnte nicht erzeugt werden
 210: AntiVir hat eine benötigte DLL nicht gefunden
 211: Programm abgebrochen, da Selbstprüfung fehlgeschlagen
 212: Die Datei antivir.vdf nicht gefunden oder Lesefehler
 213: Initialisierungsfehler
www:[/]#

Der Virenscanner unter LINUX besitzt sogenannte Return-Codes, wie sie auch unter MSDOS existieren. Sie können z.B. nach der Beendigung des Scanners in der Shell abgefragt werden: echo $?.

Leider haben einige Virenscanner, darunter dieser hier in der LINUX Variante das Problem, daß komprimierte Archive nicht korrekt gescannt werden.

Dieses Problem ist auch von dem Norton Antivirus Scanner bekannt, der keine komprimierten Viren erkannt hat. H+BEDV Antivir 5.20.1.2 unter LINUX entpackt keine Archivdateien, obwohl - das Handbuch es so sagt, und der Virenscanner auch so in seinen Report hineinschreibt.

Sie sollten daher H+BEDV Antivirus nur für das Scannen von Attachments in E-Mails verwenden. Das Entpacken über nimmt dann AMaViS. Da es ein kleines PERL Skript ist, läßt sich hier auch genau nachweisen, daß die Dateien auch tatsächlich entpackt und übergeben werden.

42.3 Installation von AMaViS

Nun kommen wir zu der Installation des Virenscanners AMaViS. Das Installationsskript setzt das Vorhandensein eines der dem Skript bekannten Virenscanner voraus. Es können auch alle Virenscanner mit eingebunden werden, allerdings würde dann die Analyse einer einzigen E-Mail viel mehr Zeit in Anspruch nehmen. Laden Sie sich das neueste AMaViS Skript aus dem Internet von der Website http://www.amavis.org. Kopieren Sie das Skript in das Verzeichnis /usr/src/, entpacken und installieren es:

www:[/root]# cp amavis-0.2.0-pre6.tar.gz /usr/src/
www:[/root]# cd /usr/src/
www:[src]# tar -xzvf amavis-0.2.0-pre6.tar.gz
amavis-0.2.0-pre6/
amavis-0.2.0-pre6/Makefile.in
amavis-0.2.0-pre6/doc/
amavis-0.2.0-pre6/doc/amavis.html
amavis-0.2.0-pre6/doc/amavis.gif
amavis-0.2.0-pre6/doc/amavis.txt     
...
amavis-0.2.0-pre6/src/scanmails/checkaccount.in
amavis-0.2.0-pre6/src/scanmails/scanmails.in
www:[src]# cd amavis-0.2.0-pre6
www:[amavis-0.2.0-pre6]# ./configure                                                             
...
creating src/scanmails/scanmails
**************************************************************
* AMaViS 0.2.0-pre6 has successfully been configured
* and will install using following pathnames:
*
* -> zipsecure : /usr/bin/zipsecure
* -> securetar : /usr/bin/securetar
* -> scanmails : /usr/sbin/scanmails
*
**************************************************************
 To accept the above, type "make"
www:[amavis-0.2.0-pre6]#  make install
Making install in src
make[1]: Entering directory /mnt/hda3/usr/src/amavis-0.2.0-pre6/src'
Making install in zipsecure
...
...
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory /mnt/hda3/usr/src/amavis-0.2.0-pre6'
make[1]: Leaving directory /mnt/hda3/usr/src/amavis-0.2.0-pre6'
www:[amavis-0.2.0-pre6]#                                                                                                                                                          

Was AMaViS nun nicht wissen kann, ist, wie Sie Ihren Mailerdämon konfiguriert haben. Die Installationsvarianten unter UNIX sind so verschieden, daß es sicher noch einige Zeit dauern wird, bis eine automatische Installation erfolgen kann. Unter Windows NT z.B. wird der Virenscanner nicht direkt in den Mailerdämon Exchange eingebaut, sondern nur in den Interrupt 10 eingeklinkt. Immer dann, wenn etwas auf die Festplatte geschrieben werden soll, wird der Virenscanner aktiv. Dieses führte z.B. zu einigen Unverträglichkeiten zu HP Druckertreibern. Unter LINUX kann man Viren nach belieben Scannen, man kann sogar LINUX als Virenfilter vor anderen Betriebssystemen installieren.

Nun kommt die große Frage, nach der Einbindung in den Mailerdämon. Wir verwenden hier den klassischen Sendmail in seiner aktuellen Version 8.9.3. Die Version 10.0 ist zwar schon im Internet verfügbar, jedoch besteht kein Anlaß, eine Version zu nehmen, die noch nicht länger schon von der Allgemeinheit getestet worden ist.

Sendmail besteht aus mehreren Teilen die sich auch Austauchen lassen. Im Wesentlichen sind dies der Sendmail Dämon mit seinen Konfigurationsdateien, und dasjenige Programm, welches die E-Mails auf die Festplatte in die Postfächer einordnet. Dieses ist enteder das Programm PROCMAIL, oder das Programm DELIVER. Unter RedHat LINUX V7 ist PROCMAIL installiert. Sie werden also in der Datei /etc/sendmail.cf folgende kleine Zeile tauschen. Aber Achtung ! Es sind zwei Zeilen in der Konfigurationsdatei enthalten, die das Wort procmail beinhalten. Diese beiden Stellen sehen sich recht ähnlich:

    Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
    T=DNS/RFC822/X-Unix,
    A=procmail -Y -a $h -d $u

Diese muß nun auskommentiert werden, und stattdessen tragen Sie dort bitte die Zeilen darunter ein:

    #Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
    # T=DNS/RFC822/X-Unix,
    # A=procmail -Y -a $h -d $u

    Mlocal, P=/usr/sbin/scanmails, F=lsDFMAw5:/|@SPfhn, S=10/30, R=20/40,
    T=DNS/RFC822/X-Unix,
    A=scanmails -Y -a $h -d $u

So, das war's dann auch schon ! Mit einem einfachen, kleinen Kommando können Sie nun den Sendmailer dazu veranlassen, die neue Konfiguration einzulesen. Sie müssen also weder den Server noch den Dämon neu starten. LINUX ist nicht NT !

killall -HUP sendmail

Diese Art des "herumfuschens" in der Konfigurationsdatei /etc/sendmail.cf ist eine unsaubere Sache. Im Grunde muß man in der Datei redhat.m4 oder sendmail.m4 die Änderungen vornehmen.

Lesen Sie hierzu das Kapitel Sendmail M4 Kompilation. Tauschen Sie hier einfach /usr/bin/procmail gegen /usr/sbin/scanmails aus, und kompilieren Sie die Steuerdatei redhat.mc neu.

Sie können sich dann sicher sein, daß nach einer Änderung der Konfiguration Ihres Sendmailers nicht plötzlich der Virenscanner deaktiviert ist. In vielen Distributionen, allen voran der S.u.S.E. Distribution passiert dies aufgrund der Steuerung über die zentrale Konfigurationsdatei rc.config dauernd. Die Informationspolitik von S.u.S.E. in dieser hinsicht ist darauf gerichtet, die Administratoren möglichst dumm zu halten.

42.4 Test des Virenscanners "scanmails"

Schauen wir uns nun an, wie der Virenscanner arbeitet. Falls Sie das Kernel Audit Modul nicht installiert haben, so werden sie keine Einträge in Ihrer Datei /var/log/messages oder /var/log/audit.log sehen können. Bitte sehen Sie im Kapitel Kernel Auditing nach.

Kernel Audit UID(0) PID[3919]: /bin/fgrep -q Zip archive data
Kernel Audit UID(0) PID[3920]: /usr/bin/test 1 -eq 0
Kernel Audit UID(0) PID[3921]: /usr/bin/file ./mm.lblyGP
Kernel Audit UID(0) PID[3922]: /bin/fgrep -q tar archive
Kernel Audit UID(0) PID[3923]: /usr/bin/test 1 -eq 0
Kernel Audit UID(0) PID[3924]: /usr/bin/file ./mm.lblyGP
Kernel Audit UID(0) PID[3925]: /bin/fgrep -q compress'd
Kernel Audit UID(0) PID[3926]: /usr/bin/test 1 -eq 0
Kernel Audit UID(0) PID[3927]: /usr/bin/file ./mm.lblyGP
Kernel Audit UID(0) PID[3928]: /bin/fgrep -q gzip compressed data
Kernel Audit UID(0) PID[3929]: /usr/bin/test 1 -eq 0
Kernel Audit UID(0) PID[3930]: /usr/bin/file ./mm.lblyGP
Kernel Audit UID(0) PID[3931]: /bin/fgrep -q -E bzip2* compressed
Kernel Audit UID(0) PID[3932]: /usr/bin/test 1 -eq 0
...
Kernel Audit UID(0) PID[3960]: /bin/ls -laR /var/tmp/scanmails3894/unpacked
Kernel Audit UID(0) PID[3961]: /usr/bin/antivir * -s -ra -rf/var/tmp/scanmails3894/logfile /var/tmp/scanmails3894/unpacked
Kernel Audit UID(0) PID[3962]: /usr/bin/test 0 -eq 1 -o 0 -eq 1 -o 0 -eq
Kernel Audit UID(0) PID[3963]: /bin/cat /var/tmp/scanmails3894/receivedmail
Kernel Audit UID(0) PID[3964]: /usr/bin/formail -f -A X-AntiVirus: scanned for viruses by AMaViS 0.2.0-pre6 (http://aachalon.de/AMaViS/)
Kernel Audit UID(0) PID[3965]: /usr/bin/procmail -f root@www.intra.net -Y -a
Kernel Audit UID(0) PID[3966]: /bin/mkdir -p /var/log/scanmails
Kernel Audit UID(0) PID[3967]: /bin/cat /var/tmp/scanmails3894/logfile
Kernel Audit UID(0) PID[3968]: /bin/rm -rf /var/tmp/scanmails3894
Kernel Audit UID(0) PID[3969]: /usr/bin/logger -i -p mail.info -t scanmails terminating
www scanmails[3969]: terminating
www sendmail[3893]: QAA03892: to=stepken@localhost, ctladdr=root (0/0), delay=00:00:09, xdelay=00:00:02, mailer=local, stat=Sent
Kernel Audit UID(0) PID[3970]: /usr/bin/tail -100 /var/log/messages
Kernel Audit UID(0) PID[3971]: /usr/bin/tail -100 /var/log/messages
www:[amavis-0.2.0-pre6]#                                                                                               

Wir wissen nun, daß unser Virenscanner korrekt arbeitet. Falls Sie eine andere Distribution verwenden, z.B. S.u.S.E. 6.3 oder Debian, dann müssen Sie nun einen TEST-Virus versenden. Der folgenden Inhalt als Attachment besitzt:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

42.5 Funktionsweise und Probleme

Der Virenscanner ist im Grunde ein Skript, welches den lokalen Auslieferungs-Agenten ersetzt, auch LDA oder MDA genannt. Sendmail ist im Grunde nur für den Empfang der Mails und die Verarbeitung zuständig. Die Auslieferung übernimmt dann entweder procmail oder einfach nur das lokale Programm mail, mit welchem Sie auch E-Mails lesen können. Auch mail kann als Ersatz für Procmail arbeiten.

Scanmails besteht aus fast 1000 Zeilen reiner Shellscript - Sprache und kann mit vielen MDA's umgehen. Sie müssen also nicht befürchten, daß Ihre aufwendigen Mailfilter aus Procmail verlorengehen.

Weiterführende Tips und Tricks finden Sie im Anhang.


Next Previous Contents