Aus Linux-Magazin 10/2006

Workshop: Drei Varianten, einen Echtzeit-Antiviren-Scanner an Samba-Server anzukoppeln

Mit jedem Windows-Client im Netzwerk steigt das Risiko für Vireninfektionen, auch auf Fileservern. Obwohl ein Samba-Server selbst kaum gefährdet ist – oder vielleicht gerade deshalb -, ist er der ideale Ort für einen Scan auf Malware, am besten sofort beim Erzeugen einer jeden Datei.

Auf Linux(-Servern) lauffähige Antiviren-Software gibt es vielerlei. Sinnvoll ist deren Einsatz eigentlich nur, wenn dort auch andere Betriebssysteme Daten ablegen. Für einen Samba-Fileserver im heterogen Netz trifft genau dies zu. Die meisten Setups scannen zyklisch im Hintergrund den Fileserver auf Malware. Eleganter arbeiten Echtzeitscanner, die bei jeder Datei-Operation anspringen und on the Fly nach Schädlingen suchen.

Die technische Eleganz erkauft man jedoch mit erhöhtem technischen Aufwand, denn das Setup muss Scanner, Samba und das lokale Dateisystem richtig miteinander verheiraten. So wundert es nicht, dass genau dafür geeignete Virenscanner etwas rar sind. Der Workshop beschränkt die Auswahl noch etwas und zeigt Schritt für Schritt, wie Sie Clam AV (eine Variante) und Avira Antivir Personal Edition Classic (zwei Varianten) mit Samba verschalten.

Als Testrechner dient ein Pentium 4 D mit 512 MByte RAM, PATA-Festplatte und Mandriva Linux. In der Distribution läuft Samba 3.0.20 mit drei freigegebenen Shares: ein öffentliches (»[public]«), die beiden anderen erfordern eine Authentifizierung. Ansonsten bleibt die »smb.conf«-Datei im Wesentlichen unangetastet (siehe Abbildung 1).

Abbildung 1: Dieses Stück der »smb.conf«-Datei des Testrechners etabliert drei Freigaben - eine öffentliche und zwei mit Authentifizierung.

Abbildung 1: Dieses Stück der »smb.conf«-Datei des Testrechners etabliert drei Freigaben – eine öffentliche und zwei mit Authentifizierung.

Der einfachste Weg, einen Echtzeit-Virenscanner anzuflanschen, führt über die Integration eines so genannten VFS-Objekts. Unter einem Virtual File System ist hier ein Softwaremodul zu verstehen, das neue Funktionen bereitstellt, im gegebenen Fall das Virus-Scanning. Das VFS-Objekt implementiert in das Samba ein solches VFS als eigenes Modul. Dazu ist das Paket Samba-Vscan [5] nötig. Wahrscheinlich führt es Ihre Distribution in ihrem Paket-Repository. Zusammen mit dem Paket installieren Sie den Virenscanner. Der Autor dieses Beitrags hat die Scanner Clam AV [1] und Avira Antivir [2] mit Erfolg getestet. Eine Internetrecherche ergab, dass Gleichwertiges auch mit Symantec-Produkten [3] unter Zuhilfenahme der Vscan-ICAP-Schnittstelle, Bitdefender for Samba 3 [4] und ein paar anderen funktioniert.

Variante 1: Mit Clam AV

Nach der Installation von Samba-Vscan und des Pakets »Vscan-ClamAV« [1] konfigurieren Sie den Virenscanner. Dazu entfernen Sie in der Konfigurationsdatei »/etc/clamav.conf« beziehungsweise »/etc/clamd.conf« die Kommentarzeichen in der zweiten und dritten Zeile von:

LocalSocket /var/lib/clamav/clamd-socket
# TCPSocket 331
# TCPAddr 127.0.0.1

