FreeBSD: Configurando Samba com antivírus realtime (Samba, vscan e clamav)

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

picture-3

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.

Share this post

4 comments

Join the conversation
  • Daniel Kühl Lima - 18/03/2010 reply

    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 reply

    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 reply

    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 reply

    Você compilou uma versão errada do vscan para o seu samba.

    A versão do vscan tem que ser a mesma.

Leave a Reply Cancel