Skip to main content

ClamAV

· 10 min read


Introdução


O ClamAV é um software antivírus gratuito e de código aberto (licenciada sob GPLv2) para sistemas operacionais Unix, incluindo Linux, macOS e FreeBSD. Ele é projetado para detectar malware, incluindo vírus, cavalos de Troia, worms, spyware e outros tipos de ameaças. Ao contrário de suites de segurança tradicionais para endpoint, o ClamAV se especializa na verificação de e-mails. Para uma suite de segurança para endpoint completa, é recomendado o Cisco Secure Endpoint.


Sue uso se dá principalmente em servidores de e-mail, servidores de arquivos e em outras situações em que a detecção de malware é necessária. Ele usa uma combinação de assinaturas de vírus e mecanismos heurísticos para detectar malware, e é conhecido por sua alta taxa de detecção e baixo número de falsos positivos.


Principais recursos do ClamAV:

RecursosDescrição
Verificação Rápida de ArquivosO ClamAV é otimizado para a rápida verificação de arquivos.
Proteção em Tempo Real (Apenas Linux)O cliente ClamOnAcc para o daemon de verificação ClamD permite a verificação em tempo real em sistemas Linux modernos, com a capacidade de bloquear o acesso a arquivos.
Detecção Abrangente de MalwareDetecta milhões de vírus, worms, trojans e várias outras formas de malware, incluindo vírus de macro do Microsoft Office e malware móvel.
Tempo de Execução de Assinatura de BytecodeUtiliza um tempo de execução de assinatura de bytecode, alimentado pelo LLVM ou um interpretador de bytecode personalizado, permitindo a criação de detecções complexas.
Bancos de Dados de Assinaturas AssinadasGarante a execução apenas de definições de assinatura confiáveis usando bancos de dados de assinaturas assinadas.
Verificação de Arquivos em Arquivos e CompactadosVerifica arquivos em arquivos compactados, protegendo contra "archive bombs". Suporta formatos como Zip, RAR, 7Zip, ARJ, Tar, entre outros.
Análise de Arquivos Executáveis do WindowsOferece suporte à análise de arquivos executáveis do Windows (PE) em formatos de 32 e 64 bits, incluindo arquivos PE compactados ou ofuscados.
Suporte a Arquivos ELF e Mach-OSuporta arquivos ELF e Mach-O de 32 e 64 bits.
Formatos de Arquivos de E-mailOferece suporte a quase todos os formatos de arquivos de e-mail e outros formatos especiais, como HTML, RTF, PDF e arquivos criptografados.
Atualizador de Banco de Dados AvançadoInclui um atualizador de banco de dados avançado com suporte para atualizações programadas, assinaturas digitais e consultas de versão de banco de dados baseadas em DNS.


Download e Configuração


Vamos baixar e instalar o ClamAV, vou usar o pacote disponibilizado no site oficial.

# Atualize a lista de pacotes e instale o ClamAV e o daemon:
sudo apt update && sudo apt install -y clamav-daemon clamav

# Pare o processo do freshclam para evitar conflitos durante a configuração inicial:
systemctl stop clamav-freshclam

# Atualize os bancos de dados de vírus do ClamAV:
sudo freshclam

# Reinicie o processo do freshclam e inicie o daemon do ClamAV:
systemctl start clamav-freshclam clamav-daemon

Para ver a versão do Clamav: clamscan --version.
Verificar um arquivo específico em busca de vírus: clamscan /path/to/file.


Vamos adicionar algumas assinaturas extras que são mantidas pelo projeto ClamAV Unofficial Signatures (CUS), que é um projeto de código aberto separado que visa fornecer assinaturas de vírus adicionais para o ClamAV.


O que vamos fazer em seguida é baixar alguns scripts e configurações necessários para usar as assinaturas de malware extras fornecidas pelo CUS. Quando os scripts são executados, eles baixam as assinaturas mais recentes do CUS e as adicionam ao ClamAV, permitindo que ele detecte uma ampla variedade de ameaças de malware.

# Entre no diretório abaixo:
cd /usr/local/src/

# Baixe a assinatura:
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/clamav-unofficial-sigs.sh

# Mova o script para o diretório de sistema apropriado e ajuste as permissões:
sudo mkdir /usr/local/sbin/ && sudo mv clamav-unofficial-sigs.sh /usr/local/sbin/clamav-unofficial-sigs.sh
sudo chmod 0755 /usr/local/sbin/clamav-unofficial-sigs.sh