Der Clam-AV-Daemon läuft gewöhnlich mit den Rechten eines eigenen Users. Diese Rechte gestatten ihm aber nicht, in allen Verzeichnissen der Samba-Shares zu schreiben. Sie müssen darum entweder den Clam-AV-User mit entsprechend robusten Rechten ausstatten – was nicht in jedem Fall einfach ist. Oder Sie ändern den Clam-AV-User auf Root. Dazu modifizieren Sie die betreffende Zeile in der »/etc/clamd.conf« auf »User root«.

Anschließend starten Sie Clam AV neu, meist per »/etc/init.d/clamav restart«, unter Suse-Linux mit »rcclamd restart«. Falls die eigene Setup-Routine es noch nicht erledigt hat, kopieren sie die »vscan-clamav.conf« aus »/usr/share/doc/clamav« nach »/etc/samba/«. In dieser Datei ändern Sie die Zeile

infected file action = nothing

folgendermaßen, da sonst der Virenscanner zwar Zugriffe verhindert, die Datei aber dann am Ort des Geschehens liegen bleibt:

infected file action = quarantine

Den zugehörigen Parameter »quarantine directory = /tmp«, also die Lage des Quarantäne-Verzeichnisses, können Sie den eigenen Vorlieben anpassen. Wichtig ist der Pfad auf den Socket des Scanners: »clamd socket name = /var/run/clamd«, bei Suse ist er »/var/lib/clamav/clamd-socket«. Wer mehr Hilfe beim Debuggen will, sollte noch

verbose file logging = no

auf »yes« setzen. Für alle anderen Optionen geht\’s nach Gusto, die Datei ist gut kommentiert.

Nun konfigurieren Sie die »/etc/samba/smb.conf« passend für den Virenscanner. Das geschieht, indem Sie das besagte VFS-Objekt in Listing 1 erzeugen lassen. Jetzt bleibt noch Samba mit »/etc/init.d/samba restart« neu zu starten, Suse-Roots geben »rcsamba restart« ein. Fertig. Nun dürfen Sie das Setup testen.

Listing 1:
»smb.conf« für Clam AV

01 [freigabe1]
02 comment = Freigegebenes Samba-Verzeichnis
03 vfs object = vscan-clamav
04 vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
05 read only = No
06 browseable = No
07 path = /home/foobar
08 valid users = foobar

Variante 2: Mit Avira Antivir und Vscan-Antivir

Wenn Sie statt Clam AV die kostenfreie Antivir Personal Edition Classic von der Avira GmbH verwenden, verfahren Sie ähnlich. Beim Testsystem mit Mandriva, wie bei vielen anderen Distributionen auch, sind allerdings die Pakete nicht über die Paketverwaltung erhältlich. Sie müssen sie selbst kompilieren. Ist die aktuelle Version von [2] heruntergeladen, extrahieren Sie diese zunächst mit »tar -xvzf antivir-workstation-pers.tar.gz«. Dort abgelegt führen Sie das »./install«-Skript aus (Abbildung 2).

Abbildung 2: Nach dem Herunterlanden und Entpacken von Avira Antivir installiert ein Skript den kostenlosen Scanner.

Abbildung 2: Nach dem Herunterlanden und Entpacken von Avira Antivir installiert ein Skript den kostenlosen Scanner.

Vscan-Antivir und Samba verheiraten

Nach diesen Schritten dürfen Sie sich dem Vscan-Antivir [5] widmen, das Sie schon aus Variante 1 kennen. Diesmal benötigen Sie auch die Samba-Sourcen – natürlich in der gleichen Version wie die installierten Binaries. Auf dem Mandriva-Testsystem war das 3.0.20. Im Samba-Quellverzeichnis starten Sie zur Begrüßung das »./configure«-Skript und danach »make proto«.

