Integrazione di rete Windows Linux con SAMBA, Panoramica su SAMBA: software per la condivisione di file (ma non solo) tra Linux e Windows, Contesto,Funzionalità
Cenni sulla configurazione, Potenzialità, Linux Day 2004 Perugia, Claudio Cardinali
19. Demoni di Samba Un server Samba si compone di due principali demoni: smbd questo demone è responsabile della gestione delle risorse condivise , siano esse dischi o stampanti tra il server Samba e i suoi client, della gestione di tutti i messaggi di notifica , dell' autenticazione degli utenti . nmbd questo demone è responsabile del servizio di risoluzione dei nomi NetBIOS e di assistenza al browsing delle risorse . Questo demone è in realtà un semplice name server che imita le funzionalità di un WINS o di un NetBIOS name server. Si occupa inoltre di mantenere una lista per il browse delle risorse di rete e partecipa alla scelta del browsing. Se attivo il server WINS nmbd tiene il database dei nomi e degli indirizzi in un file chiamato wins.dat . Un demone nmbd può anche rispondere alle richieste del protocollo di browsing delle Risorse di Rete di Windows. Se nmbd è il master browser locale mantiene i databases di browsing nel file browse.dat.
26. Installazione di tutti i vari rpm relativi a samba # rpm -Uhv samba-*.rpm Preparing... ########################################### [100%] 1:samba-common ########################################### [ 25%] 2:samba ########################################### [ 50%] 3:samba-client ########################################### [ 75%] 4:samba-swat ########################################### [100%]
27. Gestione del servizio smb Per la gestione del servizio ci si può appoggiare allo script: /etc/init.d/smb o samba , specificando come parametro l'azione da eseguire, esempio start, stop o restart. Per richiamare le singole opzioni utilizzabili lanciare lo script senza argomenti # /etc/init.d/smb Usage: /etc/init.d/smb {start|stop|restart|reload|status|condrestart} Esempi di avvio, restart e stop # /etc/init.d/smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ] # /etc/init.d/smb restart Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] Starting SMB services: [ OK ] Starting NMB services: [ OK ] # /etc/init.d/smb stop Shutting down SMB services: [ OK ] Shutting down NMB services:
28.
29. I parametri di configurazione vengono forniti nella forma opzione = valore
30. Il file viene diviso in più sezioni che definiscono una share (condivisione), oltre alla sezione generale [global] . Ogni sezione si indica fra parentesi quadre: [printers]
31. Possono essere utilizzate delle variabili, precedute dal simbolo percento ( % ) all'interno dei valori (es: path = /home/%u )
32. Si può includere a smb.conf un altro file di configurazione con l'opzione include (es: include = /etc/samba/smb.conf.%a )
33.
34. Esempio base fileserver:~# smbclient -L fileserver Got a positive name query response from 127.0.0.1 ( 192.168.1.1 ) Password: Anonymous login successful Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.7-2] Sharename Type Comment --------- ---- ------- condivisa Disk Area di lavoro condivisa IPC$ IPC IPC Service (Samba 3.0.7-2) ADMIN$ Disk IPC Service (Samba 3.0.7-2) Server Comment --------- ------- FILESERVER Samba 3.0.7-2 P3 Workgroup Master --------- ------ WORKGROUP FILESERVER
35. Esempio base Avvio dei demoni smbd e nmbd: # /etc/init.d/samba start ...Starting Samba daemons: nmbd smbd. Samba è ora pronto ad accettare connessioni… – infatti dal client Windows:
36. Samba come PDC L’utilizzo del concetto di WORKGROUP può non essere sufficiente in reti aziendali. E’ quindi auspicabile l’utilizzo del DOMINIO che presenta vantaggi considerevoli quali: – Roaming Profiles – Sicurezza – Policy definite dall’amministratore – Script di logon
37. Samba come PDC Samba agisce come Primary Domain Controller sostituendo il ruolo di Windows 2000 Server nella rete. Un esempio di configurazione classico: [global] netbios name = FILESERVER workgroup = MIODOMINIO encrypt password = yes domain master = yes local master = yes preferred master = yes os level = 65 security = user domain logons = yes
38. /profiles E' possibile specificare tramite la share [profile] la risorsa che dovrà fungere da repository per tutti i roaming profile. Questa share non deve essere visualizzata nelle risorse dispobilli del server ma deve essere possibile scriverci. [profile] comment = Profili Utenti path = /share/profile create mode = 0600 directory mode = 0700 writable = yes browsable = no
39. /netlogon Share indispensabile nel caso in cui samba server faccia da PDC, permette il logon dei client nel dominio. Questa share deve avere le seguenti caratteristiche: - Il nome non è modificabile, [netlogon] - Non è possibile visualizzarla e scriverci. - Non è possibile accederci come utente guest. [netlogon] Comment = share to domain logon path = /share/netlogon public = no writable = no browsable = no
40. [homes] Home Share che visualizza in modo automatico la home dell'utente, senza dover mettere le relative entry nel file smb.conf per i singoli utenti. Tale share che prende il nome dell'utente è visibile e scrivibile solo dall'utente con cui si è eseguito il login sul server. [homes] comment = Home Directories valid users = %S read only = No create mask = 0664 directory mask = 0775 browseable = No
41. Opzione “veto files” in smb.conf Esiste la possibilità di vietare il salvataggio di files con una determinata estensione in una cartella condivisa tramite SAMBA. Occorre semplicemente aggiungere nella sezione [global] del file smb.conf (/etc/samba/smb.conf) il seguente parametro: veto files = /*.mp3/ /*.wav/ /*.mpeg/ /*.avi/ In questo caso non è permesso il salvataggio di files con estensione: mp3, wav, mpeg ed avi.
42. Samba come PDC Ora il dominio è pronto, aggiungiamo i client:
43. Samba Backend Ovvero “ i database per le informazioni sugli account ”. Samba-3 implementa una nuova caratteristica: Le nuove possibili combinazioni di backend per la gestione delle password con un guadagno in termini di flessibilità, affidbilità e scalabilità.
44.
45. include le password criptate di MS Windows e NT, oltre ad un campo per alcune informazioni sull'account.
46. La natura del backend di password non permette di immagazzinare nessuna delle informazioni SAM ( Security Account Manager - Gestore degli account di sicurezza) di Windows NT/2000 necessarie
47. usato solo per compatibilità all'indietro con vecchie versioni di Samba.
54. Non è adatto ad installazioni con controllori di dominio multipli (ad esempio, PDC più uno o più BDC ).
55. Immagazzina le vecchie informazioni di smbpasswd più le informazioni SAM estese di MS Windows NT / 2000 in un file binario di formato TDB.
56. L'inclusione delle informazioni estese rende possibile a Samba-3 implementare gli stessi controlli di accesso al sistema che sono possibili con i sistemi basati su MS Windows NT4/2000.
57.
58. Si raccomanda l'uso di questa opzione solo per i siti con meno di 250 utenti.
59. Per i siti più grandi si raccomanda l'uso di OpenLDAP.
60.
61. Samba-3 fornisce una nuova implementazione estesa di LDAP che richiede la configurazione di OpenLDAP.
62. Il file con lo schema di nuovo formato è incluso nella directory examples/LDAP nella distribuzione Samba.
63. La nuova implementazione di LDAP estende significativamente la capacità di controllo disponibili nelle versioni precedenti di Samba. Adesso è possibile specificare configurazioni dei profili , directory home , controlli di accesso all'account e molto altro utente per utente.
64.
65. Questo backend basato su un database sarà di grande interesse per i siti che vogliono far leva sulla tecnologia MySQL pre-esistente.
66.
67. L'opzione xmlsam può essere utile per la migrazioni di account da un backend di database all'altro o per backup.
68. L'uso di questo strumento permette di editare i dati prima della migrazione ad un altro backend.
72. Un terzo strumento è in sviluppo ma non si prevede che sia distribuito in tempo per Samba-3.0.0. Il nuovo strumento una GUI TCL/TK molto somigliante al Domain User Manager di MS Windows NT4.
73.
74. Funziona secondo lo schema client-server (contatta il server smbd locale per cambiare la password dell'utente)
85. Lo strumento pdbedit è l'unico in grado di gestire le impostazioni di sicurezza e le policy degli account . è capace di svolgere tutte le operazioni di smbapasswd e un loro sovrainsieme.
86.
87. Per esempio: per migrare gli account dal vecchio database smbpasswd al nuovo backend tdbsam
109. E' un protocollo che permette di accedere ad un servizio di directory (inteso come elenco dati) e far comunicare più computer con un directory server.
110. LDAP parte da un modello di dati stabiliti dallo standard X.500 ed implementa un protocollo di accesso semplificato basato sul TCP/IP (389,636) stanadardizzato dall'RFC 2251.
111.
112. Un elenco LDAP è generalmente concepito per fornire una responsività alle richieste di lettura e ricerca , può essere facilmente replicato e supporta la distribuzione del carico .
120. Sql : come gateway tra applicazioni e db. Assumeremo l'utilizzo del backend LDBM come di default...
121.
122. Un file LDIF memorizza informazioni in una gerarchia di “entry object-oriented”.
123. Tutti i pacchetti LDAP dispongono di utility che convertono i file LDIF nel formato BDB.
124.
125.
126. ObjectClass definisce un “set di attributi” che possono essere usati per definire un entry. Tutti i pacchetti LDAP definiscono di default almeno i seguenti objectclass:
130. PERSON: contiene gli attributi per schedare una persona all'interno di una directory
131. Installazione di un server LDAP (cenni) E' possibile installare OpenLDAP prelevando i sorgenti in formato .tar.gz dal sito http://www.openladap.org oppure utilizzare i pacchetti creati ad hoc per la vostra distribuzione Gnu/Linux. Ad es. Debian: # apt-get install slapd ldap-utils (Si rimanda alla documentazione ufficiale e agli howto di ogni distribuzione). Alla fine del processo di installazione tutti i binari , i file di configurazione , gli schemi di default , etc. saranno installati in opportune directory del filesystem. Occorre prestare molta attenzione alla directory /etc/ldap/ , in cui è presente il file di configurazione di slapd ( slapd.conf )
132.
133. Direttive dei backend (leggi database): queste sezioni iniziano normalmente con la direttiva database <nome_backend> , e riguardano la configurazione dei singoli database.
134. Aggiungere gli schemi Gli schemi usati dal server ldap devono essere caricati all'avvio, Senza di essi il server non sarà in grado di mappare i nomi degli attributi. # Global Directives: # Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema Definizione schemi
135. Creare gli indici Gli indici vengono definiti nel file slapd.conf # Indexing options for database #1 index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,givenname eq,subinitial index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq Dopo averli dichiarati gli indici devo essere creati con il comando slapindex ricordandosi prima di fermare il server ldap.
136. Access Control list L'accesso ai dati può essere ristretto ad un particolare insieme di utenti, e si può limitare l'accesso in lettura e scrittura alle porzioni dell'albero. access to attribute=userPassword by dn="cn=Manager,dc=csolution,dc=it" write by anonymous auth by self write by * none Definizione ACL
137. Avviare slapd Come potete leggere nel commento qui sotto, normalmente slapd parte facendo la listen solo sulla porta tcp 389 che corrisponde al servizio ldap (no ssl), per fare in modo che il vostro server ldap ascolti anche alla porta ldaps (636) occorre inserire la url ldaps:// all'interno dello script di avvio di slapd:. # slapd normally serves ldap only on all TCP-ports 389. slapd can also # service requests on TCP-port 636 (ldaps) and requests via unix # sockets. # Example usage: SLAPD_SERVICES="ldap:/// ldaps:///" Nota bene: se il vostro server ldap deve esclusivamente essere utilizzato via ssl dai client della rete conviene impostare questa voce ai valori “ ldap://127.0.0.1 ldaps:// ”, questo impedisce le connessioni in chiaro da tutti gli host della rete eccetto che dall'interfaccia di loopback.
138.
139. Utilizzando un script (molto più comodo!) smblap-populate che viene distribuito con il pacchetto smbldap-tools. Nota: smbldap-tools è scritto in perl e per essere eseguito necessità di alcuni moduli CPAN come prerequisito fondamentale.
140. ..smbldap-tools (1/3) Una volta rispettati i prerequisiti di smbldap-tools è necessario configurarlo: il file di configurazione e /etc/smbldap-tools/smbldap.conf ed i paramatri da impostare sono i seguenti: Il SID del Dominio (si ottiene con il comand “ net getlocalsid ”) SID="S-1-5-21-826166809-298217214-2959266991" Su winNT il sistema utilizza i SID Security Identifier come valore univoco al posto dei uid/gid usati in unix e i SID identificano utenti e gruppi e computer indifferentemente all'interno del dominio. Il SID utente è composto da Domain SID + RID (Relative ID), il nome dell'utente non ha alcuna importanza, quello che conta è solo il SID! (infatti gli utenti si possono rinominare tranquillamente senza nessun problema).
141. ..smbldap-tools (2/3) Una volta rispettati i prerequisiti di smbldap-tools è necessario configurarlo: il file di configurazione e /etc/smbldap-tools/smbldap.conf ed i paramatri da impostare sono i seguenti: Il SERVER LDAP: slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1" masterPort="389" ldapSSL="0" suffix="dc=csolution,dc=it" usersdn="ou=Users,${suffix}" computersdn="ou=Computers,${suffix}" groupsdn="ou=Groups,${suffix}"
142. ..smbldap-tools (3/3) Una volta rispettati i prerequisiti di smbldap-tools è necessario configurarlo: il file di configurazione e /etc/smbldap-tools/smbldap.conf ed i paramatri da impostare sono i seguenti: I Default per gli utenti: userLoginShell="/bin/bash" userHome="/home/%U" defaultUserGid="513" defaultComputerGid="515" skeletonDir="/etc/skel" userSmbHome="fileserveromesU" userProfile="fileserverrofilesU"
143. Autenticazione Samba 3 ha bisogno che il database delle password di sistema sia allineato con quello proprietario Samba. E' possibile configurare l'autenticazione del sistema affinché si serva anch'essa di LDAP avendo in questo modo un unico database centralizzato per tutti gli utenti note: prerequisito l'installazione del pacchetto nss_ldap #apt-get install libnss-ldap (NSS module for using LDAP as a naming service)
153. Name Service Switch NSS è una interfaccia che permette di demandare, a delle librerie esterne, l'accesso a informazioni riguardanti l'ambiente locale (come ad es. account utenti, password, gruppi, hosts, corrispondenze tra i nomi delle macchine e i numeri di porta). In breve svolge le operazioni di conversione UID <--> nome_utente e GID <--> nome_gruppo che servono per gli altri porgrammi. Queste definizioni vengono dichiarate all'interno del file /etc/nsswitch.conf . Il formato prevede una riga per ogni classe di informazione, nella prima colonna viene specificato il tipo di classe (di solito le keyword sono hosts, group, passwd, aliases, protocols, etc ) seguito dal carattere ' : ', poi sono possibili valori che indicano dove reperire le informazioni per quelle classi, questi valori sono identificati da parole chiavi come ldap, file, dns, db, nis , con la possibilità di specificare l'ordine in cui questi supporti vengono presi in considerazione. Un esempio di file nella prossima slide.....
154. Il file /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality . # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: files ldap group: files ldap shadow: files ldap hosts: files dns ldap networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis files: indica che la ricerca dell'oggetto è da effettuare sui files di sistema. ldap: indica che la ricerca dell'oggetto è da effettuare sul database ldap.
155. Usare ldap con PAM Per poter usare ldap con PAM si devono installare i pacchetti libpam-ldap Il programma di installazione provvede a configurare il tutto correttamente, poi basta modificare i file nella directory /etc/pam.d fileserver:/etc/pam.d# ls BACKUP cupsys other sudo chfn gdm other.dpkg-old suexec-apache chsh gdm-autologin passwd suexec-apache-ssl common-account kcheckpass passwd.dpkg-old xdm common-auth kdm ppp xscreensaver common-password kscreensaver samba common-session login ssh cron login.dpkg-old su All'interno di questa directory sono contenuti i vari file di configurazione per ogni servizio, che modificano il loro comportamento in fase di autenticazione.
156. Configurare P.A.M.: la directory pam.d common-account account sufficient pam_ldap.so account required pam_unix.so common-auth (definisce gli schemi di autenticazione da usare nel sistema) auth sufficient pam_ldap.so use_first_pass auth required pam_unix.so common-password (definisce i moduli che permettono di cambiare la password) password sufficient pam_ldap.so password sufficient pam_unix.so nullok use_authtok md5 shadow use_first_pass password required pam_deny.so common-session (definisce i moduli che definiscono i task da compiere all'inizio e alla fine di una sessione) session required pam_mkhomedir.so skel=/etc/skel/ session sufficient pam_ldap.so session required pam_unix.so
157. Come verificare il funzionamento del NSS A questo punto, se è stato tutto fatto correttamente, dovremmo poter estrarre informazioni su gruppi, utenti, shadow password, da ogni macchina della rete abilitata a usare ldap (cioè con il file libnss-ldap corettamente configurato). Per verificare usiamo il comando getent . macchina_client# getent passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync ...... ...... pallotron:x:1000:1000:Angelo Michele Failla:/home/pallotron:/bin/bash gmaggio:x:1001:1000:Gabriele Maggio:/home/gmaggio:/bin/bash administrator:x:0:1000:Account admin win:/home/Administrator:/bin/bash segreteria:x:1002:1000:account di prova:/home/segreteria:/bin/bash mgrasso:x:1003:1000:Maurizio Grasso:/home/mgrasso:/bin/bash Verifichiamo poi group e shadow nella medesima maniera.
158. Configurare Samba: Premesse Adesso vedremo come configurare un server SAMBA (versione 3) come PDC utilizzando ldap come backend per utenti e gruppi . Bisogna configurare la parte strettamente specifica a Samba nel file /etc/samba/smb.conf
159. Configurare Samba: il file smb.conf [global] workgroup = CSOLUTION netbios name = Fileserver server string = SAMBA-LDAP PDC Server ... #unix password sync = Yes #passwd program = /usr/local/sbin/smbldap-passwd -u %u #passwd chat = "Changing password for*New password*" %n "*Retype new password*" %n" ldap passwd sync = Yes ... ; SAMBA-LDAP declarations passdb backend = ldapsam:ldap://127.0.0.1/ # ldap filter = (&(objectclass=sambaSamAccount)(uid=%u)) ldap admin dn = cn=Manager,dc=csolution,dc=it ldap suffix = dc=csolution,dc=it ldap group suffix = ou=Groups ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap ssl = start_tls add machine script = /usr/local/sbin/smbldap-useradd -w "%u" add user script = /usr/local/sbin/smbldap-useradd -m "%u" ldap delete dn = Yes #delete user script = /usr/local/sbin/smbldap-userdel "%u" add machine script = /usr/local/sbin/smbldap-useradd -w "%u" add group script = /usr/local/sbin/smbldap-groupadd -p "%g" #delete group script = /usr/local/sbin/smbldap-groupdel "%g" add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u" ... Dos charset = 850 Unix charset = ISO8859-1
160. Migrazione tbsam --> ldapsam Se state migrando da una installazione Samba3con backend diverso da LDAP, potete utilizzare pdbedit per effettuare la migrazione: # pdbedit -b tdbsam -g -e ldapsam # pdbedit -b tdbsam -u -e ldapsam Questi due comandi porteranno prima i gruppi e poi gli utenti dal backend tbsam al backend ldapsam.
161. Come joinare le macchine al dominio Per cambiare la password dell'account Administrator utilizziamo il comando smbpasswd. smbpasswd -w <nostra_pass_segreta> Dopo questo comando la password sarà modificata e possiamo joinare le nostre macchine al dominio. Per fare ciò occorre inserire un account per ogni macchine all'interno dell'elenco LDAP ou=Computers,dc=csolution,dc=it (supponiamo il joining al dominio da parte di un client Windows 2000 e di un client indows XP) #smbldap-useradd -w CLIENT2k #smbldap-useradd -w CLIETXP il flag -w serve a specificare che si tratta di un “account macchina” e non un utente.
162. Il groumapping POSIX <--> Samba Se la vostra è un rete etorogenea, fatta di macchine Linux e Windows, che accedono a directory condivise da un fileserver (le macchine windows con samba, quelle linux ad es. Tramite NFS o altri filesystem di rete), può sorgere la esigenza di mappare i gruppi posix con quelli di windows, e viceversa , in modo da non avere noie e problemi con i permessi. Questo si realizza con la utility net messa a disposizione dal comando samba (dopo aver aggiunto il gruppo samba al vostro elenco ldap) fileserver:~# net groupmap list System Operators (S-1-5-32-549) -> manager grafici (S-1-5-21-1319615927-900196694-2235752281-3005) -> grafici [snip] Domain Admins (S-1-5-21-1319615927-900196694-2235752281-512) -> manager Domain Users (S-1-5-21-1319615927-900196694-2235752281-513) -> users Power Users (S-1-5-32-547) -> manager Print Operators (S-1-5-32-550) -> manager Administrators (S-1-5-32-544) -> manager Account Operators (S-1-5-32-548) -> manager Users (S-1-5-32-545) -> users programmatori (S-1-5-21-1319615927-900196694-2235752281-3003) -> programmatori La mappatura si realizza con il comando: net groupmap add unixgroup=<nome_gruppo> type=domain ntgroup=<gruppo win>
163. Alcuni tools di amministrazione: LAM e phpLDAPadmin E' irragionevole gestire un dominio con i soli comandi di shell!! Per questo vengono in aiuto delle interfaccie, alcune binarie altre direttamente web, che permettono di gestire gli account, i gruppi, e le macchine. LAM è uno di questi. La cosa più interessante di questo tool è che permette di gestire sia gli account posix che quelli samba in modo integrato. Permette di impostare le password , gli expire , i path dei profili windows e delle home unix , di parametrizzare gli script bat di logon per ogni utente. Ha anche la possibilità di definire dei template di profilo. PhpLDAPadmin è invece un'applicativo php per l'accesso generale alla struttura dell'elenco, con esso è possibile browsare e modificare l'elenco in ogni singolo punto dell'albero, aggiungere attributi e classi ad un entry.
167. ClamAV: Antivirus per Linux ClamAV è uno dei più interessanti progetti OpenSource per lo scanning di virus. Rilasciato sotto GPL è disponibile per varie piattaforme *nix (Linux, *BSD, Solaris, MacOs X, lo stesso CygWin... ). Database in costante aggiornamento (24h). La versione analizzata 0.8x identifica più di 26000 virus ed è in grado di scompattare file compressi e di analizzare documenti di Office per Macro virus. NON corregge i file infetti , ma, nella sua applicazione più comune (antivirus correlato ad un sistema di posta) questa mancanza è assolutamente ininfluente.
168. Installazione clamav E' possibile scaricare sorgenti e binari precompilati per diverse distribuzioni dal sito ufficiale www.clamav.net . Per compilare ClamAv è necessario avere i seguenti pacchetti: zlib, zlib-devel, oltre ovviamente alla suite gcc. Sono inoltre consigliati bzip2, bzip2-devel, gmp. apt-get install clamv clamav-base clamav-freshclam libclamav1
169. vscan samba-vscan è un modulo “proof-of-concept” per samba che fornisce un supporto all'antivirus diretto “on-access” per i file condivisi attraverso un server Samba. samba-vscan supporta diversi tipi di antivirus : ClamAV , FRISK F-Prot Daemon, F-Secure AV, Kaspersky AntiVirus, McAfee/NAI uvscan, mks32, OpenAntiVirus ScannerDaemon, Sophos Sweep, Symantec AntiVirus Engine (via ICAP), Trend Micro. Link: http://www.openantivirus.org/projects.php#samba-vscan