PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : samba-vscan (on-access virus scanning with Samba)



Iluminat23
20.07.08, 14:31
Da ich in "FAQ Tips" kein Beiträge erstellen kann erstelle ich das mal hier (Woops, wollte es in "Linux in heterogenen Netzen" rein hauen. Wenn es sich als brauchbar herreusstellen sollte kann es ein Mod ja verschieben.

Hier soll erklärt werden, wie man Samba3 mit einen Virenscanner ausstatten kann ohne dafür ein extra Kernelmodul zu installieren, wie bei Dazuko. Hierfür nutzen wir die Eine Erweiterung für Samba welches VFS nutzt. Unter [1] ist die Beschreibung des Moduls zu finden. Leider scheint die Entwicklung des Modules zum Stehen gekommen sein, doch bei mir funktioniert es trotzdem sehr gut (samba-3.0.28a).

Was zum Erstellen der Module benötigt wird:

Den Code des samba-vscan Moduls. [2]
Ich habe samba-vscan-0.3.6c-beta5 verwendet [3]
Den Quellcode des auf dem Zielsystem laufenden Samba
Wird benötigt um das Modul zu kompilieren, Samba selbst muss dabei nicht neu kompiliert werden.
Siehe Anhang A für Informationen zu verschiedenen Distributionen (Debian, gentoo)
Ein Kompilier (Idealerweise die gleiche Version mit der auch Samab kompiliert wurde.) und eventuell noch einige Headerdateien (z.B. heißen die libc-Header bei Debian libc6-dev).


Erstellen, Installieren und Einrichten der Module Schritt für Schritt:

Sambasourcen vorbereiten:

cd /[SAMBA-SOURCEN]/source/
./configure
make proto


Entpacken der samba-vscan-Sourcen:
[code]cd ../examples/VFS
tar xvzf /[PFAD_ZUM_ARCHIV]/samba-vscan-0.3.6c-beta5.tar.gz
mv samba-vscan-0.3.6c-beta5 samba-vscan
cd samba-vscan


Erstellen der Module

./configure
Wenn die Sambaversion nicht automatisch erkannt wird kann, weil eure Distribution den Versionsstring manipuliert hat, versucht es mit der Option --with-samba-version=VERSION. Dies sieht dann z.B. so aus:
[code]./configure --with-samba-version=3.0.28a[code]
Hier bitte sachen die euer Distributor eingefügt hatte weg lassen, als nicht soetwas als String angeben: 3.0.28a-debian-r8.
Nach dem ./configure erhält man eine liste der unterstüzten Module:
[code]Compile samba-vscan backends : oav sophos fprotd fsav trend icap mksd kavp clamav nai antivir
Man kann nun einzelne Module oder alle aufeinmal erstellen. Um alle Module zu erstellen muss man einfach make eingeben:
make
Um ein oder mehrer Module zu bauen kann man folgendes eingeben:

make MODULNAME1 MODULNAME2 ... also um nur das clamav-Modul zu erstellen muss folgenden gemacht werden.

make clamav

Installieren der Module
Je nach Distribution muss das Modul an eine andere Stelle installiert werden. Unter Debian und unter gentoo ist es
/usr/lib/samba/vfs. make install würde die module nach /usr/local/samba/lib/vfs installieren. Somit sollten die Module von Hand kopiert werden.

cp vscan-*.so /usr/lib/samba/vfs Die Module haben das Namensschema: vscan-<Produkt>.so bei clamav: vscan-clamav.so.

Die Konfiguration der Module
Es wird noch eine Konfigurationsdatei für die Module benötigt. eine Beispieldatei liegt dem samba-vscan Archiv bei. Diese sollte man in das Verzeichnis mit den Samba-Konfigurationsdateien kopieren. Für den einsatz von clamav sähe dies so aus:

cp clamav/vscan-clamav.conf /etc/samba/[code]

Nun muss die smb.conf noch angepasst werden, hier ein Beispieleintrag für clamav aussehen könnte:
[code][vscan]
comment = virus-protected /tmp directory
path = /tmp
vfs object = vscan-clamav
vscan-oav: config-file = /etc/samba/vscan-clamav.conf
writeable = yes
browseable = yes
guest ok = yes


Somit sollte samba-vscan laufen (es muss natürlich noch der entsprechende Virenscanner installiert sein, für vscan-clamav muss der clamd installiert sein). es können noch viele einstellungen in den Konfigurationsdateien zu den einzelnen Modulen getätigt werden, diese sind aber ausreichend gut Dokumentiert. Auch die Datei INSTALL in samba-vscan Archiv ist sehr Ausführlich und sollte bei Problemen mit dieser Anleitung sicher helfen können. Dort sind auch wege erklärt wie man samba-vscan mit sambaversionen < 3 installiert und noch einiges mehr.


Anhang

Installation der Samba Sourcen
Debian

apt-get source samba
Installiert die Sourcen ins Aktuelle Verzeichnis. Es kann nötig sein, dass noch 'dpkg-dev' installiert werden muss.

apt-get install dpkg-dev
Dies installiert auch gleich den Kompiler und nötige Libraries mit.

gentoo

emerge -1 samba
Den emerger laufen lassen, bis angefangen wird zu Kompilieren. Dann mit Strg-C abbrechen. Die Sourcen liegen dann im Verzeichnis:
/var/tmp/portage/net-fs/samba-[VERSION]/work/samba-[VERSION]/


__________________
[1] OpenAntiVirus Projects (http://www.openantivirus.org/projects.php) - samba-vscan (on-access virus scanning with Samba)
[2] OpenAntivirus Downloads (http://www.openantivirus.org/download/)
[3] samba-vscan-0.3.6c-beta5.tar.gz (http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz)


Viel erfolg mit samba-vscan.

-- iluminat23

der_angler
02.08.11, 12:10
Hi,
ich weiß der Thread ist ein wenig älter. Aber ich hoffe er ist immernoch aktuell.
Ich wollte meine Sama-Freigaben zuhause automatisch auf Viren untersuchen lassen, und die einzige "live" Lösung die ich gefunden habe ist clamav + samba. Leider sind die meisten Threads dazu sehr alt und bringen mich deshalb nicht weiter.
Ich habe dann diesen Thread gefunden und fand die Anleitung hier bisher am besten.
Ich schaffe es auch bis zum konfigurieren des samba-vscan Moduls, aber kann dann die einzelnen Module nicht erzeugen.
Nebenbei nutze ich gentoo Linux. Aber jetzt erstmal mehr Details
emerge --version
Portage 2.1.10.3 (default/linux/x86/10.0/desktop/gnome, gcc-4.4.5, glibc-2.12.2-r0, 2.6.38-gentoo-r6 i686)
Ich habe die Samba-Sourcen folgendermassen entpackt
server ~ # cd /usr/portage/net-fs/samba/
server samba # ebuild samba-3.4.12.ebuild unpack
>>> Existing ${T}/environment for 'samba-3.4.12' will be sourced. Run
>>> 'clean' to start with a fresh environment.
* samba-3.4.12.tar.gz RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
* checking samba-3.4.12.tar.gz ;-) ... [ ok ]
* Package: net-fs/samba-3.4.12
* Repository: gentoo
* Maintainer: samba@gentoo.org
* USE: acl avahi client elibc_glibc fam kernel_linux netapi pam readline server smbclient syslog userland_GNU x86
* FEATURES: sandbox
>>> It appears that 'samba-3.4.12' is already setup; skipping.
>>> Remove '/var/tmp/portage/net-fs/samba-3.4.12/.setuped' to force setup.
>>> Checking samba-3.4.12.tar.gz's mtime...
>>> WORKDIR is up-to-date, keeping...

Danach bin ich in den Ordner mit den Sources gegangen, leider findet sich im Samba-Verzeichnis kein Ordner "source" wie im Thread beschrieben, sondern jeweils ein Ordner "source3" und "source4" .... ich gehe davon aus das damit Samba3 oder Samba4 gemeint ist und habe dann einen Sym-Link von "source3" -> "source" erzeugt.
server ~ # cd /var/tmp/portage/net-fs/samba-3.4.12/work/samba-3.4.12/
server samba-3.4.12 # ls
codepages howto4.txt MAINTAINERS packaging4 Read-Manifest-Now selftest swat2.txt WHATSNEW4.txt
COPYING lib Manifest pcp README source3 testdata WHATSNEW.txt
docs libcli merged-branches.txt PFIF.txt README.Coding source4 testprogs
docs-xml librpc nsswitch pidl release-scripts swat tests
examples m4 packaging prog_guide4.txt Roadmap swat2 testsuite
server samba-3.4.12 # ln -sf source3 source
server samba-3.4.12 #

danach habe ich dann laut deiner Anleitung weitergemacht und die Samba-Source vorbereitet.
server samba-3.4.12 # cd source
server source # ./configure
wenn ich nun versuche ein "make proto" abzusetzen, passiert folgendes
server source # make proto
make: Für das Ziel »proto« ist nichts zu tun.

Okay, Fehler Nummer 1.

Aber ich habe es trotzdem weiterversucht

server source # cd ../examples/VFS/
server VFS # cd samba-vscan/
server samba-vscan # ls
aclocal.m4 clamav configure f-secure install-sh nai samba-2.2.0a-vfs.dif sophos
antivir config.guess configure.in global kaspersky NEWS samba-2.2.1a-vfs.dif symantec
AUTHORS config.log COPYING icap Makefile old samba-2.2.2-vfs.dif TODO
autogen.sh config.status FAQ include Makefile.in openantivirus samba-2.2.3-vfs.dif trend
ChangeLog config.sub fprot INSTALL mks README samba-configure.in-fbsd-libdl.dif VERSION
server samba-vscan # ./configure
Das ganze lief auch erfolgreich durch, siehe

server samba-vscan # ./configure
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking for library containing strerror... none required
checking whether gcc and cc understand -c and -o together... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking config.cache system type... same
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for inet_aton... yes
checking ability to build shared libraries... true
checking linker flags for shared libraries... -shared
checking compiler flags for position-independent code... -fPIC
checking for suffix of position-independent code... po
checking whether building shared libraries actually works... yes
checking for Samba Version... "3.4.12"
checking whether to use libclamav... no
checking whether use libmksd as builtin... auto
checking libmksd.h usability... no
checking libmksd.h presence... no
checking for libmksd.h... no
checking for mksd_connect in -lmksd... no
checking whether to use libmksd as builtin or system... builtin
checking whether use libkavdc as builtin... auto
checking kavclient.h usability... no
checking kavclient.h presence... no
checking for kavclient.h... no
checking for KAVConnect in -lkavdc... no
checking for KAVConnect in /usr/lib/kavdclib.so... no
checking whether to use libkavdc as builtin or system... builtin
checking whether to build Symantec module... no
checking whether to build only libmksd and libkavdc as shared libs... no
checking for filetype support... auto
checking magic.h usability... yes
checking magic.h presence... yes
checking for magic.h... yes
checking for magic_load in -lmagic... yes
checking whether to use filetype support... yes
checking for regexp-exclude support... auto
checking pcre.h usability... yes
checking pcre.h presence... yes
checking for pcre.h... yes
checking for pcre_exec in -lpcre... yes
checking whether to use regexp-exclude support... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating include/vscan-config.h

** Configuration summary for samba-vscan 0.3.6c beta5 :

Compile samba-vscan for Samba : "3.4.12"
Compile samba-vscan with sources in: ../../../source
Compile samba-vscan backends : oav sophos fprotd fsav trend icap mksd kavp clamav nai antivir
Use GLOBAL_LIBS : -lpcre -L/usr/lib -lpcre -lmagic
Use libmksd as : builtin
Use libkavdc as : builtin

Now type "make" to build all mentioned backends.
Or "make <backend> {<backend>}" to build only specific backend(s).
On *BSD systems please use GNU make (gmake) instead of BSD make (make).
Und danach wollte ich die module per "make clamav" bauen lassen, das geht jedoch leider nicht
server samba-vscan # make clamav
Makefile:69: *** Rekursive Variable »FLAGS« referenziert sich (schlieÃlich) selbst. Schluss.

So, das ist Fehler Nummer 2 ... und ich bin damit am Ende mit meinem Latein.

Kann mir jemand weiterhelfen, oder ist die Lösung clamav + samba mittlerweile so out-of-date und es gibt eine bessere, neuere?

der_angler
05.08.11, 10:09
keiner eine Idee?