Kopieren Sie die Vscan-Antivir-Sourcen nach »Samba-Sourcen/examples/VFS/« und wechseln gleich dorthin. Jetzt führen Sie »./configure« aus und kompilieren das Ganze mit »make« (siehe Abbildung 3) und »make install«. (Alternativ zum Kopieren der Vscan-Antivir-Sourcen in die Samba-Sourcen hätten Sie auch Configure mit dem Parameter »–with-samba-source=Pfad_zu_Samba« aufrufen können.) Aus dem Source-Verzeichnis kopieren Sie die Datei »vscan-antivir.conf« nach »/etc/samba«. Die modifizieren Sie dann analog zur »vscan-clamav.conf«-Datei bei Variante 1, legen also primär die Quarantäne-Einstellungen fest.

In der »smb.conf«-Datei muss in jeder Freigabe Folgendes stehen:

vfs object = vscan-antivir
vscan-antivir : config-file = /etc/samba/vscan-antivir.conf

Auch Antivir sollten Sie mit den neuesten Virendefinitionen füttern. Der Befehlt lautet »antivir-update«. Bevor Sie den Avguard von Antivir scharf schalten, werfen Sie einen Blick in dessen Steuerdatei »/etc/avguard.conf«. Fahnden Sie nach Überwachungs-Einträgen mit Verzeichnissen, auf die Vscan-Antivir gleich zugreifen möchte. Wenn Sie einen zu deaktivieren verpassen, regnet es Zugriffsrechte-Fehlermeldungen. Als Höhepunkt und Finish starten Sie Samba:

/etc/init.d/samba restart

Zum Schluss sollten Sie sich klarmachen, wie das Scannen einer Datei auf dem Samba-Share abläuft.

Abbildung 3: Die Antivir-Sourcen integrieren Sie in die Samba-Quellen und kompilieren anschließend das Duo.

Abbildung 3: Die Antivir-Sourcen integrieren Sie in die Samba-Quellen und kompilieren anschließend das Duo.

Und so funktioniert’s

Wenn der Benutzer am SMB-Client die Datei öffnet, gelangt die Anfrage vom Client an den Samba-Server. Die Samba-Freigabe ist per Setup mit einem VFS-Objekt – und damit indirekt mit dem Virenscanner – verbunden. Vscan-Antivir und der Virenscanner, der dazu in einem speziellen Servermodus läuft, kommunizieren also parallel zu den Samba-Zugriffen (Abbildung 4).

Abbildung 4: Der Ablauf bei Variante 2: Wenn der SMB-Client eine Datei-Operation auf eine Freigabe einleitet, aktiviert das VFS-Objekt im Samba-Server zugleich den Virenscanner. Die blauen Pfeile zeigen den Vorgang ohne Virenscanner.

Abbildung 4: Der Ablauf bei Variante 2: Wenn der SMB-Client eine Datei-Operation auf eine Freigabe einleitet, aktiviert das VFS-Objekt im Samba-Server zugleich den Virenscanner. Die blauen Pfeile zeigen den Vorgang ohne Virenscanner.

Bevor also die normale Samba-Open-Operation das Dateisystem erreicht, scannt Antivir die Datei. Fällt der Test positiv aus, weil die Datei gemeingefährlichen Code enthält, schickt der Virenscanner statt der verlangten Daten eine Access-Denied-Meldung an den Samba-Server. Der Benutzer erhält in deren Folge von seinem Client-System eine Zugriff-verweigert-Meldung.

Je nach Konfiguration verschiebt der Virenscanners die Datei entweder in das angegebene Quarantäne-Verzeichnis, löscht sie oder ignoriert den Fehler. Der Administrator des Servers erhält in jedem Fall eine Benachrichtigung, sie erscheint im Dmesg und in den Samba-Logdateien.

Variante 3: Antivir mit Dazuko

Variante 2 kämpft prinzipbedingt mit einem Performance-Nachteil, da sich die Komponenten im Kernel- und im Userspace über jede Dateioperation recht mühsam verständigen müssen. Sie können Avira Antivir jedoch auch ohne das Vscan-Modul in Betrieb nehmen. Dazuko (Datei-Zugriffskontrolle), ein Linux-Kernelmodul unter der GPL/BSD-Lizenz, das ein Device (»/dev/dazuko«) etabliert, übernimmt dabei die On-Access-Kontrolle für SMB-Zugriffe. Das Modul arbeitet schneller, da es seine Informationen innerhalb des Kernelspace bezieht.

