FreeBSD + Samba + ClamAV + Vscan


Servidor de Compartilhamento de Arquivos com Antivírus Realtime


        Neste HOW TO apresentaremos de forma simples e clara como disponibilizar um servidor de compartilhamento de arquivos com antivírus realtime.
        Para esse HOW TO foi instalado o sistema operacional FreeBSD 8.1 e configurados o SAMBA para o serviço de compartilhamento de arquivos. Para o serviço de Antivirus foi utilizado o ClamAV juntamente com o Vscan.
        

        SAMBA: O SAMBA é um servidor e conjunto de ferramentas que permite que máquinas Linux e Windows se comuniquem entre si, compartilhando serviços (arquivos, diretório, impressão) através do protocolo SMB (Server Message Block)/CIFS (Common Internet File System), equivalentes a implementação NetBEUI no Windows. O SAMBA é uma das soluções em ambiente UNIX capaz de interligar redes heterogêneas.
        Com o SAMBA, é possível construir domínios completos, fazer controle de acesso a nível de usuário, compartilhamento, montar um servidor WINS, servidor de domínio, impressão, etc. Na maioria dos casos o controle de acesso e exibição de diretórios no samba é mais minucioso e personalizável que no próprio Windows.
www.samba.org/


        CLAMAV: O Clam Antivirus é um antivírus open source que possui versões para Windows (o ClamWin) e Linux/Freebsd, com atualizações diárias. É disponibilizado pela licença GPL.
www.clamav.net

        VSCAN: Vscan é um o módulo que permite que o servidor Samba, em conjunto com o antivírus Clamav, escaneie por vírus em seus compartilhamentos em tempo real e sem nenhuma queda no rendimento do servidor.
www.openantivirus.org/projects.php


1- Instalando o ClamAV

Para Instalar o ClamAV acesse o diretório:

# cd /usr/ports/security/clamav

Configure as opções de compilação do ClamAV com o comando:

# make config

Marque as opções apropriadas para sua necessidade no ClamAV 0.96.2_1:
[X] ARC                Enable arch archives support           
[X] ARJ                Enable arj archives support             
[X] LHA                Enable lha archives support              
[X] UNZOO              Enable zoo archives support             
[X] UNRAR              Enable rar archives support            
[X] LLVM               Enable JIT Bytecode compiler            
[ ] MILTER             Compile the milter interface           
[ ] LDAP               libmilter was built with LDAP       
[X] ICONV              Enable ICONV support   
[ ] STDERR             Print logs to stderr instead of stdout
[ ] EXPERIMENTAL       Build experimental code

Execute o comando de compilação e instalação do ClamAV:

# make install clean

Marque as opções apropriadas para sua necessidade no python26 2.6.5_1:
[X] THREADS            Enable thread support             
[ ] HUGE_STACK_SIZE    Use a larger thread stack           
[ ] SEM                Use POSIX semaphores (experimental)      
[ ] PTH                Use GNU Pth for threading/multiprocessing
[X] UCS4               Use UCS4 for unicode support        
[X] PYMALLOC           Use python's internal malloc           
[ ] IPV6               Enable IPv6 support           
[ ] FPECTL             Enable floating point exception handling

Marque as opções apropriadas para sua necessidade no libiconv 1.13.1_1:
[X] EXTRA_ENCODINGS    Include extra character sets            
[ ] EXTRA_PATCHES      Apply patches to fix CP932, add EUCJP-MS

Marque as opções apropriadas para sua necessidade no perl 5.10.1_2:
[ ] DEBUGGING          Build with debugging support        
[ ] GDBM               Build GDBM_File extension             
[X] PERL_MALLOC        Use Perl malloc                      
[X] PERL_64BITINT      Use 64 bit integers (on i386)         
[ ] THREADS            Build threaded perl                   
[ ] MULTIPLICITY       Use multiplicity                      
[ ] SUIDPERL           Build set-user-id suidperl binary     
[ ] SITECUSTOMIZE      Run-time customization of @INC        
[X] USE_PERL           Rewrite links in /usr/Bin

Marque as opções apropriadas para sua necessidade no m4 1.4.14_1,1:
[ ] LIBSIGSEGV         Use libsigsegv for better diagnostics

