ClamAV (Português)

Status de tradução:
Esse artigo é uma tradução de
ClamAV
. Data da última tradução: 2020-04-08. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Clam AntiVirus
é uma caixa de ferramentas de antivírus, código aberto (GPL), para UNIX. Ele fornece uma série de utilitários, incluindo um daemon multi-threaded flexível e escalável, um scanner de linha de comando e uma ferramenta avançada para atualizações automáticas de banco de dados. Como o uso principal do ClamAV é em servidores de arquivos/e-mails para desktops Windows, ele principalmente detecta vírus e malwares do Windows com suas assinaturas embutidas.
Instalação
Instale
o pacote
clamav
.
Atualizando o banco de dados
Atualize as definições de vírus com:
# freshclam
Se você está por trás de um proxy, edite
/etc/clamav/freshclam.conf
and update HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername e HTTPProxyPassword.
Os arquivos de banco de dados são salvos em:
/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
/var/lib/clamav/bytecode.cvd
Inicie/habilite
clamav-freshclam.service
para que as definições de vírus estejam sempre recentes.
Iniciando o daemon
Nota
Você precisa executar
freshclam
antes de iniciar o serviço pela primeira vez ou você poderá ter problema/erros que impedirão o ClamAV de iniciar corretamente.
O serviço chamado
clamav-daemon.service
.
Inicie
-o e
habilite
-o para iniciar quando da inicialização do sistema.
Testando o software
Para ter certeza que o ClamAV e as definições estão instaladas corretamente, execute um scan no
arquivo de teste EICAR
(uma assinatura inofensiva com nenhum código de vírus) com clamscan.
$ curl
https://secure.eicar.org/eicar.com.txt
| clamscan -
A saída
deve
incluir:
stdin: Win.Test.EICAR_HDB-1 FOUND
Do contrário, leia a parte Solução de Problemas ou peça por ajuda nos
Fóruns do Arch
.
Adicionando mais repositórios de bancos de dados/assinaturas
ClamAV pode usar banco de dados/assinaturas de outros repositórios ou fornecedores de segurança.
Para adicionar os mais importantes em um único passo, instale
clamav-unofficial-sigs
AUR
(veja a
descrição no GitHub
) ou
python-fangfrisch
AUR
(veja a
documentação online
). Ambos vão adicionar assinaturas/banco de dados de provedores populares, como por exemplo, MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc.
Opção nº 1: Configure Fangfrisch
Fangfrisch
foi projetado como um substituto mais seguro, flexível e coveniente para o clamav-unofficial-sigs, e requer
muito pouca configuração
.
Mais importante, o Fangfrisch nunca precisa ser executado com permissões de root, diferentemente de clamav-unofficial-sigs.
Crie a estrutura de banco de dados executando:
# sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb
Habilite
o
fangfrisch.timer
.
Opção nº 2: Configure clamav-unofficial-sigs
Habilite
o
clamav-unofficial-sigs.timer
.
Isso vai atualizar regularmente as assinaturas não oficiais baseadas nos arquivos de configuração no diretório
/etc/clamav-unofficial-sigs
.
Para atualizar as assinaturas manualmente, execute o seguinte comando:
# clamav-unofficial-sigs.sh
Para alterar as configurações padrão, acesse e modifique
/etc/clamav-unofficial-sigs/user.conf
.
Nota
Você ainda deve estar com o
clamav-freshclam.service
iniciado
para ter atualizações de assinaturas oficiais dos espelhos do ClamAV.
Banco de dados MalwarePatrol
Se você quiser de usar o banco de dados do MalwarePatrol, crie uma conta em
https://www.malwarepatrol.net/free-guard-upgrade-option
[
link inativo
2023-07-30 ⓘ]
.
Em
/etc/clamav-unofficial-sigs/user.conf
, altere o seguinte para habilitar essa funcionalidade:
malwarepatrol_receipt_code="SEU-NÚMERO-RECIBO" # Insira seu número de recibo aqui
malwarepatrol_product_code="8" # Use 8 se você tiver uma conta Free ou 15 se você for um cliente Premium.
malwarepatrol_list="clamav_basic" #
clamav_basic
ou
clamav_ext
malwarepatrol_free="yes" # Defina para
yes
se você tiver uma conta Free ou
no
see você tiver uma conta Premium.
Fonte:
https://www.malwarepatrol.net/clamav-configuration-guide/
Varrendo por vírus
clamscan
pode ser usado para varrer
(scan)
certos arquivos, diretórios home, um sistema inteiro:
$ clamscan meuarquivo
$ clamscan --recursive --infected /home
# clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /
Se você quiser que
clamscan
remova o arquivo infectado, adicione ao comando a opção
--remove
ou você pode usar
--move=/dir
para colocá-los em quarentena.
Você também pode se interessar em usar o
clamscan
para varrer arquivos grandes. Neste caso, anexe as opções
--max-filesize=4000M
e
--max-scansize=4000M
ao comando. "4000M" é o maior valor possível e pode ser diminuído conforme necessário.
Usar a opção
-l /caminho/para/arquivo
vai imprimir os logs do
clamscan
para um arquivo texto para localizar infecções relatadas.
Usando o milter
Milter vai realizar um scan em seu servidor sendmail por e-mail contendo vírus.
Ajuste as configurações de
/etc/clamav/clamav-milter.conf
às suas necessidades. Por exemplo:
/etc/clamav/clamav-milter.conf
MilterSocket /tmp/clamav-milter.socket
MilterSocketMode 660
FixStaleSocket yes
User clamav
MilterSocketGroup clamav
PidFile /run/clamav/clamav-milter.pid
TemporaryDirectory /tmp
ClamdSocket unix:/run/clamav/clamd.ctl
LogSyslog yes
LogInfected Basic
Crie
/etc/systemd/system/clamav-milter.service
:
/etc/systemd/system/clamav-milter.service
[Unit]
Description='ClamAV Milter'
After=clamav-daemon.service