# Crie o diretório de configuração:
sudo mkdir -p /etc/clamav-unofficial-sigs/

# Baixe os arquivos de configurações:
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/master.conf -O /etc/clamav-unofficial-sigs/master.conf
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/user.conf -O /etc/clamav-unofficial-sigs/user.conf
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/os/os.ubuntu.conf -O /etc/clamav-unofficial-sigs/os.conf

# Force a atualização das assinaturas de malware fornecidas pelo CUS:
sudo /usr/local/sbin/clamav-unofficial-sigs.sh --force

# Instale os arquivos de configuração adicionais:
sudo /usr/local/sbin/clamav-unofficial-sigs.sh --install-logrotate
sudo /usr/local/sbin/clamav-unofficial-sigs.sh --install-man

# Entre no diretório abaixo:
cd /etc/systemd/system/

# Baixe o '.service' e o '.timer' do CUS:
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/systemd/clamav-unofficial-sigs.service -O clamav-unofficial-sigs.service
sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/systemd/clamav-unofficial-sigs.timer -O clamav-unofficial-sigs.timer

# Habilite o '.service' e o '.timer' que acabamos de baixar para iniciar no Boot:
systemctl enable clamav-unofficial-sigs.service
systemctl enable clamav-unofficial-sigs.timer

# Inicie o '.timer':
systemctl start clamav-unofficial-sigs.timer

# Verifique se as assinaturas de malware estão carregadas corretamente:
clamscan --debug 2>&1 /dev/null | grep "loaded"


Buscando por Vírus


Para buscar por vírus podemos executar o comando abaixo:

clamscan -r /mnt

# Caso o ClamAV encontre um arquivo infectado, podemos remover esses arquivos:
clamscan --infected --remove --recursive /mnt


Componentes do ClamAV


Vamos ver alguns componentes do ClamAV e qual o papel eles desempenham.

ComponenteDescrição
clamav-daemonO clamav-daemon é o daemon (ou serviço) principal do ClamAV que realiza a verificação em tempo real dos arquivos. Ele permanece em execução em segundo plano e monitora constantemente os arquivos em busca de ameaças.
Quando um arquivo é acessado ou modificado, o clamav-daemon entra em ação para realizar a verificação.
clamav-freshclamO clamav-freshclam é responsável por atualizar os bancos de dados de assinaturas de vírus do ClamAV. Ele é executado periodicamente para baixar as últimas definições de vírus e atualizar o banco de dados local.
Essas atualizações são cruciais para garantir que o ClamAV esteja ciente das ameaças mais recentes.
clamdÉ um daemon multi-threaded que usa a biblioteca libclamav para escanear arquivos em busca de vírus. Pode ser configurado para escanear em tempo real ou ser usado para escaneamento sob demanda. Esse daemon é usado no clamav-daemon.service.
clamdscanÉ um cliente para clamd que simplifica a tarefa de escanear arquivos.
clamdtopÉ uma ferramenta para monitorar uma ou várias instâncias do clamd.
ClamOnAccFornece escaneamento em tempo real para sistemas Linux. Pode prevenir o acesso a arquivos maliciosos, mas o comportamento padrão é de notificação apenas.
clamscanÉ uma ferramenta de linha de comando para escanear arquivos e diretórios para vírus. Não requer uma instância em execução do clamd; cria um novo motor e carrega o banco de dados a cada execução. Útil para verificações pontuais ou agendadas.

O clamscan e clamdscan podem escanear a memória virtual de processos em execução usando a opção --memory. Opções --kill e --unload para matar/descarregar módulos infectados.



Verificação em Tempo Real (On-Access Scanning)


Vamos ver como ativar a verificação em tempo real, para isso veja a documentação oficial.

sudo vim /etc/clamav/clamd.conf

No link acima existem modos de configurações, o que muda são algumas opções, seguem:

OpçãoDescrição
OnAccessPrevention yesBloqueia o acesso a arquivos maliciosos em vez de apenas notificar sobre a detecção.
OnAccessDisableDDD yesDesativa o mecanismo usado para rastrear a estrutura de diretórios em tempo real.
Quando o DDD está ativado, o ClamAV monitora as alterações nos diretórios e adiciona novos diretórios ao seu banco de dados de monitoramento automaticamente.
Ao desativar o DDD, o ClamAV só irá monitorar os diretórios que estão especificados no arquivo de configuração clamd.conf. Isso pode melhorar o desempenho do ClamAV, pois ele não precisa mais rastrear as alterações nos diretórios. No entanto, também pode reduzir a precisão das verificações, pois o ClamAV pode não detectar arquivos maliciosos que estão em diretórios que não estão especificados no arquivo de configuração.
OnAccessExcludeUname clamavEvita que o ClamAV monitore atividades associadas ao usuário "clamav".
OnAccessExcludePath /home/user4Impede que o ClamAV monitore qualquer arquivo no diretório "/home/user4".
OnAccessExcludeRootUID yesEvita que atividades do usuário root acionem verificações. Pode ser útil para evitar problemas no sistema.
OnAccessIncludePath /homePermite que o ClamAV monitore atividades em todos os subdiretórios do diretório "/home".
OnAccessMountPath /Monitora todo o sistema de arquivos ("/") em busca de atividades suspeitas.
OnAccessMaxFileSize tamanho_em_bytesSe o tamanho do arquivo for maior que o valor definido em OnAccessMaxFileSize, o ClamAV o ignorará e não o verificará.

Ambas as opções OnAccessIncludePath e OnAccessMountPath determinam quais diretórios o ClamAV monitora para atividades suspeitas em tempo real, mas funcionam de modos fundamentalmente diferentes:

  • OnAccessIncludePath
    Utiliza o sistema inotify do Linux para monitorar alterações em diretórios específicos e subdiretórios. É mais preciso e responsivo, pois detecta mudanças imediatamente. Suporta recursos avançados como permissões de arquivos e filtros de extensões. Funciona com a opção OnAccessDisableDDD ativada, permitindo controle granular sobre o que monitorar. Pode consumir mais recursos do sistema devido ao constante monitoramento. Pode haver limitações de performance devido a restrições do inotify.

  • OnAccessMountPath
    Utiliza o sistema fanotify do Linux para monitorar o ponto de montagem de novos sistemas de arquivos. Menor consumo de recursos comparado ao inotify. Pode detectar ameaças em arquivos montados dinamicamente, como pendrives ou unidades de rede. É menos preciso do que o inotify, pois só detecta quando um novo sistema de arquivos é montado. Não oferece recursos avançados como permissões de arquivos e filtros de extensões. Não funciona com a opção OnAccessDisableDDD ativada, o DDD precisa estar ativo para funcionar.


Como um exemplo, vou deixar assim:

sudo vim /etc/clamav/clamd.conf

##### Opções:
OnAccessIncludePath /mnt
OnAccessPrevention yes


# Agora reinicie o serviço:
sudo systemctl restart clamav-daemon

Todas as opções que expressam um tamanho são limitadas a no máximo 4 GB. Valores em excesso serão zerados ao máximo.



ClamAV versus ClamFS


O ClamAV e o ClamFS utilitários diferentes. O ClamAV é um programa antivírus que usa uma base de dados de assinaturas para identificar e remover vírus, trojans, worms e outros malwares. O ClamFS é um sistema de arquivos de assinatura de vírus que permite aos usuários verificar arquivos e diretórios em busca de malware sem a necessidade de executar um programa antivírus.


A principal diferença entre o ClamAV e o ClamFS é que o ClamAV é um programa antivírus completo, enquanto o ClamFS é apenas um sistema de arquivos. O ClamAV pode ser usado para escanear todo o sistema, incluindo o disco rígido, a memória e as unidades removíveis. O ClamFS só pode ser usado para escanear arquivos e diretórios individuais.


Outra diferença entre o ClamAV e o ClamFS é que o ClamAV usa uma base de dados de assinaturas, enquanto o ClamFS usa um sistema de arquivos de assinatura. A base de dados de assinaturas do ClamAV é atualizada regularmente com novas assinaturas de malware. O sistema de arquivos de assinatura do ClamFS é atualizado menos frequentemente, mas é mais eficiente em termos de recursos.



Fontes:


https://www.webhi.com/how-to/setup-config-clamav-on-ubuntu-debian/

https://docs.clamav.net

https://www.liquidweb.com/kb/install-clamav/

https://www.edivaldobrito.com.br/clamav-no-linux/