ClamAV (Português)

From ArchWiki
Jump to: navigation, search

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

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 problemas/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://www.eicar.org/download/eicar.com.txt | clamscan -

A saída deve incluir:

stdin: Eicar-Test-Signature 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-sigsAUR.

Isso vai adicionar assinaturas/banco de dados de, por exemplo, MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc. Para a lista completa de banco de dados, veja a descrição de seu repositório no GitHub.

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/.

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. Copie /etc/clamav/clamav-milter.conf.sample para /etc/clamav/clamav-milter.conf e ajuste-o às suas necessidades. Por exemplo:

/etc/clamav/clamav-milter.conf
MilterSocket /run/clamav/clamav-milter.sock
MilterSocketMode 660
FixStaleSocket yes
User clamav
PidFile /run/clamav/clamav-milter.pid
TemporaryDirectory /tmp
ClamdSocket unix:/var/lib/clamav/clamd.sock
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.

OnAccessScan

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/infected.log
else
	# como "emerg", 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 gráficos
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: http://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 /var/lib/clamav/clamd.sock
# chown clamav:clamav /var/lib/clamav/clamd.sock

Então, edite /etc/clamav/clamd.conf - descomente essa linha:

LocalSocket /var/lib/clamav/clamd.sock

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

Veja também