[Service]
Type=forking
ExecStart=/usr/bin/clamav-milter --config-file /etc/clamav/clamav-milter.conf

[Install]
WantedBy=multi-user.target
Habilite
e
inicie
clamav-milter.service
.
Para
Postfix
, adicione as seguintes linhas para
/etc/postfix/main.cf
:
etc/postfix/main.cf
smtpd_milters = unix:/tmp/clamav-milter.socket
milter_default_action = tempfail
Verifique journalctl se a permissão para acessar o clamav-milter.socket para o postfix estiver configurada adequadamente; caso contrário, inclua o postfix do usuário no grupo clamav.
OnAccessScan
This article or section is out of date.
Reason:
A opção
ScanOnAccess
foi descontinuada e não funciona mais. Veja a
documentação do upstream
. (Discuss in
Talk:ClamAV (Português)
)
A varredura no acesso (
on-access scan
) requer que o kernel seja compilado com o módulo kernel
fanotify
(kernel >= 3.8). Verifique se
fanotify
foi ativado antes de ativar a varredura no acesso.
$ zgrep FANOTIFY /proc/config.gz
A varredura no acesso digitalizará o arquivo ao ler, escrever ou executá-lo.
Primeiro, edite o arquivo de configuração
/etc/clamav/clamd.conf
, adicionando o seguinte ao final do arquivo (você também pode alterar as opções individuais):
/etc/clamav/clamd.conf
# Ativa varredura no acesso, exige que clamav-daemon.service esteja em execução
ScanOnAccess true

# Define o ponto de montagem onde deve-se realizar recursivamente a varredura,
# isso poderia ser todo caminho ou vários caminho (uma linha por caminho)
OnAccessMountPath /usr
OnAccessMountPath /home/
OnAccessExcludePath /var/log/

# Sinaliza fanotify para bloquear quaisquer eventos em arquivos monitorados para realizar a varredura
OnAccessPrevention false

# Realiza a varredura em arquivos recém-criados, movidos ou renomeados
OnAccessExtraScanning true

# Verifica o UID do evento do fanotify
OnAccessExcludeUID 0

# Especifica uma ação para realizar quando o clamav detecta um arquivo malicioso
# é possível especificar um comando em linha também
VirusEvent /etc/clamav/detected.sh

# AVISO: clamd deve ser executado como root
User root
Em seguida, crie o arquivo
/etc/clamav/detected.sh
e adicione o conteúdo a seguir. Isso permite que você altere/especifique a mensagem de depuração quando um vírus tiver sido detectado pelo dispositivo de varredura no acesso do clamd:
/etc/clamav/detected.sh
#!/bin/bash
PATH=/usr/bin

alert="Signature detected: $CLAM_VIRUSEVENT_VIRUSNAME in $CLAM_VIRUSEVENT_FILENAME"

# Envia o alerta para o systemd logger se existir, do contrário para /var/log
if [[ -z $(command -v systemd-cat) ]]; then
        echo "$(date) - $alert" >> /var/log/clamav/detections.log
