Não é preciso descrever como é importante em um ambiente onde haja computadores Windows envolvidos que é necessário ter um antivírus no servidor de arquivos Linux ou FreeBSD com o Samba.
Essa versão do artigo irá cobrir Red Hat / CentOS versão 5.x.
Pré-requisitos
1.0 Instalando o ClamAV
É necessário o repositório Yum RPMforge estar instalado e configurado. Veja “Pré-requisitos”.
yum install clamav clamav-db clamd
1.1 Configurando o clamd
Após a instalação do clamav, edite o arquivo /etc/clamd.conf e adeque as suas necessidades.
Para uma utilização geral, a seguinte configuração é suficiente:
Arquivo: /etc/clamd.conf
LogFile /var/log/clamav/clamd.log LogFileMaxSize 0 LogTime yes LogSyslog yes PidFile /var/run/clamav/clamd.pid TemporaryDirectory /var/tmp DatabaseDirectory /var/clamav LocalSocket /var/run/clamav/clamd.sock FixStaleSocket yes TCPSocket 3310 TCPAddr 127.0.0.1 MaxConnectionQueueLength 30 MaxThreads 50 ReadTimeout 300 User root AllowSupplementaryGroups yes ScanPE yes ScanELF yes DetectBrokenExecutables yes ScanOLE2 yes ScanMail yes ScanArchive yes ArchiveBlockEncrypted no
Por que o usuário ‘root’? Porque por padrão o Clamd roda como usuário ‘clamav’ e quando o Samba chamar o clamav e for necessário apagar algum arquivo com vírus ele não vai ter permissão.
Inicar e garantir que iniciará no boot:
chkconfig --levels 35 clamd on service clamd start
Starting Clam AntiVirus Daemon: [ OK ]
1.2 Configurando freshclam para atualizações
Editar o arquivo de configuração do freshclam que ficará parecido com o seguinte:
Arquivo: /etc/freshclam.conf
DatabaseDirectory /var/clamav UpdateLogFile /var/log/clamav/freshclam.log LogTime yes DatabaseMirror db.br.clamav.net DatabaseMirror database.clamav.net DatabaseOwner root NotifyClamd /etc/clamd.conf SubmitDetectionStats /etc/clamd.conf
Criar o arquivo de log pro Freshclam
touch /var/log/clamav/freshclam.log chown clamav:clamav /var/log/clamav/freshclam.log
Caso seu servidor não tenha acesso diretamente à internet mas você possui um proxy na rede, coloque os seguintes parâmetros no arquivo /etc/freshclam.conf com as informações do proxy.
Arquivo: /etc/freshclam.conf
HTTPProxyServer 192.168.1.1 HTTPProxyPort 3128 HTTPProxyUsername user HTTPProxyPassword s3nh4
Após isso, a permissão do arquivo /etc/freshclam.conf deverá ser 0600.
chmod 0600 /etc/freshclam.conf
Pode-se executar o comando freshclam para atualizar a assinatura de vírus.
freshclam
2.0 Instalando o Samba
A versão que vem por padrão com o Red Hat / CentOS não é possível utilizar em conjunto com o vscan, por isso será necessário compilar o Samba para que tenha suporte ao samba-vscan.
2.0.1 RPMs 64 bits gerados
Se o seu SO é 64 bits, então os pacotes do Samba eu compilei e estou disponbilizando aqui, pra facilitar o trabalho e não ser necessário instalar o ambiente de desenvolvimento no servidor.
- samba-3.0.33-3.14.x86_64.rpm
- samba-client-3.0.33-3.14.x86_64.rpm
- samba-common-3.0.33-3.14.x86_64.rpm
Caso queira compilar, prossiga para o próximo passo
2.0.2 Preparando o Samba para gerar o pacote .rpm
Faça o download do RPM source do samba:
cd ~ wget http://netops.nexicom.net/centos/5.4/updates/SRPMS/samba-3.0.33-3.14.el5.src.rpm
Instalar os arquivos:
rpm -ivh samba-3.0.33-3.14.el5.src.rpm
É necessário descompacatar o .tar.gz do código fonte e depois compactá-lo.
cd /usr/src/redhat/SOURCES tar zxvf samba-3.0.33.tar.gz cd samba-3.0.33/source ./autogen.sh && ./configure make proto
Se ao tentar compilar o Samba, ao executar os comandos acima você tiver a seguinte mensagem:
./autogen.sh && ./configure
./autogen.sh: running script/mkversion.sh
./script/mkversion.sh: 'include/version.h' created for Samba("3.0.33")
./autogen.sh: running autoheader -I. -Ilib/replace
./autogen.sh: running autoconf -I. -Ilib/replace
Now run ./configure and then make.
SAMBA VERSION: 3.0.33
LIBREPLACE_LOCATION_CHECKS: START
...
LIBREPLACE_LOCATION_CHECKS: END
LIBREPLACE_CC_CHECKS: START
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
É por que não tem os pacotes de desenvolvimento instalado, para resolver isso, instale-os:
yum install rpm-build gcc gcc-c++ make autoconf automake libtool
2.1 Fazer o download do vscan
2.1.1 Binário 64bits do vscan
Caso seu SO seja 64 bits, estou dispobilizando a biblioteca do vscan-clamav já compilada.
Caso seja 32 bits ou queira compilar o código fonte, prossiga para o próximo tópico.
2.1.2 Compilando pelo código fonte
cd ~ wget http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz
Descompactar:
tar zxvf ~/samba-vscan-0.3.6c-beta5.tar.gz -C /usr/src
Compilar o samba-vscan:
cd /usr/src/samba-vscan-0.3.6c-beta5/ ./configure --with-libclamav --with-samba-source=/usr/src/redhat/SOURCES/samba-3.0.33/source/
Ao final, você terá algo como:
** Configuration summary for samba-vscan 0.3.6c beta5 : Compile samba-vscan for Samba : "3.0.33" Compile samba-vscan with sources in: /usr/src/redhat/SOURCES/samba-3.0.33/source/ Compile samba-vscan backends : oav sophos fprotd fsav trend icap mksd kavp clamav nai antivir Use GLOBAL_LIBS : -lmagic Use libmksd as : builtin Use libkavdc as : builtin
Hora de começar a compilar o samba-vscan:
cd /usr/src/samba-vscan-0.3.6c-beta5 make
Por enquanto é isso. Não execute make install.
2.1 Gerando o .rpm para o samba com vscan
2.1.1 Gerar o .rpm do samba
Agora é necessário compactar o diretório samba-3.0.33 novamente pra gerar o .rpm com tudo certo dentro.
Instalar dependências:
yum install cups-devel gnutls-devel pam-devel readline-devel ncurses-devel libacl-devel openldap-devel openssl-devel
cd /usr/src/redhat/SOURCES/ mv samba-3.0.33.tar.gz samba-3.0.33.tar.gz.orig tar zcvf samba-3.0.33.tar.gz samba-3.0.33
Gerar o .rpm do samba-3.0.33:
cd /usr/src/redhat/SPECS/ rpmbuild -bb samba.spec
Ao final do processo, você terá algo como:
Wrote: /usr/src/redhat/RPMS/x86_64/samba-3.0.33-3.14.x86_64.rpm Wrote: /usr/src/redhat/RPMS/x86_64/samba-client-3.0.33-3.14.x86_64.rpm Wrote: /usr/src/redhat/RPMS/x86_64/samba-common-3.0.33-3.14.x86_64.rpm Wrote: /usr/src/redhat/RPMS/x86_64/samba-swat-3.0.33-3.14.x86_64.rpm Wrote: /usr/src/redhat/RPMS/x86_64/samba-debuginfo-3.0.33-3.14.x86_64.rpm ...
Para instalar, utilizaremos o próprio rpm.
rpm -iUvh /usr/src/redhat/RPMS/x86_64/samba-3.0.33-3.14.x86_64.rpm /usr/src/redhat/RPMS/x86_64/samba-client-3.0.33-3.14.x86_64.rpm /usr/src/redhat/RPMS/x86_64/samba-common-3.0.33-3.14.x86_64.rpm
Eu já tinha o samba instalado e nesse caso não me deixou instalar por cima e finalizou com as seguintes mensagens:
Preparing... ########################################### [100%] package samba-common-3.0.33-3.15.el5_4.1.x86_64 (which is newer than samba-common-3.0.33-3.14.x86_64) is already installed package samba-3.0.33-3.15.el5_4.1.x86_64 (which is newer than samba-3.0.33-3.14.x86_64) is already installed package samba-client-3.0.33-3.15.el5_4.1.x86_64 (which is newer than samba-client-3.0.33-3.14.x86_64) is already installed
Nesse caso é seguro executar o rpm com o parâmetro --force
rpm -iUvh --force /usr/src/redhat/RPMS/x86_64/samba-3.0.33-3.14.x86_64.rpm /usr/src/redhat/RPMS/x86_64/samba-client-3.0.33-3.14.x86_64.rpm /usr/src/redhat/RPMS/x86_64/samba-common-3.0.33-3.14.x86_64.rpm
Preparing... ########################################### [100%] 1:samba-common ########################################### [ 33%] 2:samba ########################################### [ 67%] 3:samba-client ########################################### [100%]
3.0 Configuração do vscan
No diretório /etc/samba crie o arquivo de configuração para o samba-vscan (um exemplo desse arquivo está em: /usr/src/samba-vscan-0.3.6c-beta5/clamav/vscan-clamav.conf)
Arquivo: /etc/samba/vscan-clamav.conf
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 = /var/run/clamav/clamd.sock scan archives = yes libclamav max files in archive = 1000 libclamav max archived file size = 10485760 libclamav max recursion level = 5
64 bits
Copie a lib gerada do vscan para o ClamAV que está em /usr/src/samba-vscan-0.3.6c-beta5/
cd /usr/src/samba-vscan-0.3.6c-beta5/ cp vscan-clamav.so /usr/lib64/samba/vfs
32 bits
Copie a lib gerada do vscan para o ClamAV que está em /usr/src/samba-vscan-0.3.6c-beta5/
cd /usr/src/samba-vscan-0.3.6c-beta5/ cp vscan-clamav.so /usr/lib/samba/vfs
4.0 Configuração do Samba para utilizar o vscan
Edite o arquivo /etc/samba/smb.conf e adicione as entradas em [global]
Arquivo: /etc/samba/smb.conf
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
Pronto.
Só falta iniciar ou reiniciar o Samba:
service smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ]
Os logs dos arquivos scanneados são mostrados em /var/log/messages.
5.0 Não permitir que o yum atualize o Samba
É interessante não permitir que o yum atualize o Samba, se isso acontecer, as alterações feitas pelo samba-vscan quando compilamos ele serão perdidas e você perderá as funcionalidade de antivírus do Samba.
Para fazer isso, é bem simples, adicione a seguinte linha no arquivo /etc/yum.conf na sessão [main]
exclude=samba*

