Antivírus no Linux

Transcrição

Antivírus no Linux
Coluna do Kurt
COLUNA
Antivírus
no Linux
Como proteger seus clientes dos perigos da Internet.
A
o começar a escrever a coluna deste mês, pensei
comigo por que deveria escrever um artigo sobre
o uso de antivírus no Linux. Em todos os meus
anos de trabalho, eu nunca encontrei uma única máquina Linux sequer que estivesse infectada por algum
tipo de vírus (ao contrário de outras, que haviam sido
comprometidas por cavalos de Tróia ou algum tipo de
ataque direto). Então, por que escrever sobre isso? Por
outro lado, um grande número de pessoas usa o Windows
no computador pessoal, mas cada vez mais o Linux é a
plataforma de escolha nos servidores, o que me levou
a pensar: “Por que não proteger as máquinas Windows
usando os servidores Linux?”.
Verifiquei rapidamente e percebi que seria muito simples verificar o conteúdo dos emails recebidos usando o
ClamAV [1] e que é possível configurar proxy Squid para
usar o ClamAV. Mas o que eu não sabia era que é possível
configurar o Samba para usar o ClamAV e fazê-lo testar
os arquivos acessados antes de entregá-los ao usuário!
Um aviso importante: usar o ClamAV nos servidores como medida sanitária para desinfectar dados antes
que eles cheguem – via e-mail ou por tráfego HTTP – à
máquina Windows do usuário não é garantia de segurança. Se alguém usa Windows, é obrigatório o uso de
um antivírus localmente.
Infelizmente, não serei capaz de fornecer ao leitor
um passo-a-passo detalhado neste artigo, uma vez que
a instalação do antivírus varia bastante dependendo da
distribuição Linux (desde o tipo de pacote, hierarquia
de diretórios etc.) e isso não iria caber em um artigo de
apenas duas páginas. Então, vou “trapacear” e chamar
este artigo de ensaio.
Instalação e uso do ClamAV
A instalação do ClamAV é bastante simples, pois a maioria
das distribuições fornece pacotes do aplicativo por padrão.
Algumas (des)honrosas exceções são o Red Hat Enterprise
16
5 e o CentOS 5. Se o leitor estiver usando um desses sistemas, o modo mais fácil de instalar o ClamAV é usar os
pacotes RPM fornecidos por Dag [2]. Outras distribuições,
tais como Debian ou Fedora, separaram o ClamAV em
uma miríade de pacotes menores. Por exemplo, o Fedora 12
traz os seguintes pacotes para o aplicativo: clamav, clamavdata, clamav-data-empty, clamav-devel, clamav-filesystem,
clamavlib, clamav-milter, clamav-milter-sysvinit, clamavmilter-upstart, clamavscanner, clamav-scanner-sysvinit,
clamav-scanner-upstart, clamav-server, clamav-server-sysvinit,
clamav-update e exim-clamav (o Debian tem “apenas” uma
dúzia de pacotes para o aplicativo).
O ClamAV pode ser executado localmente para varrer arquivos específicos, diretórios etc., da mesma forma
que qualquer antivírus comum. Contudo, o ClamAV
também oferece suporte a um modo servidor, o que
disponibiliza o aplicativo para outros sistemas na rede.
Isso significa que é possível, por exemplo, manter uma
máquina central executando o ClamAV que deverá estar
sempre atualizada e que tenha muito mais capacidade
de processamento para ser usado por outros computadores, tais como os servidores de email, para analisar
o conteúdo dos dados manipulados por eles à caça de
vírus, sem comprometer o seu desempenho. Isso também simplifica a disponibilização de recursos antivírus a
outros aplicativos e serviços. Basta enviar um conteúdo
qualquer ao servidor equipado com o ClamAV e receber a resposta – não há necessidade de integração de
bibliotecas nem nada muito complicado. Simplesmente
instale o clamav-scanner-sysvinit package no Fedora ou
o clamav-daemon no Debian e configure-o para iniciar
automaticamente. Será necessário editar o arquivo clamd.
conf (no Fedora, disponível no diretório /etc/clamd.d/)
e descomentar as linhas TCPSocket e TCPAddr:
TCPSocket 3310
TCPAddr 127.0.0.1
http://www.linuxmagazine.com.br
COLUNA | Kurt
Atualização do ClamAV
O conceito mais importante a ser entendido neste artigo
é a atualização das assinaturas do antivírus. A maioria
dos programas antivírus depende de assinaturas para
detectar vírus; pouquíssimas soluções implementam
métodos heurísticos ou monitoramento baseado em
comportamento.
Para atualizar as assinaturas de vírus do ClamAV, é
preciso instalar o pacote clamav-update no Fedora, ou
o clamav-freshclam no Debian. Esse pacote inclui um
binário chamado freshclam, que baixa as atualizações e
as integra às assinaturas de vírus já existentes. Para configurar o freshclam para ser executado, é preciso editar o
arquivo freshclam.conf. As únicas alterações geralmente necessárias são: comentar a linha Example no início
do arquivo (o que causará um erro e impedirá que o
freshclam seja executado) e alterar a linha DatabaseMirror
para apontar para os espelhos do ClamAV do seu país:
# Descomente a linha abaixo e substitua XY
# pelo código do seu país. Há uma lista em
# http://www.iana.org/domains/root/db/
DatabaseMirror db.br.clamav.net
Em seguida, é possível adicionar o freshclam aos
arquivos crontab do sistema em /etc/ ou no crontab
do root para que seja executado regularmente e notifique os resultados ao administrador. Opcionalmente,
também é possível usar o comando OnUpdateExecute no
freshclam.conf para executar um script de notificação:
0 * * * * /usr/bin/freshclam | mail -s “freshclam
update info” [email protected]
Uma nota crítica: ao usar o servidor clamd, ele vem
com assinaturas ultrapassadas, pois as carrega na primeira vez que for executado. Para garantir que o clamd
tenha as assinaturas mais recentes, é preciso configurar
o freshclam para enviar a ele um comando RELOAD. Para
isso, altere o parâmetro NotifyClamd no arquivo freshclam.
conf para que ele aponte para o arquivo de configuração
do clamd. No Fedora, o exemplo seria:
NotifyClamd /etc/clamd.scan.conf
ClamAV + Sendmail
Há muitos anos, se você quisesse fazer o Sendmail filtrar
emails por meio de um programa externo, era preciso
embrenhar-se pelo arquivo sendmail.mc – você sabe, o
arquivo que parecia ruído de linha e não era nada legal
de se ler. Por sorte, o Sendmail implementou o Milter
(Mail Filter, ou filtro de email), que permite rejeitar e
18
modificar conexões, mensagens e destinatários; acrescentar ou apagar cabeçalhos, re-escrever o corpo de
mensagens e assim por diante. o Postfix também implementou o Milter, então, se o seu programa oferecer uma
interface de Milter, é possível utilizá-lo com facilidade
em conjunto com o Sendmail ou o Postfix. Ao varrer
emails com o ClamAV, é possível comunicar-se com
o ClamAV por meio de um socket Unix local ou via
TCP (seja no servidor local ou em outra máquina). A
alternativa via TCP é bem fácil de configurar, uma vez
que o clamd esteja em execução (e supondo que seja
usada a porta padrão 3310). Basta adicionar a seguinte
linha ao sendmail.mc:
INPUT_MAIL_FILTER(`clamav`, `S=inet:[email protected],
F=,T=S:4m;R:4m`)dnl
Em seguida, simplesmente recompile o sendmail.
mc, reinicie o Sendmail e pronto. O Postfix é um pouco
mais complicado – é preciso editar dois arquivos – mas
os detalhes estão disponíveis online [3]. Além disso, se
você não desejar ou não puder integrar o ClamAV ao
agente de email, pode usar o ClamSMTP como proxy
[4] e filtro de email.
ClamAV + Squid
Agora a coisa começa a ficar interessante. parece que
uma das técnicas mais populares para criar botnets é
por downloads do tipo drive-by. De forma simplificada,
um agressor insere conteúdo malicioso numa página
web ou num servidor de anúncios e depois infecta várias
centenas ou até milhares de clientes Windows que são
comprometidos e subjugados. Então, como podemos
adicionar a busca de vírus ao proxy web? O Squid 3.0
possui suporte a um cliente ICAP (Internet Content
Adaptation Protocol) [5], que é bem semelhante ao Milter do Sendmail, no sentido de que permite repassar o
processamento (tal como o de busca de vírus) para um
outro servidor. Para ativar um cliente ICAP no Squid,
basta usar a opção --enable-icap-client ao compilá-lo:
./configure --enable-icap-client
Mas isso é só metade da batalha. Em seguida, é
preciso obter um servidor ICAP para o ClamAV: atualmente, parece haver somente um, o c-icap. Mas a boa
notícia é que ele é compatível com Linux e também
deve funcionar com sistemas BSD. Para mais detalhes sobre a instalação do c-icap e a configuração do
Squid para usá-lo, o site do c-icap possui uma página
de instalação que cobre tudo [6]. É importante notar
que, se você estiver em busca de uma solução antivírus
http://www.linuxmagazine.com.br
Kurt | COLUNA
para Linux, certifique-se de que ela possua um servidor
ICAP funcional, caso deseje usá-la em conjunto com
seu proxy web.
Mais informações
ClamAV + Samba
[2] Pacotes de Dag Wiers para o ClamAV:
http://dag.wieers.com/rpm/packages/clamav/
Depois de trancafiar seus emails e a navegação na Web,
o que acontece se alguém trouxer um pen drive com
um vírus, e ele se copiar para o servidor de arquivos
na esperança de infectar outros sistemas? Na maioria
dos casos, o vírus terá sucesso – a menos, claro, que o
servidor de arquivos possua recursos antivírus. O módulo samba-vscan [7] adiciona esse recurso ao Samba.
No momento em que um arquivo com vírus é acessado, ele deve ser detectado e o acesso a ele bloqueado
(pelo menos é essa a ideia). Detalhes da instalação são
cobertos em maior profundidade no arquivo INSTALL.
Preguiçosos: Copfilter
Se você puder dedicar uma máquina (física ou virtual)
à busca de vírus na rede, recomendo adotar o Copfilter
[8], e se você quiser uma solução de instalação e gerenciamento facílimos, use o IPCop, que o inclui na
forma de pacote [9]. n
[1] ClamAV: http://www.clamav.net/
[3] Filtragem de vírus com Postfix e ClamAV:
http://www.debian-administration.
org/articles/259
[4] ClamSMTP: http://memberwebs.
com/stef/software/clamsmtp/
[5] ICAP:
http://pt.wikipedia.org/wiki/Protocolo_ICAP
[6] Servidor c-icap:
http://c-icap.sourceforge.net/install.html
[7] Open Antivirus:
http://www.openantivirus.org/projects.php
[8] Copfilter: http://www.copfilter.org/
[9] IPCop:
http://sourceforge.net/apps/trac/ipcop/wiki
Loja
Edição do mês
Livros
Seções
Ao se inscrever no
portal, você se cadastra
automaticamente em
nossa newsletter e recebe
toda semana notícias
Linux Magazine
#65 | Abril de 2010
e promoções
exclusivas.
Notícias
19