else
        # Isso poderia fazer com que seu DE mostre um alerta virtual. Acontece no plasma, mas o próximo alerta visual é muito melhor
        echo "$alert" | /usr/bin/systemd-cat -t clamav -p emerg
fi

# Envia um alerta para todos os usuários na interface gráfica.
XUSERS=($(who|awk '{print $1$NF}'|sort -u))

for XUSER in $XUSERS; do
    NAME=(${XUSER/(/ })
    DISPLAY=${NAME[1]/)/}
    DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
    echo "run $NAME - $DISPLAY - $DBUS_ADDRESS -" >> /tmp/testlog 
    /usr/bin/sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
                       DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
                       PATH=${PATH} \
                       /usr/bin/notify-send -i dialog-warning "clamAV" "$alert"
done
Se você está usando
AppArmor
, também é necessário permitir que o clamd execute como root:
# aa-complain clamd
Reinicie
o
clamav-daemon.service
.
Fonte:
https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html
Solução de programas
Erro: Clamd was NOT notified
Se você receber as seguintes mensagens após executar freshclam:
WARNING: Clamd was NOT notified: Cannot connect to clamd through 
/var/lib/clamav/clamd.sock connect(): No such file or directory
Adicione um arquivo sock ao ClamAV:
# touch /run/clamav/clamd.ctl
# chown clamav:clamav /run/clamav/clamd.ctl
Então, edite
/etc/clamav/clamd.conf
- descomente essa linha:
LocalSocket /run/clamav/clamd.ctl
Salve o arquivo e
reinicie
clamav-daemon.service
.
Erro: No supported database files found
Se você receber o erro abaixo quando iniciar o daemon:
LibClamAV Error: cli_loaddb(): No supported database files found
in /var/lib/clamav ERROR: Not supported data format
Isso acontece por causa de incompatibilidade entre a configuração
DatabaseDirectory
do
/etc/clamav/freshclam.conf
e
DatabaseDirectory
do
/etc/clamav/clamd.conf
.
/etc/clamav/freshclam.conf
apontando para
/var/lib/clamav
, mas
/etc/clamav/clamd.conf
(diretório padrão) apontando para
/usr/share/clamav
, ou outro diretório. Edite
/etc/clamav/clamd.conf
e substituta com o mesmo DatabaseDirectory como no
/etc/clamav/freshclam.conf
. Após isso, clamav vai iniciar com sucesso.
Erro: Can't create temporary directory
Se você obtiver o erro a seguir, junto com um 'HINT' contendo um número de UID e um de GID:
# can't create temporary directory
Corrija as permissões:
# chown
UID
:
GID
/var/lib/clamav & chmod 755 /var/lib/clamav
sendo
UID
e
GID
o informado na dica acima
Dicas e truques
Executar em múltiplas threads
Usando clamscan
Ao varrer um arquivo ou diretório a partir da linha de comando usando
clamscan
, apenas uma única thread de CPU é usada. Isso pode servir em casos em que o tempo não é crítico ou você não deseja que o computador fique lento. Se houver necessidade de varrer rapidamente uma pasta grande ou uma unidade USB, convém usar todas as CPUs disponíveis para acelerar o processo.
clamscan
é projetado para funcionar em uma única thread, então você pode usar
xargs
para executar a varredura em paralelo:
$ find /home/archie -type f -print0 | xargs -0 -P $(nproc) clamscan
Neste exemplo, o parâmetro
-P
para
xargs
executa
clamscan
na quantidade de processos igual à de CPUs relatada por
nproc
por vez. As opções
--max-lines
e
--max-args
permitirão um controle ainda melhor do envio em lote da carga de trabalho entre as threads.
Usando clamdscan
Se você já tiver o daemon
clamd
em execução,
clamdscan
pode ser usado (veja
#Iniciando o daemon
):
$ clamdscan --multiscan --fdpass /home/archie
Aqui, o parâmetro
--multiscan
permite que o
clamd
verifique o conteúdo do diretório em paralelo usando as threads disponíveis. O parâmetro
--fdpass
é necessário para passar as permissões do descritor de arquivo para
clamd
, pois o daemon está sendo executado sob o usuário e grupo
clamav
.
O número de threads disponíveis para
clamdscan
é determinado em
/etc/clamav/clamd.conf
através do parâmetro
MaxThreads
clamd.conf(5)
. Mesmo que você possa ver que o número de
MaxThreads
especificado é mais de um (o padrão atual é 10), quando você inicia a varredura usando
clamdscan
na linha de comando e não especifica a opção
--multiscan
, apenas uma thread eficaz da CPU será usado para a varredura.
Veja também
Wikipedia:ClamAV