8 comments
Join the conversationJoão B. Silva - 06/04/2010
Como diria um amigo meu: “isso aqui é a prova de bala”.
Excelente guia e parabéns pelo conteúdo do site. Obrigado por compartilhar.
Essa integração funcionou perfeitamente apenas tive que fazer um ajuste no tamanho máximo a ser analisado pelo Clamd, ficava meio lento quando um arquivo era grande ( > 200Mb).
Obrigado e continue com o bom trabalho!
Thiago Gomes - 22/07/2010
Amigo,
Esse tutorial é show de bola.. porem instalar numa maquina 32bits e nao consegui.. fiz até o topico 2.0, depois disso ficou confurso por causa da versao 64 bits.. por acaso pode fazer um complicado.. ou então mandar para o meu e-mail..
Thiago Gomes - 22/07/2010
Desculpe.. escrive errado.. eu quis dizer se por acaso vc pode fazer um tutorial somente para 32 bits e ou então maquina para o meu e-mail..
obrigado
Daniel Kühl Lima - 23/11/2010
Oi, siga o passo 2.0.2 que voce terah a versao para 32bits compilada.
Andre de Andrade - 23/11/2010
Excelente tutorial. Me deparei com um problema e não estou saindo do outro lado… não consigo scannear meus arquivos o log apresenta: Nov 23 11:58:17 SrvArq smbd_vscan-clamav[2797]: ERROR: file .//arquivo_001.txt not found, not readable or an error occured
Nov 23 11:58:17 SrvArq clamd[2793]: lstat() failed on: .//arquivo_001.txt
Aparentemente seria problema de path, ja que esse arquivo encontra-se fisicamente em /dados/publico. Não creio q seja permissão, estou rodando o clam como root, conforme orientado. Por onde devo seguir? abraços
Daniel Kühl Lima - 23/11/2010
No caso teria que ver qual eh o erro que estah aparecendo no arquivo de log do samba, geralmente eh no smbd.log.
Essa msg de erro que colou estah aparecendo no /var/log/messages neh.
O que voce pode fazer, eh apagar todos os arquivos dentro de /var/clamav e executar o comando
freshclam
pra baixar as assinaturas de virus.
O caminho .//arquivo.txt nao faz nenhum sentido, coloca a linha:
debug yes
no arquivo clamd.conf
e se aparecer no log alguma linha como:
lstat() failed on
Sim, eh problema de permissao ou o Socket pro Clamav nao estah sendo encontrado.
Raphael - 27/12/2010
Daniel,
Sabe como devo proceder, no caso, tendo já o samba 3.5.6 instalado?
Daniel Kühl Lima - 06/02/2011
Ainda não o fiz, mas o segredo está em compilar o vscan usando o source do samba, então, teoricamente ele compilaria usando o source do samba 3.5.x.
Valeu!
Related Posts
Podman + MariaDB: Resolvendo “Error establishing a database connection” após reiniciar o servidor
Daniel K Lima 30/11/2025Converter espaços/tabs em um único caracter (um espaço ou vírgula etc) com sed
Daniel K Lima 02/06/2016Conveter novas (\n) linhas em vírgula ou espaço usando sed
Daniel K Lima 06/04/2016SARG 2.3.1 erro ao compilar no Fedora 14
Daniel K Lima 11/03/2011rootsh: Keylogger para CLI do Linux
Daniel K Lima 20/04/2010CLI: Converter um PDF para uma imagem
Daniel K Lima 06/04/2010