ClamAV (Português) - ArchWiki

# ClamAV (Português)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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