Agora edite o arquivo "/usr/local/etc/freshclam.conf" e adapte-o de acordo com as suas necessidades. Antés faça um backup do mesmo:

# cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf.bkp
# ee /usr/local/etc/freshclam.conf
DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/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 BR3

O mesmo aplica-se ao arquivo "/usr/local/etc/clamd.conf":

# cp /usr/local/etc/clamd.conf /usr/local/etc/clamd.conf.bkp 
# ee /usr/local/etc/clamd.conf
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd.sock
TCPSocket 3310
TCPAddr 127.0.0.1
User clamav
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanPDF yes
ScanMail yes
ScanPartialMessages yes
PhishingSignatures yes
PhishingScanURLs yes
PhishingAlwaysBlockSSLMismatch no
PhishingAlwaysBlockCloak no
HeuristicScanPrecedence yes
ScanHTML yes
ScanArchive yes

Depois de realizado as configurações no arquivo "clamd.conf", vamos habilitar para o ClamAV inicializar quando o FreeBSD for reiniciado. Editar o arquivo "rc.conf".

# ee /etc/rc.conf

Adicionando ao final do arquivo essas linhas, depois salve o arquivo e saia.

#ClamAV
         clamav_clamd_enable="YES"
         clamav_freshclam_enable="YES" 

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 onestart
# rehash 
# freshclam

2- Instalando o Samba

Para instalar o Samba acesse o diretório

# cd /usr/ports/net/samba3

Configure as opções de compilação do Samba com o comando:

# make config

Marque as opções apropriadas para sua necessidade no Samba 3.0.37_1.1:
[X] LDAP               With LDAP support                        
[ ] ADS                With Active Directory support               
[X] CUPS               With CUPS printing support                  
[X] WINBIND            With WinBIND support                        
[ ] ACL_SUPPORT        With ACL support                            
[ ] AIO_SUPPORT        With Asyncronous IO support                 
[ ] FAM_SUPPORT        With File Alteration Monitor                
[X] SYSLOG             With Syslog support                         
[X] QUOTAS             With Disk quota support                     
[X] UTMP               With UTMP accounting support                
[X] PAM_SMBPASS        With PAM authentication vs passdb backends  
[ ] CLUSTER            With experimental cluster support           
[ ] DNSUPDATE          With dynamic DNS update(require ADS)        
[X] EXP_MODULES        With experimental modules                   
[X] POPT               With system-wide POPT library               
[X] PCH                With precompiled headers optimization       
[ ] MAX_DEBUG          With maximum debugging                      
[ ] SMBTORTURE         With smbtorture

Execute o comando de compilação e instalação do Samba

# make install clean

Marque as opções apropriadas para sua necessidade no cups-client 1.4.4:
[X] GNUTLS              Build with GNUTLS library

Marque as opções apropriadas para sua necessidade no openldap-client 2.4.23:
[ ] SASL                With (Cyrus) SASL2 support
[X] FETCH               Enable fetch(3) support

Após a conclusão dos processos de instalação vamos configurar o Samba. Primeiramente vamos realizar um backup do arquivo padrão.

# cp /usr/local/etc/smb.conf /usr/local/etc/smb.conf.bkp
# ee /usr/local/etc/smb.conf
[global]
     netbios name = FreeBSD
     workgroup = Teste
     server string = Servidor Samba
     security = user
     log file = /var/log/samba/log.%m

 [homes]
     comment = Pasta Pessoal
     browseable = no
     writable = yes
     read only = no

 [teste]
     comment = Arquivos Teste
     path = /usr/home/teste
     valid users = alvaro
     admin users = alvaro
     read only = no
     browseable = no
     writable = yes

Após realizado as configurações no arquivo smb.conf, vamos habilitar para o SAMBA inicializar quando o FreeBSD for reiniciado. Editar o arquivo "rc.conf".

# ee /etc/rc.conf

Adicionando ao final do arquivo essas linhas, depois salve o arquivo e saia.

#Samba
         nmbd_enable="YES"
         smbd_enable="YES"
         winbindd_enable="YES"

Agora vamos iniciar o Samba com o seguinte comando.

#/usr/local/etc/rc.d/samba start
# rehash

3- SWAT