Für Variante 3 ändern Sie nun die Avguard-Konfiguration und laden das Dazuko-Kernelmodul. Letzteres passiert beim Avguard-Start automatisch. Außer bei Suse-Linux fehlt aller Voraussicht nach Dazuko in Ihrem Kernel. Die Sourcen gibt es auf der Projektseite [6], die Linux-Quellen brauchen Sie auch.

Dazuko wiederum verlangt, dass der Kernel den Security Mode unterstützt. Die erforderliche Einstellung »[M]« wie Modul verrichten Sie im Zuge des Kernel-»make menuconfig« unter »Security Options | Enable different Security Models | Default Linux capabilities«. Um das Kernelmodul ins System zu befördern, führen Sie die Befehle

make modules
make modules_install
depmod
modprobe capability

aus. Haben Sie auch Dazuko installiert, müsste nun »./install« von Antivir positiv ausfallen.

Avguard und Dazuko

Sie konfigurieren Avguard so, dass er die freigegebenen Ordner von Samba mit überwacht. Dazu ändern Sie in der »/etc/avguard.conf«-Datei die jeweiligen »IncludePath«- und »ExcludePath«-Angaben. Dazuko erkennt nun auch Samba-Zugriffe: Es gestattet oder lehnt Zugriffe ab und übergibt alle »open()«-Anfragen an das Dateisystem an den Virenscanner.

Einen Nachteil hat der Betrieb ohne das Vscan-Modul jedoch: Während Vscan-Antivir sowohl On-Close- als auch On-Open- und On-Exec-Aktionen kennt, behandelt Dazuko lediglich On-Open-Operationen. So bleiben Dateien vorerst ungescannt, wenn sie ein SMB-Client in ein Samba-Share ablegt. Erst wenn der Client die Datei liest, ausführt, umbenennt oder verschiebt, findet eine Datei-»open()«-Operation statt. Dann erst hat Dazuko die Möglichkeit, die Datei Avguard zu überantworten. Der handelt beim Erkennen einer Malware seiner Konfigurationsdatei gemäß, verschiebt also die Datei in den Quarantäne-Ordner.

Nach dem gleichen Kernel-basierten Strickmuster wie Antivir plus Dazuko arbeiten übrigens Sophos Antivirus, Trend Micro Server Protect, Kaspersky Antivirus und F-Secure Antivirus.

Funktionalität kostet Geschwindigkeit

Das Abfangen der Datei-»open()«-Operationen in Samba und das Scannen der Datei-Inhalte fordern mutmaßlich ihren Preis in Form von Einbußen bei der Performance. Darum tun hier Benchmark-Messungen not. Dazu hat das Linux-Magazin die Übertragungsraten eines Samba-Clients auf den oben beschriebenen Samba-Server gemessen (siehe Kasten “So haben wir getestet”).

So haben wir
getestet

Als Benchmark benutzte das Linux-Magazin Smbclient, das Teil der Samba-Distribution ist. Um Einflüsse des Netzwerks auszuschließen, lief das Tool selbst auch auf dem Samba-Server. Das Programm zeigt für jede Datei eine Übertragungsgeschwindigkeit an sowie die durchschnittliche Geschwindigkeit pro Session (siehe Abbildung 6). Der Benchmark lief pro Konfiguration mehrfach, um Caching-Einflüsse zu begrenzen, die Tester mittelten die Ergebnisse am Schluss arithmetisch.

Abbildung 6: Smbclient schreibt und liest Dateien vom Fileserver und misst dabei den Datendurchsatz.

Abbildung 6: Smbclient schreibt und liest Dateien vom Fileserver und misst dabei den Datendurchsatz.

