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:
Recursos | Descrição |
---|---|
Verificação Rápida de Arquivos | O 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 Malware | Detecta 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 Bytecode | Utiliza 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 Assinadas | Garante 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 Compactados | Verifica 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 Windows | Oferece 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-O | Suporta arquivos ELF e Mach-O de 32 e 64 bits. |
Formatos de Arquivos de E-mail | Oferece 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çado | Inclui 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.
Componente | Descrição |
---|---|
clamav-daemon | O 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-freshclam | O 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. |
ClamOnAcc | Fornece 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
eclamdscan
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ção | Descrição |
---|---|
OnAccessPrevention yes | Bloqueia o acesso a arquivos maliciosos em vez de apenas notificar sobre a detecção. |
OnAccessDisableDDD yes | Desativa 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 clamav | Evita que o ClamAV monitore atividades associadas ao usuário "clamav". |
OnAccessExcludePath /home/user4 | Impede que o ClamAV monitore qualquer arquivo no diretório "/home/user4". |
OnAccessExcludeRootUID yes | Evita que atividades do usuário root acionem verificações. Pode ser útil para evitar problemas no sistema. |
OnAccessIncludePath /home | Permite 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_bytes | Se 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 sistemainotify
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çãoOnAccessDisableDDD
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 doinotify
.OnAccessMountPath
Utiliza o sistemafanotify
do Linux para monitorar o ponto de montagem de novos sistemas de arquivos. Menor consumo de recursos comparado aoinotify
. Pode detectar ameaças em arquivos montados dinamicamente, como pendrives ou unidades de rede. É menos preciso do que oinotify
, 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çãoOnAccessDisableDDD
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/