Não é preciso descrever como é importante em um ambiente onde haja computadores Windows envolvido que é necessário ter um antivírus no servidor de arquivos Linux ou FreeBSD com o Samba.
Essa versão do artigo irá cobrir FreeBSD versões 6.x e 7.x, uma outra será feita para Red Hat e CentOS com geração dos RPMs para as plataformas.
Instalando o Clamav
No FreeBSD, instalar o Clamav é recomendável fazer pelo ports mesmo, forma mais tranquila de instalar.
cd /usr/ports/security/clamav make config

Deixar as opções selecionadas como na imagem.
Instalar o clamav:
make install
Após a instalação, editar o arquivo /usr/local/etc/freshclam.conf e comentar a linha onde lê-se: Example
O arquivo /usr/local/etc/freshclam.conf terá como conteúdo algo parecido com o seguinte, caso seu ambiente seja diferente, adapte-o de acordo com as suas necessidades.
Arquivo /usr/local/etc/freshclam.conf
DatabaseDirectory /var/db/clamav UpdateLogFile /var/log/freshclam.log LogTime yes LogSyslog yes PidFile /var/run/clamd/freshclam.pid DatabaseOwner clamav DNSDatabaseInfo current.cvd.clamav.net DatabaseMirror db.br.clamav.net DatabaseMirror database.clamav.net NotifyClamd /usr/local/etc/clamd.conf SubmitDetectionStats /usr/local/etc/clamd.conf DetectionStatsCountry BR
O mesmo aplica-se ao arquivo /usr/local/etc/clamd.conf
Arquivo /usr/local/etc/clamd.conf
LogFileMaxSize 2M LogTime yes LogSyslog yes LogFile /var/log/clamd.log PidFile /var/run/clamd/clamd.pid LocalSocket /tmp/clamd.socket TCPSocket 3310 TCPAddr 127.0.0.1 User clamav ScanPE yes ScanELF yes DetectBrokenExecutables yes ScanOLE2 yes ScanPDF yes ScanMail yes MailFollowURLs no ScanPartialMessages yes PhishingSignatures yes PhishingScanURLs yes PhishingAlwaysBlockSSLMismatch no PhishingAlwaysBlockCloak no HeuristicScanPrecedence yes ScanHTML yes ScanArchive yes
Acrescentar as seguintes linhas ao arquivo /etc/rc.conf:
clamav_clamd_enable="YES" clamav_freshclam_enable="YES"
Criar os arquivos de log e definir permissões corretas
touch /var/log/clamd.log /var/log/freshclam.log chown clamav:clamav /var/log/clamd.log /var/log/freshclam.log mkdir -p /var/run/clamd chown clamav:clamav /var/run/clamd
Após a configuração, iniciar o clamd e fazer a atualização da base de vírus.
/usr/local/etc/rc.d/clamav-clamd start freshclam
Instalando o Samba 3
Baixando o código fonte
É realmente necessário recompilar o samba para ter a funcionalidade do vscan, pois somente com os binários ele não irá compilar.
Não testei com outra versão, portanto não sei da estabilidade/funcionalidade, aqui utilizarei a versão 3.0.34 do samba.
cd ~ fetch http://download.samba.org/samba/ftp/stable/samba-3.0.34.tar.gz tar zxvf samba-3.0.34.tar.gz -C /usr/src cd /usr/src/samba-3.0.34/source ./configure gmake proto gmake gmake install
O samba será instalado por padrão no diretório /usr/local/samba.
Desabilitando o samba atual (instalado pelo ports [se houver])
Se você possui o samba instalado hoje pelo ports deverá desativá-lo e desabilitá-lo da inicialização automática, defina o parâmetro de inicialização de cada daemon como “NO”:
samba_enable="NO"
ou as linhas
nmbd_enable="NO" smbd_enable="NO" winbindd_enable="NO"
do arquivo /etc/rc.conf
Se desejar desinstalar definitivamente o samba do servidor, basta entrar no ports /usr/ports/net/samba3 e executar o comando
make deinstall
Fazer o download do vscan
cd ~ fetch http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz tar zxvf samba-vscan-0.3.6c-beta5.tar.gz -C /usr/src/samba-3.0.34/examples/VFS cd /usr/src/samba-3.0.34/examples/VFS/samba-vscan-0.3.6c-beta5
Compilar e instalar
./configure gmake clamav cp vscan-clamav.so /usr/local/samba/lib/vfs cp clamav/vscan-clamav.conf /usr/local/etc
O conteúdo do arquivo /usr/local/etc/vscan-clamav.conf deverá parecer com o seguinte:
Arquivo /usr/local/etc/vscan-clamav.conf
[samba-vscan] max file size = 0 verbose file logging = no scan on open = yes scan on close = yes deny access on error = yes deny access on minor error = yes send warning message = yes infected file action = delete quarantine directory = /tmp quarantine prefix = vir- max lru files entries = 100 lru file entry lifetime = 5 exclude file types = exclude file regexp = clamd socket name = /tmp/clamd.socket libclamav max files in archive = 1000 libclamav max archived file size = 10485760
A linha
infected file action = delete
refere-se a ação a ser tomada caso um vírus seja encontrado, a ação padrão é não fazer nada, o recomendável é colocar em “quarantine” ou “delete”.
Configurar o Samba para utilizar o vscan
É possível utilizar o vscan a nível de compartilhamento e global, para tanto, basta colocar as seguintes linhas onde quer utilizar o vscan, se for global não há necessidade de colocar nos compartilhamentos.
Arquivo /usr/local/etc/smb.conf
vfs object = vscan-clamav vscan-clamav: config-file = /usr/local/etc/vscan-clamav.conf
Iniciando o samba
O samba deverá ser iniciado agora na linha de comando e na inicialização pode ser no arquivo /etc/rc.local
/usr/local/samba/sbin/smbd -D -s /usr/local/etc/smb.conf /usr/local/samba/sbin/nmbd -D -s /usr/local/etc/smb.conf
Através do log /var/log/messages é possível acompanhar o funcionamento do vscan.

4 comments
Join the conversationDaniel Kühl Lima - 18/03/2010
Havia um erro de configuração no arquivo /usr/local/etc/vscan-clamav.conf na linha 16
“clamd socket name = /var/run/clamd”
alterei para ser a correta
“clamd socket name = /tmp/clamd.socket”
Que foi o caminho para o socket do clamd especificado no arquivo /usr/local/etc/clamd.conf, na linha 05.
Daniel Kühl Lima - 18/03/2010
Caso você tenha o seguinte erro no /var/log/messages (por exemplo):
Mar 18 14:30:38 xyz smbd_vscan-clamav[21907]: ERROR: daemon failed with a minor error – access to file S P E/C I E N C I A S/Ciências EF33/2º Prova/._SPcieEF33-F005.psd denied
Altere no arquivo /usr/local/etc/clamd.conf na linha 08 para:
User root
Wasley - 06/05/2012
To com o seguinte problema, quando vou salva um arquivo no compartilhamento o log registra:
May 6 20:55:44 pegasus smbd_audit: ERROR: file .//teste.xls not found, not readable or an error occured
May 6 20:55:44 pegasus smbd_audit: ERROR: daemon failed with a minor error – access to file teste.xls denied
May 6 20:55:44 pegasus smbd_audit: ERROR: file .//teste.xls not found, not readable or an error occured
May 6 20:55:44 pegasus smbd_audit: ERROR: daemon failed with a minor error – access to file teste.xls denied
Grato
Daniel Kühl Lima - 04/06/2012
Você compilou uma versão errada do vscan para o seu samba.
A versão do vscan tem que ser a mesma.