O SWAT (Samba Web Administration Tool) como o nome diz é uma ferramenta para gerenciamento do SAMBA. O mesmo é instalado automaticamente junto com o Samba
Para habilitar o SWAT acesse o arquivo /etc/inetd.conf e descomente a linha abaixo:
# ee /etc/inetd.conf
swat    stream  tcp     nowait/400      root    /usr/local/sbin/swat    swat

Depois reinicie o inetd:

# /etc/rc.d/inetd restart

Para acessar o Swat use um browser para conectar a:

# http://<ip_do_servidor>:901

4- Instalando o VSCAN

Para instalar o VSCAN acesse o diretório

# cd /usr/ports/security/samba-vscan

Configure as opções de compilação do Vscan com o comando:

# make config

Marque as opções apropriadas para sua necessidade no samba-vscan 0.3.6c_2:
[ ] VSCAN_ANTIVIR      for use with AntiVir                        
[X] VSCAN_CLAMAV       for use with Clam AntiVirus Daemon          
[ ] VSCAN_FPROTD       for use with F-Prot Daemon                  
[ ] VSCAN_FSAV         for use with F-Secure AntiVirus             
[ ] VSCAN_ICAP         for use with an ICAP anti-virus             
[ ] VSCAN_KAVP         for use with Kaspersky AntiVirus            
[ ] VSCAN_MKSD         for use with mks32                          
[ ] VSCAN_NAI          for use with NAI/McAfee uvscan              
[ ] VSCAN_OAV          for use with OpenAntiVirus.org ScannerDaemon
[ ] VSCAN_SOPHOS       for use with Sophos                         
[ ] VSCAN_TREND        for use with Trend Micro FileScanner

O conteúdo do arquivo "/usr/local/etc/vscan-clamav.conf" deverá parecer com o seguinte:

# cp /usr/local/etc/vscan-clamav.conf /usr/local/etc/vscan-clamav.conf.bkp
# ee /usr/local/etc/samba-vscan/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 = quarantine
 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
 libclamav max files in archive = 1000
 libclamav max archived file size = 10485760

5- 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 adicionado no global não há necessidade de colocar nos compartilhamentos.
# ee /usr/local/etc/smb.conf
 [global]
  vfs object = vscan-clamav
  vscan-clamav: config-file = /usr/local/etc/samba-vscan/vscan-clamav.conf

Agora vamos reiniciar o Samba com o seguinte comando.

#/usr/local/etc/rc.d/samba restart

Através do arquivo de log /var/log/messages é possível acompanhar o funcionamento do Vscan.

# tail -f /var/log/messages


6- Testando o vscan

Para testar o nosso servidor utilizaremo o EICAR test file (arquivo de teste, em português) que é um arquivo de 68 bytes que possui uma linha de caracteres, desenvolvido pelo European Institute of Computer Anti-Virus Research (Instituto Europeu para Pesquisa de Antivírus de Computador), é usado para testar a eficiência dos antivírus na detecção de vírus conhecidos sem qualquer risco ao computador. Usar o EICAR ao invés de um vírus real para testar um antivírus, é a garantia de que o computador não será infectado.

Baixe o arquivo "eicar_com.zip" pelo link:

http://www.eicar.org/download/eicar_com.zip

Salve o arquivo no compartilhamendo do Samba e veja pelos logs que o mesmo foi renomeado e movido para a pasta de quarentena

# tail -f /var/log/messages
Aug 15 14:28:56 frebsd smbd_vscan-clamav[1444]: INFO: quarantining file 
'/usr/home/cd/eicar.com' to '/tmp/vir-cQZNtg' was successful


7- Referências

FREEBSD: www.freebsd.org/
SAMBA: www.samba.org/
CLAMAV: www.clamav.net
VSCAN: www.openantivirus.org/projects.php

www.fug.com.br
www.bsdux.com.br
www.richardsharpe.com/samba-stuff.html
www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html
www.fogonacaixadagua.com.br/2009/03/freebsd-configurando-samba-com-antivirus-realtime-samba-vscan-e-clamav/
http://danilosbrasil.wordpress.com/2010/04/24/freebsd-49-configurando-samba-com-antivirus-realtime-samba-vscan-e-clamav/


 
HowtoBSD © 2010 | Designed by Trucks, in collaboration with MW3, templates para blogspot