ClamAV (Português) - ArchWiki

Jump to content
From ArchWiki
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-sigsAUR (veja a descrição no GitHub) ou python-fangfrischAUR (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.

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

Category:

- Security (Português)

Hidden category:

- Pages or sections flagged with Template:Out of date