Para proteção em tempo real (Clamav oferece somente para o
Linux) faça o seguinte, mas vou logo avisando, você terá que ter um bocado de memória RAM, pois o ClamAv é um glutão de memória RAM que consome somente ele, no mínimo 3GB, sem estar fazendo nada, só existindo.
Com atualizações e varreduras o ClamAv chega brincando em 4GB ou mais.
Alguém pode achar pouco, mas quem utiliza VPS sabe como isso é limitador e vários que trabalham com servidores web, por exemplo, trabalham também com VPS.
Lembrando que o Clamav em modo completo seguidas vezes dá uma síncope: ERROR... e daí tem que refazer todo o processo de cura. Vá se acostumando.
Para ver quais pacotes são oferecidos para cada distribuição veja:
Packages - ClamAV Documentation
Para poder ter On-access scanning requer um sistema executando um kernel Linux versão >= 3.8 com fanotify compilado, sem o fanotify não rola o On-access Scanner.
Verifique a configuração do kernel para a presença de fanotify executando:
# cat /boot/config-`uname -r` | grep FANOTIFY
Caso tiver habilitado no kernel:
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
E se isso aparecer também:
CONFIG_FANOTIFY=y
# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
então está habilitado, mas a verificação de acesso será restrita ao modo somente notificação, ou seja, só vai avisar que tem vírus, mas fará absolutamente nada.
Caso retornar nada ou retornar outra coisa que não acima, por exemplo, "arquivo ou diretório inexistente", então o notify não está presente no kernel. Deverá compilar o kernel habilitando o notify.
E seja feliz compilando o kernel só para ter o Clamav On-access scanning; ou pode usar o inotify (DDD).
Aqui tem como habilitar um módulo do kernel:
Habilitar módulo do kernel (sem o compilar completamente) [Dica]
E é "somente" uma dessas configurações que se deve fazer para ter o On-access scanning:
ClamAV blog: Configuring On-Access Scanning in ClamAV
Debian e derivados:
# apt-get update
# aptitude safe-upgrade
Para alguns pacotes a seguir você terá que habilitar os repositórios non-free (recomendação da página oficial do Clamav):
# aptitude install libclamunrar9 unrar arc arj bzip2 cabextract lhasa lzop nomarch p7zip-full pax rpm tnef unrar-free unzip zip
Instalando:
# aptitude install clamav clamav-base clamav-daemon clamav-docs clamav-freshclam clamav-milter
Execute como root ou sudo:
# chown -R clamav:clamav /usr/local/share/clamav # verifique se é o caminho correto na sua distribuição
Iniciando e habilitando:
# systemctl start clamav-daemon
# systemctl start clamav-freshclam
# systemctl enable clamav-daemon
# systemctl enable clamav-freshclam
Parando os serviços:
# systemctl stop clamav-daemon
# systemctl stop clamav-freshclam
Atualizando as bases:
# freshclam
Testando a varredura baixando o pacote de testes de vírus do Clamav:
# aptitude install clamav-testfiles
# freshclam
Obs.: para cada vez que der o freshclam deverá antes parar o clamav-freshclam, senão dá erro.
# systemctl start clamav-freshclam
# systemctl start clamav-daemon
Confira se está "runando":
# systemctl status clamav-daemon
# systemctl status clamav-freshclam
Com o comando abaixo provavelmente dará um dos dois famigerados erros lá de cima:
# clamdscan /usr/share/clamav-testefiles/
Teste assim:
# clamdscan --fdpass /usr/share/clamav-testfiles/
ou
# clamdscan --stream /usr/share/clamav-testfiles/
Deverá encontrar 46 arquivos infectados.
Na documentação tem o seguinte:
--stream
Forces file streaming to clamd. This is generally not needed as clamdscan detects automatically
if streaming is required. This option only exists for debugging
and testing purposes, in all other cases --fdpass is preferred.
Ali diz que --stream força o clamd e que o clamd geralmente detecta automaticamente (ha ha ha) e que essa opção existe para debug e testes; em qualquer outro caso use --fdpass.
Daí podemos remover os arquivos de teste:
# aptitude purge clamav-testefiles
Criando um diretório de quarentena:
# cd /home
# mkdir clamav
# cd clamav
# mkdir quarentena
Agendando no cron:
# crontab -e
20 23 * * * root systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam
#
40 23 * * 0,3 root clamdscan --exclude-dir="^/sys" / --move=/home/clamav/quarentena
#
Salve e saia.
Agende como quiser no crontab quantas varreduras quiser de acordo com as suas necessidades.
Instale o htop ou use o top para ver que o Clamd cria dois processos (ou mais) em /usr/sbin/clamd com --foreground=true e não adianta colocar false nos arquivos de configuração /etc/clamav/clamd.conf e /etc/clamav/freshclam.conf que mesmo assim esse dois processos continuam existindo a seu bel praazer. Eles são instalados juntos com o executável clamd em /usr/sbin (no Debian).