Instalação do ClamAV com DazukoFS

Atenção: o blog do AvmLinux foi movido para http://www.avmlinux.org/!
Experimente ler esse mesmo post no novo endereço!



O ClamAV é um dos mais conhecidos antivírus desenvolvidos para Linux, pelo fato de ele ser open source, apresentar tantas funcionalidades quanto os programas antivírus proprietários e ainda por cima ter sua base de dados de vírus atualizada com bastante frequência. Nesse tutorial, vamos compilar, instalar e configurar o ClamAV. Além disso, vamos configurar sua proteção residente para utilizar o DazukoFS.

Antes de começar, gostaria de informar que o ClamAV ainda não oferece suporte ao DazukoFS, como você pode ver nesta página, onde um programador relata o problema à equipe de desenvolvimento do ClamAV e sugere um patch (alteração) para o programa. Portanto, você vai precisar, além do código-fonte do ClamAV, do patch que adicionará a ele o suporte ao DazukoFS. Baixe os dois arquivos e coloque-os na mesma pasta.


É importante observar também que esse patch foi desenvolvido para a versão 0.95.2 do ClamAV, por isso eu recomendo que você baixe o código-fonte dessa versão (basta clicar no link que eu forneci acima). A versão mais nova do ClamAV, no momento da elaboração desse tutorial, é a 0.95.3. Se você preferir instalar a versão mais nova, você também pode aplicar esse patch, fazendo as devidas alterações (eu, particularmente, ainda não disponho de conhecimento técnico suficiente para fazê-lo, por isso optei por instalar a versão para a qual o patch foi desenvolvido).


Preparando o sistema


Para compilar o ClamAV, você precisa ter instalado em seu sistema os pacotes zlib e zlib-devel, além, claro, do compilador gcc. Se você utiliza o Debian ou uma distribuição baseada nele, você pode resolver essas dependências com o comando:

# apt-get build-dep clamav

Lembrando que para executá-lo você deve ter pelo menos um repositório de códigos-fonte adicionado no arquivo "/etc/apt/sources.list". Se não tiver, você pode adicionar este:

deb-src http://ftp.br.debian.org/debian/ lenny main contrib non-free

Além disso, após adicionar o repositório, você deve executar o comando

# apt-get update

para obter a sua lista de pacotes.


Não entrarei em mais detalhes a respeito da instalação dessas dependências (até porque as instruções para fazer isso podem variar de distribuição para distribuição), assumindo que você já as possui instaladas em seu sistema.


Além disso, se você pretende que o ClamAV execute proteção residente, você deve instalar o DazukoFS. Apesar de você poder fazer isso depois da instalação do ClamAV, recomendo que o faça antes, para que ao terminar de executar esses passos você tenha uma instalação completamente funcional do ClamAV, sem nada mais a ser feito. Para saber como instalar o DazukoFS, leia o tutorial Desmistificando a instalação do Dazuko, anteriormente publicado aqui no blog do AvmLinux.


A instalação do ClamAV requer que criemos um usuário e um grupo de usuários para ele. Isso pode ser feito através dos comandos:


# groupadd clamav

# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

Finalmente, vamos criar os diretórios que serão utilizados pelo ClamAV para armazenar seus arquivos:


# mkdir /var/lib/clamav

# chown clamav /var/lib/clamav

# mkdir /var/log/clamav

# chown clamav /var/log/clamav

# mkdir /var/run/clamav

# chown clamav /var/run/clamav

Instalando o ClamAV


1. Descompacte o código-fonte do ClamAV com o seguinte comando no terminal:

$ tar -xvzf clamav-0.95.2.tar.gz

2. Entre no diretório de instalação do ClamAV, que foi o diretório que você acabou de descompactar:

$ cd clamav-0.95.2

3. Vamos agora aplicar o patch que acrescentará ao ClamAV o suporte ao DazukoFS. Para isso, execute o comando:

$ patch -p1 < ../patch-clamuko-dazukofs.diff


Agora podemos prosseguir com a instalação normal do ClamAV.

4. Execute os seguintes comandos no terminal para compilar o ClamAV:

$ ./configure --prefix=/usr --sysconfdir=/etc/clamav --enable-clamuko --enable-milter --with-dbdir=/var/lib/clamav

# make


O segundo comando geralmente demora um pouco. Tenha paciência e aguarde a sua execução.

5. Se você não obter nenhuma mensagem de erro após a execução desses comandos, você pode agora de fato instalar o ClamAV com o comando:

# make install


6. Após concluir a instalação do ClamAV, execute o comando:

# ldconfig

Configurando o freshclam


O freshclam é o componente do ClamAV que verifica, baixa e instala as atualizações da base de dados de vírus.

Sua configuração encontra-se no arquivo "/etc/clamav/freshclam.conf". Abra esse arquivo e faça as alterações listadas a seguir (se você preferir, aqui encontra-se uma cópia desse arquivo com as alterações já feitas):

1. Comente a linha "Example":

Para quem nunca mexeu em um arquivo de configuração, comentar uma linha significa adicionar um "jogo da velha" (#) no início da linha. Ao contrário, descomentar uma linha significa remover esse caractere do seu começo.


Assim, a linha "Example", que antes estava assim:

# Comment or remove the line below.
Example


Deve ficar assim:

# Comment or remove the line below.
#Example


2. Descomente a linha "UpdateLogFile" e altere seu valor para "/var/log/clamav/freshclam.log". Ela deve ficar assim:

# Path to the log file (make sure it has proper permissions)
# Default: disabled
UpdateLogFile /var/log/clamav/freshclam.log


3. Descomente a linha "LogFileMaxSize":

# Maximum size of the log file.
# Value of 0 disables the limit.
# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes).
# in bytes just don't use modifiers.
# Default: 1M
LogFileMaxSize 2M


4. Descomente a linha "LogTime":

# Log time with each message.
# Default: no
LogTime yes


5. Descomente a linha "LogVerbose":

# Enable verbose logging.
# Default: no
LogVerbose yes


6. Descomente a linha "LogSyslog":

# Use system logger (can work together with UpdateLogFile).
# Default: no
LogSyslog yes


7. Descomente a linha "PidFile" e altere seu valor:

# This option allows you to save the process identifier of the daemon
# Default: disabled
PidFile /var/run/clamav/freshclam.pid


8. Descomente a linha "NotifyClamd" e altere seu valor:

# Send the RELOAD command to clamd.
# Default: no
NotifyClamd /etc/clamav/clamd.conf


Finalmente, execute o comando a seguir para verificar se as alterações na configuração foram aplicadas e também para verificar atualizações para o ClamAV:

# freshclam


Não se preocupe se ocorrerem quaisquer erros com relação ao clamd. Isso é normal, visto que ainda não configuramos nem iniciamos ele.

Configurando o clamd


O clamd é o componente do ClamAV que executa a proteção residente, verificando a existência de vírus em tempo real nos programas e arquivos, à medida em que estes vão sendo abertos.


Sua configuração encontra-se no arquivo "/etc/clamav/clamd.conf". Abra esse arquivo e faça as alterações listadas a seguir (se você preferir, aqui encontra-se uma cópia desse arquivo com as alterações já feitas):


1. Comente a linha "Example":

# Comment or remove the line below.
#Example


2. Descomente a linha "LogFile" e altere seu valor:

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
# Default: disabled
LogFile /var/log/clamav/clamd.log


3. Descomente a linha "LogFileMaxSize":

# Maximum size of the log file.
# Value of 0 disables the limit.
# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size
# in bytes just don't use modifiers.
# Default: 1M
LogFileMaxSize 2M


4. Descomente a linha "LogTime":

# Log time with each message.
# Default: no
LogTime yes


5. Descomente a linha "LogSyslog":

# Use system logger (can work together with LogFile).
# Default: no
LogSyslog yes


6. Descomente a linha "LogVerbose":

# Enable verbose logging.
# Default: no
LogVerbose yes


7. Descomente a linha "PidFile" e altere seu valor:

# This option allows you to save a process identifier of the listening
# daemon (main thread).
# Default: disabled
PidFile /var/run/clamav/clamd.pid


8. Altere o valor da linha "LocalSocket":

# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
LocalSocket /var/run/clamav/clamd.socket


9. Descomente a linha "TCPSocket":

# TCP port address.
# Default: no
TCPSocket 3310


10. Descomente a linha "ScanMail":

# Enable internal e-mail scanner.
# Default: yes
ScanMail yes


11. Descomente a linha "ClamukoScanOnAccess":

##
## Clamuko settings
## WARNING: This is experimental software. It is very likely it will hang
##     up your system!!!
##

# Enable Clamuko. Dazuko (/dev/dazuko) must be configured and running.
# Default: no
ClamukoScanOnAccess yes


12. Observe o trecho a seguir do arquivo de configuração do clamd:

# Set the include paths (all files inside them will be scanned). You can have
# multiple ClamukoIncludePath directives but each directory must be added
# in a seperate line.
# Default: disabled
#ClamukoIncludePath /home
#ClamukoIncludePath /students

# Set the exclude paths. All subdirectories are also excluded.
# Default: disabled
#ClamukoExcludePath /home/bofh


Normalmente, descomentamos essas linhas e fazemos a configuração do Clamuko (o componente do clamd que faz a comunicação com o Dazuko), definindo quais diretórios queremos incluir e quais queremos excluir da proteção residente. No entanto, se você abrir o código-fonte do patch, verá uma nota do autor dizendo que não é necessário mais configurar essas opções. Então, a proteção residente deve atuar sobre todos os diretórios que o DazukoFS disponibilizar, bastando, portanto, a configuração deste (ver como configurar o DazukoFS para montar as pastas na inicialização do sistema em Desmistificando a instalação do Dazuko).


Salve o arquivo e execute o comando a seguir para verificar se as alterações na configuração foram aplicadas:

# clamd

Configurando o clamav-milter


O clamav-milter é o componente do ClamAV que se integra aos servidores de e-mail, verificando a existência de vírus nos anexos.


Sua configuração encontra-se no arquivo "/etc/clamav/clamav-milter.conf". Abra esse arquivo e faça as alterações listadas a seguir (se você preferir, aqui encontra-se uma cópia desse arquivo com as alterações já feitas):


1. Comente a linha "Example":

# Comment or remove the line below.
#Example


2. Descomente a linha "MilterSocket" e altere seu valor:

# Define the interface through which we communicate with sendmail
# This option is mandatory! Possible formats are:
# [[unix|local]:]/path/to/file - to specify a unix domain socket
# inet:port@[hostname|ip-address] - to specify an ipv4 socket
# inet6:port@[hostname|ip-address] - to specify an ipv6 socket
#
# Default: no default
MilterSocket /var/run/clamav/clamav-milter.socket
#MilterSocket inet:7357


3. Descomente a linha "PidFile" e altere seu valor:

# This option allows you to save a process identifier of the listening
# daemon (main thread).
#
# Default: disabled
PidFile /var/run/clamav/clamav-milter.pid


4. Adicione a linha "ClamdSocket":

# Define the clamd socket to connect to for scanning.
# This option is mandatory! Syntax:
# ClamdSocket unix:path
# ClamdSocket tcp:host:port
# The first syntax specifies a local unix socket (needs an absolute path) e.g.:
#     ClamdSocket unix:/var/run/clamd/clamd.socket
# The second syntax specifies a tcp local or remote tcp socket: the
# host can be a hostname or an ip address; the ":port" field is only required
# for IPv6 addresses, otherwise it defaults to 3310
#     ClamdSocket tcp:192.168.0.1
#
# This option can be repeated several times with different sockets or even
# with the same socket: clamd servers will be selected in a round-robin fashion.
#
# Default: no default
#ClamdSocket tcp:scanner.mydomain:7357
ClamdSocket /var/run/clamav/clamd.socket


5. Descomente a linha "LogFile" e altere seu valor:

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
#
# Default: disabled
LogFile /var/log/clamav/clamav-milter.log


6. Descomente a linha "LogFileMaxSize":

# Maximum size of the log file.
# Value of 0 disables the limit.
# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes)
# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size
# in bytes just don't use modifiers.
#
# Default: 1M
LogFileMaxSize 2M


7. Descomente a linha "LogTime":

# Log time with each message.
#
# Default: no
LogTime yes


8. Descomente a linha "LogSyslog":

# Use system logger (can work together with LogFile).
#
# Default: no
LogSyslog yes


9. Descomente a linha "LogVerbose":

# Enable verbose logging.
#
# Default: no
LogVerbose yes


Finalmente, execute o comando a seguir para verificar se as alterações na configuração foram aplicadas:

# clamav-milter

Executando o ClamAV na inicialização do sistema


Nessa etapa, vamos configurar o sistema para executar o clamd, o clamav-milter e o freshclam na inicialização para não precisemos mais nos preocupar com o ClamAV: ele já estará verificando os arquivos em busca de vírus e baixando as atualizações para sua base de dados automaticamente.


1. Abra um editor de texto, copie e cole as linhas a seguir, e salve como "/etc/init.d/clamav":

#!/bin/sh
# Inicia/para/reinicia o ClamAV

# Inicia o ClamAV:
clamav_start() {
if [ -x /usr/sbin/clamd ]; then
echo "Starting clamd daemon: /usr/sbin/clamd"
/usr/sbin/clamd
sleep 1
fi
if [ -x /usr/sbin/clamav-milter ]; then
echo "Starting clamav-milter daemon: /usr/sbin/clamav-milter"
/usr/sbin/clamav-milter
sleep 1
fi
if [ -x /usr/bin/freshclam ]; then
echo "Starting freshclam daemon: freshclam -d"
freshclam -d
fi
}

# Para o ClamAV:
clamav_stop() {
echo "Stopping clamd daemon: killall clamd"
killall clamd
echo "Stopping clamav-milter daemon: killall clamav-milter"
killall clamav-milter
echo "Stopping freshclam daemon: killall freshclam"
killall freshclam
}

# Reinicia o ClamAV:
clamav_restart() {
clamav_stop
sleep 1
clamav_start
}

case "$1" in
'start')
clamav_start
;;
'stop')
clamav_stop
;;
'restart')
clamav_restart
;;
*)

echo "Usage: $0 start|stop|restart"
esac


2. Torne esse arquivo executável com o seguinte comando no terminal:

# chmod +x /etc/init.d/clamav


3. Para que o ClamAV seja carregado toda vez que o sistema for iniciado, você pode executar o seguinte comando, se utiliza Debian (ou uma distribuição baseada nele):

# update-rc.d clamav defaults


ou executar os comandos a seguir, se utiliza outra distribuição:

# ln -s /etc/init.d/clamav /etc/rc0.d/K20clamav
# ln -s /etc/init.d/clamav /etc/rc1.d/K20clamav
# ln -s /etc/init.d/clamav /etc/rc6.d/K20clamav
# ln -s /etc/init.d/clamav /etc/rc2.d/S20clamav
# ln -s /etc/init.d/clamav /etc/rc3.d/S20clamav
# ln -s /etc/init.d/clamav /etc/rc4.d/S20clamav
# ln -s /etc/init.d/clamav /etc/rc5.d/S20clamav


4. Para finalizar, você pode reiniciar o computador e verificar se o ClamAV foi carregado.


Após reiniciar o computador, execute o seguinte comando no terminal:

$ ps aux | grep clam


Se esse comando retornar algo parecido com isso:

root      4204  0.0 16.6  96456 85972 ?        Ssl  19:30   0:00 /usr/sbin/clamd
clamav    4212  0.0  0.1   3268   852 ?        Ss   19:30   0:00 freshclam -d
vinicius  6719  0.0  0.1   2216   712 pts/0    S+   19:31   0:00 grep clam


é sinal de que o ClamAV foi carregado corretamente.

Testando o ClamAV


Há uma forma bastante simples de testar o ClamAV e ver se ele está funcionando corretamente: baixando o EICAR, um conhecido arquivo de teste de antivírus. Esse arquivo não contém na verdade nenhum vírus. Apenas todos os antivírus o adicionam às suas bases de dados para que seja possível verificar seu funcionamento. Assim, se seu antivírus detectar um vírus nesse arquivo, não se espante, seu computador não está infectado! Apenas seu antivírus está funcionando corretamente.


Vamos ver como o ClamAV se comporta diante desse arquivo:


1. Crie uma pasta de teste para baixar o arquivo de teste (o comando a seguir é só um exemplo) e entre nessa pasta:

$ mkdir /home/vinicius/teste

$ cd /home/vinicius/teste


2. Baixe o arquivo de teste eicar.com e salve-o nessa pasta. Isso pode ser feito também através de um comando no terminal:

$ wget http://www.eicar.org/download/eicar.com


3. Agora, execute no terminal o comando:

$ clamscan


Se ele retornar uma mensagem como a seguir:

/home/vinicius/teste/eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 678712
Engine version: 0.95.2
Scanned directories: 1
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 2.597 sec (0 m 2 s)


é sinal de que a detecção de vírus do ClamAV está funcionando corretamente. Agora vamos testar a proteção residente.


4. Tente agora abrir o arquivo:

$ vi eicar.com


Se for negado o acesso ao arquivo, é sinal de que a proteção residente do ClamAV também está funcionando corretamente.


Feito isso, você tem a certeza de que o ClamAV está instalado no seu computador e que está funcionando adequadamente.

Fontes


1 comentários:

Antônio Vinícius disse...

Tutorial publicado no Viva o Linux:

http://www.vivaolinux.com.br/artigo/Instalacao-do-ClamAV-com-DazukoFS/

Atualização: incluídos os links para os arquivos de configuração que estão no Viva o Linux

Postar um comentário