Smbclient bekam während jedes Testlaufs ein Verzeichnis zum Lesen und Schreiben vorgesetzt, das rund 1 GByte Daten enthielt. Darin lagen ein 600 MByte großes CD-ISO-Image, ein Tar-Archiv mit kleinen Textdateien, außerdem zahlreiche Bilder und Windows-Binaries. Die Zusammenstellung versuchte also möglichst viele Arten von Dateien (große und kleine, Ascii und binär) abzubilden und so der Realität eines Fileservers sehr nahe zu kommen.

Der Unterschied zwischen den gemessenen Lese- und Schreibzugriffen erklärt sich aus den Vorzügen des Samba-Schreibpuffers. Der muss nämlich erst volllaufen, bevor Linux zeitraubend auf die Platte greift. Beim Lesen bemüht es dagegen die Platte gleich. Die Dimension des Schreibpuffers ist konfigurierbar. Zu groß sollten Sie ihn aber nicht wählen, denn irgendwann werden die Schreibprozesse wieder langsamer. Während des vorliegenden Benchmarktests war der Puffer optimal auf das darunter liegende Dateisystem abgestimmt.

Um nicht Äpfel und Birnen miteinander zu vergleichen, beschränkten sich die Messungen auf die vom Autor bevorzugten Varianten 2 und 3, beide mit Avira Antivir. Zum Vergleich dienten Messungen ohne jeden Virenscanner.

Das Ergebnis in Abbildung 5 zeigt erwartungsgemäß, dass Performanceverluste beim Einsatz von Antiviren-Software messbar sind. Zwischen Vscan-Antivir und Dazuko-Antivir sind die Unterschiede dagegen marginal. Offenbar macht sich das Hin- und Herreichen zwischen Kernel- und Userspace in der Praxis kaum bemerkbar, so beim Schreiben: 900 KByte/s zu 740 KByte/s. Zum Vergleich: Ohne On-Access-Scanner lag der Durchschnitt bei 1020 KByte/s. Generell sind solche Ergebnisse mit einer gewissen Skepsis zu interpretieren, da die Leistung auch von der Konfiguration des Scanners abhängt.

Abbildung 5: Durchschnittliche Benchmark-Ergebnisse beim Schreiben und Lesen von Dateien auf dem Samba-Server. Vergleich zwischen den Varianten 2 und 3 sowie ohne Virenschutz.

Abbildung 5: Durchschnittliche Benchmark-Ergebnisse beim Schreiben und Lesen von Dateien auf dem Samba-Server. Vergleich zwischen den Varianten 2 und 3 sowie ohne Virenschutz.

Fazit: Eine der Antivir-Varianten ist Favorit

Von allen drei Varianten gefiel den Testern die dritte, also Antivir ohne Vscan-Modul am besten. Trotz Lücke beim On-Close-Scannen erfüllt Dazuko alle Erwartungen an einen Echtzeit-Virenscanner, sperrt sofort den Dateizugriff auf Schadcode und ist schnell. (jk)

Infos

[1] Clam AV für Linux: [http://www.clamav.net]

[2] Antivir Personal Edition Classic von Avira: [http://www.free-av.de]

[3] Kaspersky Antivirus für Samba Server: [http://www.kaspersky.com/de/kavsambaserverbo]

[4] Bitdefender for Samba 3 von Softwin: [http://www.bitdefender.de/PRODUCT-11-de–bitdefender-for-samba.html]

[5] Samba-Vscan-Modul, die Samba-Implementation für Clam AV und Antivir: [http://www.openantivirus.org]

[6] Dazuko-Projekt: [http://www.dazuko.org]

[7] Linux-Usergroup Norderstedt: [http://www.lug-norderstedt.de]

Der Autor


Florian Osses ist Auszubildender zum Fachinformatiker Systemintegration und Mitglied der Linux-Usergroup Norderstedt [7]. Die dort diskutierten Themen sind nach seiner Meinung ebenso vielfältig wie die Vereinsmitglieder. Dieser Artikel entstand im Zuge der Dokumentation eines Samba-Projekts.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben