Introdução
Trata-se de um anti-vírus desenvolvido em gnuC que roda multi-plataforma nos diversos sabores de Unix. Tem como pretensão rodar como um anti-vírus de acesso a arquivos. Isto é ideal para servidores SAMBA/NIS/MARS. Também é possível rodar este anti-vírus em conjunto com o AMAVIS e o MailScanner para proteger servidores de Email e com o Apache para proteger servidores WEB.
Ambiente de teste
As configurações abaixo descritas foram realizadas em um Intel Celeron 1GHZ, 256MB Ram. As distribuições usadas como teste foram:
- Redhat Linux 7.3 - kernel 2.4.18
- Conectiva Linux 8.0 - kernel 2.4.18
As duas distribuições foram instaladas na modalidade FULL .
Downloads necessários
Inicio
Vá para seu diretório favorito onde você deixa os fontes das coisas que compila e destarreie o arquivo
clamav-053.tar.gz:
$ cd tmp
$ tar xzfv $HOME/mydownloads/clamav-053.tar.gz
Configurando o módulo DAZUKO
Aqui um ponto muito importante. Para poder verificar o conteúdo de tudo que é acessado, o ClamAV se utiliza de um módulo que trabalha em comunicação com o kernel do sistema. Sendo assim é necessários que os fontes do kernel estejam devidamente instalados em seu computador. Para o RH 7.3 o pacote se chama kernel-source-2.4.18-3.i386.rpm e está localizado no CD 2. No CL8 o pacote se chama kernel-source-2.4.18-3U8_4cl e se encontra no CD 2.
Tendo os fontes do kernel instalados, vamos ao passo a passo para instalar o DAZUKO. Isto é coisa para gente grande e por isso deve ser feito com o usuário root.
$ pwd
/home/marcolino/tmp/clamav-053
$ su -
# cd /home/marcolino/tmp/clamav-053
# cd support/dazuko
# make dazuko
# cp dazuko.o /usr/local/sbin
Até aqui compilamos o módulo dazuko e copiamos ele para
/usr/local/sbin. Coloquei aí porque não quis perder tempo acertando o kernel para incluir ele diretamente junto com o fonte. Para fazer isso consulte o site
www.dazuko.org. Eu não fiz e tudo está funcionando.
Agora vamos instalar o DAZUKO. Continuamos como root.
# mknod -m 666 /dev/dazuko c 254 0
# insmod /usr/local/sbin/dazuko.o
É uma boa idéia carregar isso antes do ClamAv. Coloquei em meu script de start/stop para carregar. Depois você
poderá ver com isso ficou.
Configurando o ClamAV
Bom aqui é o ritual de sempre. Como root:
# cd /home/marcolino/tmp/clamav-053
# ./configure --prefix=/usr --sysconfdir=/etc
# groupadd clamav
# adduser -g clamav -s/bin/false -c"ClamAV" clamav
# make
# make install
Tudo sem surpresas nas duas distros aqui. Se você tiver alguma dificuldade pode ter certeza que é a falta de algum pacote de desenvolvimento. Como estou com as distros instaladas full, não posso dizer nada a respeito :-( .
Acertando o /etc/clamav.conf
Abaixo eu descrevo brevemente o que deve ser mexido ou não neste arquivo OK.
- Encontrar a linha "Example" e comentar.
- Encontrar a linha "Log File", descomentar e alterar para /var/log/clamd.log
- Encontrar a linha "Log File Max Size" e descomentar
- Encontrar a linha "Log Verbose" e descomentar
- Encontrar a linha "Log Time" e descomentar
- Encontrar a linha "Pid File", descomentar e alterar para /var/run/clamav/clamav.pid
- Encontrar a linha "Data Directory" e descomentar
- Encontrar a linha "Local Socket" e comentar
- Encontrar a linha "TCP Socket" e descomentar
- Encontrar a linha "Clamuko Scan OnLine" e descomentar
- Encontrar a linha "Clamuko Include Path" e alterar para /home
A linha
Clamuko Include Path discrimina quais os diretórios que serão scaneados com o anti-vírus. Sugiro para servidores de arquivo que apenas o diretório
/home seja scaneado ( se este é o lugar onde estão os arquivos de usuário ;-) ) fazendo com que o sistema então tenha uma performance mais agradável escaneando apenas o que realmente interessa.
Deve-se então criar o diretório
/var/run/clamav e dar a ele direitos para o usuários clamav.
# mkdir /var/run/clamav
# chown clamav:clamav /var/run/clamav
Bem para finalizar produzi um script para inicializar e parar o daemon do ClamAV. Reconheço que não está muito bom mas é meu primeiro script feito do Zero OK. Melhorias serão bem vindas. Abaixo a listagem:
#! /bin/sh
#
# clamd Start/Stop the clamav daemon.
#
# processname: clamd
# config: /etc/clamav.conf
# pidfile: /var/run/clamav/clamd.pid
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start)
gprintf "Starting %s: " "clamd"
insmod /usr/local/sbin/dazuko.o
daemon clamd
echo
touch /var/lock/subsys/clamd
;;
stop)
gprintf "Stopping %s: " "clamd"
echo "QUIT\r" > /tmp/command
cat /tmp/command | telnet 127.0.0.1 3310
sleep 5
kill `cat /var/run/clamav/clamd.pid`
sleep 2
rmmod dazuko
echo
rm -f /var/lock/subsys/clamd
;;
status)
echo "PING\r" > /tmp/command
cat /tmp/command | telnet 127.0.0.1 3310
;;
reload)
echo "RELOAD\r" > /tmp/command
cat /tmp/command | telnet 127.0.0.1 3310
;;
*)
gprintf "Usage: %s {start|stop|status|reload}\n" "clamd"
exit 1
esac
exit 0
Aqui terminamos de configurar o ClamAV. Se você chegou até aqui, precisa ser orientado que:
Não é necessária nenhuma alteração para o anti-vírus atuar junto com um servidor de arquivos/WEB qualquer.
Uma dica interessante ainda pode ser dada. Inclua isto em seu crontab:
freshclam
Isto atualiza a base de dados do ClamAV.
Bom, agora vamos por para funcionar com um Servidor de EMAIL !!
Amavis ou MailScanner ?
Eu realmente não sei qual dos dois é melhor ou pior. Depende mais do gosto de cada um. Ambos são interpretados já que rodam em perl e dependem de várias coisas estarem configuradas no perl para funcionar. Instalei os dois e achei o MailScanner mais fácil de configurar. Meu ambiente você já conhece. A única ressalva é que em meus teste utilizei o sendmail como MTA, por motivos óbvios: se funcionar bem com o sendmail funcionará bem com quase todos os outros MTA's. Digo isso pela complexidade de configuração que o sendmail apresenta e não pela funcionalidade ou qualidade OK ( antes que isto vire um flame war :-) ). Outras alternativas óbvias seriam o postfix e o qmail. Fique a vontade.
Não me focarei na configuração do AMAVIS/MailScanner com o Sendmail mas sim na instalação do ClamAV como Vírus Scanner para estes softwares.
Amavis
Se tudo correr bem com a sua instalação, você terá um arquivo chamado
amavis.conf em
/etc/amavis. Basta então editar este arquivo em seu editor favorito e descomentar a linha:
virus-scanner = CLAM
Depois é só acertar a linha:
clamscam = /usr/bin/clamscan
Moleza né ! BUG NA ÁREA !
Você precisará acertar o código do Amavis para rodar com o ClamAV...
Abra em seu editor preferido o arquivo
/usr/lib/perl5.6.1/site_perl/5.6.1/AMAVIS/AV/CLAM.pm
Vá na
linha 49 - inclua um
/ após a palavra
parts.
Para rodar legal recomendo que você baixe e instale as seguintes bibliotecas e pacotes :
Pode ser que eu me esqueci de anotar alguma ... Caso você queira acrescentar alguma coisa, esteja a vontade. Se quiser que isto seja incluído neste texto, mande-me um email OK.
Basicamente estas bibliotecas acima servem para extração de arquivos em anexo ao email para então o AMAVIS conseguir scannear.
MailScanner
Bom este foi o mais BABA de tudo que enfrentei até aqui :-) . Puxei o arquivo, instalei e acertei o arquivo de configuração. VOA-LÁ ! Talvez tenha sido assim porque instalei o AMAVIS antes, não sei dizer ...
Acerte você também este arquivo. Vá em
/etc/MailScanner/MailScanner.conf e edite conforme abaixo.
- Localize a linha "Virus Scanners = " e coloque clamav
- Localize a linha "Minimum Code Status = " e coloque unsupported
Pronto !!!!!!!!!!
Agradecimento e dados para contato.
Quero agradecer a Deus que me ajudou até aqui.
Contatos comigo podem ser conseguidos através do email
marcolino@facil.com . Também é possível encontrar gente boa na lista
linuxabc@yahoogrupos.com.br.
Bom gente valeu.
1. TUTORIAL COMPLETO
[1] Comentário enviado por
fabineri em 20/06/2003 - 13:04h:
Não consigo compilar dá o seguinte erro:
gcc -g -O2 -o .libs/clamscan clamscan.o options.o getopt.o others.o manager.o treewalk.o -L/tmp/clamav/clamav-0.54/libclamav /tmp/clamav/clamav-0.54/libclamav/.libs/libclamav.so -lpthread
/tmp/clamav/clamav-0.54/libclamav/.libs/libclamav.so: undefined reference to `inflate'
/tmp/clamav/clamav-0.54/libclamav/.libs/libclamav.so: undefined reference to `zError'
/tmp/clamav/clamav-0.54/libclamav/.libs/libclamav.so: undefined reference to `inflateEnd'
/tmp/clamav/clamav-0.54/libclamav/.libs/libclamav.so: undefined reference to `inflateInit2_'
collect2: ld returned 1 exit status
make[1]: ** [clamscan] Erro 1
make[1]: Leaving directory `/tmp/clamav/clamav-0.54/clamscan'
make: ** [install-recursive] Erro 1
o que faço me ajuda por favor
[2] Comentário enviado por
fabineri em 22/06/2003 - 14:37h:
O erro acontece pois exists a dependência das seguintes bibliotecas:
Requerimento : zlib, zlib-devel, gcc, bzip2
Se elas estiverem instaladas tudo fica OK.
apanhei mas descobri.
[3] Comentário enviado por
marcolinux em 23/06/2003 - 14:13h:
Certo mas não precisava republicar o meu artigo né !
[4] Comentário enviado por
lamss em 04/11/2003 - 19:49h:
Eu estou tentando instalar o Clamav no CL9 e dá a seguinte mensagem.
[root@linux clamav-0.60]# ./configure --prefix=/usr --sysconfdir=/etc
checking build system type... i586-pc-linux-gnulibc1
checking host system type... i586-pc-linux-gnulibc1
checking target system type... i586-pc-linux-gnulibc1
creating target.h - canonical system defines
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets ${MAKE}... yes
checking for gawk... (cached) gawk
checking for gcc... gcc
checking for C compiler default output... configure: error: C compiler cannot create executables
[5] Comentário enviado por
marcolinux em 06/11/2003 - 10:43h:
Cara sinceramente... eu também não consegui fazer a instalação em cima do Conectiva 9. parece que ele quando instalado FULL falta algum pacote ou o compilador esta bugado... Desculpe mas o problema não é no CLAMAV e sim em sua DISTRO. Nada contra a Conectiva, mas em qualquer outra eu já consegui ( incluindo o Conectiva 8 ) e nesta não. Existe um folclore que diz que todas as versões ímpares do Conectiva são cheias de falhas...
[6] Comentário enviado por
lamss em 10/11/2003 - 21:08h:
É por que o conectiva 9 vc tem que instalar as bibliotecas que servem para compilação manualmente mesmo ná hora da instalação agora sim eu consegui instalar esta funcionando belezinha o clamav.
Olha para quem quizer uma molezinha de instalação sem tar mais um rpm o site onde baixei o clamav em rpm é:
http://rpm.pbone.net/index.php3/stat/11/limit/1/dl/40/vendor/1595
[7] Comentário enviado por
Alex VirtualBoy em 05/03/2004 - 14:56h:
QUanto ao problema do "C compiler cannot create executables", é que estão faltando as bibliotecas de desenvolvimento do gcc e glibc. Se não me engano se chama gcc-devel.
[8] Comentário enviado por
inf_sheila em 12/03/2004 - 17:49h:
quando dou o seguinte comando
./Clamav stop
da o seguinte erro
Stopping %s: clamd
./clamav: kill: cat /var/run/clamav/clamd.pid: no such pid
o que pode ser e como resolvo
[9] Comentário enviado por
mpgo_2000 em 23/04/2004 - 13:03h:
estou usando Conectiva 8
To tentando instalar o amavis-ng-0.1.4.1.orig, mas quando eu dou make dá o seguinte erro:
make[1]: Entering directory `/home/marcos/antivirus/amavis-ng-0.1.4.1.orig/amavis-milter'
cc \
-DAMAVISD_SOCKET=\"/var/run/amavis/milter.amavis\" \
-DRUNTIME_DIR=\"/var/spool/amavis\" \
-DPID_FILE=\"/var/run/amavis/amavis-milter.pid\" \
-o amavis-milter amavis-milter.c \
-L/usr/lib/libmilter/ -lmilter -lpthread
amavis-milter.c:53: libmilter/mfapi.h: No such file or directory
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/marcos/antivirus/amavis-ng-0.1.4.1.orig/amavis-milter'
make: *** [subdirs] Error 2
Amigos, me ajude por favor, já faz quase um mês que to tentando instalar um antii-virus, mas não consigo, já peguei vários tutoriais, e meu conhecimento em linux é limitadissimo :(
[10] Comentário enviado por
andersonmo7 em 15/04/2005 - 15:50h:
primeiramente, parabnes pelo artigo.
Utilizo dist Debian. Fiz o dazuko funcionar (tive que recompílar o kernel e tudo mais).
Instalei o Clamv, blz.
Copiei um arquivo com virus via scp e ele permitiu a gravação na boa.
O meu clamd.conf eu habilitei o ClamukoScanOnLine ClamukoScanOnAccess ClamukoIncludePath /home.
Vc pode dar uma ajuda ?
[11] Comentário enviado por
removido em 28/12/2008 - 13:34h:
Marcolino,
Tive problemas em compilar o dazuko com o kernel 2.6.27-gentoo-r7 (kernnel 2.6.27 com patches aplicados pelo pessoal do gentoo).
Gostaria de saber se você também teve problemas com algum kernek 2.6.27.X e, se sim, como fez para resolvê-lo.
Grande abraço.
E, para variar, ótimo artigo.