Leia todo o artigo antes de sair executando comandos e siga
os comandos na sequência apresentada no artigo, a não ser que você saiba o
que está fazendo.
O presente artigo, além de instalar e configurar o ClamAV,
apresenta fins didáticos para aprendizagem.
É um artigo explicativo para fins de entendimento do ClamAV,
sendo que foi testado várias vezes para o que se pretende no artigo.
Talvez alguém dirá: "para quê um anti-vírus no Linux?";
porém, existe vírus para Linux, mas como o Linux não é amplamente
utilizado como desktop ninguém faz vírus para Linux, além disso, agora com
o advento de IA faz-se necessário alguma proteção extra no desktop e,
principalmente, em servidores.
ClamAV é um kit de ferramentas antivírus de código aberto
(GPLv2) projetado especialmente para verificação de e-mail em servidores
de e-mail. Ele fornece vários utilitários incluindo um daemon
multiencadeado 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. O
núcleo do pacote é um mecanismo antivírus disponível na forma de
biblioteca compartilhada.
O ClamAV® é um poderoso mecanismo antivírus de código aberto
para detecção de trojans, vírus, malware e outras ameaças maliciosas. O
ClamAV não possui um modo de "verificação rápida". O ClamAV é um conjunto
de ferramentas de detecção de malware, não é um antivírus tradicional nem
um pacote de segurança para endpoints.
Cabe a você decidir o que verificar. Uma verificação
completa do sistema levará muito tempo com o ClamAV ou com qualquer outro
software antivírus.
Clamscan, ClamOnAcc e Clamdscan incluem as opções "--remove"
para excluir qualquer arquivo que gere alertas durante uma verificação.
Isso geralmente é uma péssima ideia, a menos que você esteja monitorando
um diretório de uploads/downloads. Falsos positivos acontecem! Você não
quer que o arquivo errado seja excluído acidentalmente. Em vez disso,
considere usar o parâmetro "--move" ou talvez apenas "--copy" e configure
um script com o recurso "VirusEvent" para notificá-lo quando algo for
detectado.
O ClamAV inclui uma ferramenta de filtragem de e-mails
chamada clamav-milter. Essa ferramenta interage diretamente com o Clamd,
e, portanto, requer uma instância Clamd em funcionamento para ser
executada. No entanto, os arquivos de configuração e de log do
clamav-milter são separados dos do Clamd.
AVISO
O ClamAV vem minimamente configurado, você deve configurá-lo
manualmente de acordo com o teu cenário e as tuas necessidades. Caso você
seja daquelas almas sebosas e fedorentas que gostam de dizer: "capaz que
vou passar todo esse trabalho para configurar um programa", pare de ler
aqui esse artigo e vá bater a cabeça na parede ou vá enfiar a cara no
ventilador repetidas vezes ou vá fazer sei lá o que você gosta de fazer,
mas, claramente, teu lugar não é aqui.
No final tem um resumo com os comandos e pouca
explicação.
O ClamAV é fornecido pela Cisco Systems, Inc.
Documentação:
A distribuição utilizada de exemplo foi o Void, porém, você
pode adaptar para a tua distribuição sem grandes mudanças.
O ClamAV está presente nos repositórios de quase todas as
distribuições.
Vários comandos utilizados são universais para quase todas
as distribuições.
Instalação para Fedora, AlmaLinux, openSUSE, etc:
Instalação para Debian, Ubuntu, Mint, etc:
Para instalar a partir dos fontes:
Verificando a configuração do Kernel
Verificando a configuração do Kernel para a presença do fanotify:
Caso tiver habilitado no Kernel a saída será essa:
E se isso aparecer:
então está habilitado, mas a verificação de acesso será restrita ao modo somente notificação, ou seja, vai avisar que tem vírus, mas fará absolutamente nada.
Caso aparecer CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set o fanotify não está habilitado no seu Kernel então você deverá recompilar o Kernel para habilitá-lo ou instalar um Kernel mais moderno, mas não será mostrado aqui pois demanda tempo e não é o escopo do artigo.
Dificilmente dará CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set porque CONFIG_FANOTIFY=y passou a vir habilitado por padrão na arquitetura x86 na versão Kernel Linux 2.6.37 e CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y passou a vir ativada por padrão no defconfig genérico do x86 na versão Kernel Linux 3.14.
Não será modificada a configuração do arquivo clamav-milter.conf, deixaremos com as configurações padrões. O ClamAV-Milter é o aplicativo do ClamAV que fornece filtragem de e-mails, caso a máquina Linux não for servidor de e-mails não se faz necessário. Para Desktop não precisa instalar, mas vai do seu gosto.
CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
E se isso aparecer:
CONFIG_FANOTIFY=y
# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
então está habilitado, mas a verificação de acesso será restrita ao modo somente notificação, ou seja, vai avisar que tem vírus, mas fará absolutamente nada.
Caso aparecer CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set o fanotify não está habilitado no seu Kernel então você deverá recompilar o Kernel para habilitá-lo ou instalar um Kernel mais moderno, mas não será mostrado aqui pois demanda tempo e não é o escopo do artigo.
Dificilmente dará CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set porque CONFIG_FANOTIFY=y passou a vir habilitado por padrão na arquitetura x86 na versão Kernel Linux 2.6.37 e CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y passou a vir ativada por padrão no defconfig genérico do x86 na versão Kernel Linux 3.14.
Não será modificada a configuração do arquivo clamav-milter.conf, deixaremos com as configurações padrões. O ClamAV-Milter é o aplicativo do ClamAV que fornece filtragem de e-mails, caso a máquina Linux não for servidor de e-mails não se faz necessário. Para Desktop não precisa instalar, mas vai do seu gosto.
Atualizando e instalando (adapte para a tua distribuição): Name Action Version New version Download size
clamav install - 1.5.3_1 40MB
Size to download: 40MB
Size required on disk: 182MB
Space available on disk: 5405MB
Do you want to continue? [Y/n] Y
[*] Downloading packages
clamav-1.5.3_1.x86_64.xbps.sig2: 512B [avg rate: 14MB/s]
clamav-1.5.3_1.x86_64.xbps: 40MB [avg rate: 9318KB/s]
clamav-1.5.3_1: verifying RSA signature...
[*] Collecting package files
clamav-1.5.3_1: collecting files...
[*] Unpacking packages
clamav-1.5.3_1: unpacking ...
[*] Configuring unpacked packages
clamav-1.5.3_1: configuring ...
Created _clamav system group.
Created _clamav system user.
clamav-1.5.3_1: installed successfully.
1 downloaded, 1 installed, 0 updated, 1 configured, 0 removed, 0 on hold.
Os arquivos serão criados no diretório /etc:
/etc/freshclam.conf
/etc/clamd.conf
/etc/clamav-milter.conf.sample
Obs.: Em algumas distribuições ficarão no caminho /etc/clamav, verifique
o caminho certo./etc/clamd.conf
/etc/clamav-milter.conf.sample
Sugestão de pesquisa: Caso já tenha os arquivos de uma instalação anterior e não quis removê-los para resguardar as configurações, a instalação preserva os arquivos e cria novos com a seguinte nomenclatura:
/etc/freshclam.conf.new-1.5.3_1
/etc/clamd.conf.new-1.5.3_1
/etc/clamav-milter.conf.sample
Caso queira, pode removê-los./etc/clamd.conf.new-1.5.3_1
/etc/clamav-milter.conf.sample
Verifique se o usuário e o grupo do ClamAV foram criados:
Caso não tenha sido criado na tua distribuição, crie o usuário (no Void, ao instalar o ClamAV, o usuário e o grupo _clamav são criados automaticamente, então pode pular esses dois comandos): Se o seu sistema operacional não tiver os utilitários groupadd e useradd, instale-os.
Vamos remover a extensão do arquivo:
Criando diretório para o soquete local e permissionando (verifique o nome correto de usuário): Por padronização é sem o sublinhado em /var/run/clamav.
Arquivos de Log
Para o Freshclam:
Para o Clamd:
Colocando o diretório database com o dono correto (verifique se é _clamav
ou clamav):
Caso precisar, aqui tem o freshclam.conf oficial:
https://github.com/Cisco-Talos/clamav/blob/main/etc/freshclam.conf.sample
Criando diretório para o soquete local e permissionando (verifique o nome correto de usuário): Por padronização é sem o sublinhado em /var/run/clamav.
Para o Freshclam:
O ClamAV Daemon, ou Clamd, é um daemon multithread que utiliza a libclamav para verificar arquivos em busca de vírus. O ClamAV fornece diversas ferramentas que interagem com esse daemon.
São elas:
- Clamdscan - um cliente de digitalização simples;
- Clamonacc - fornece varredura em tempo real (também conhecida como proteção em tempo real por meio de uma instância Clamd);
- Clamav-milter - um plugin de filtragem de e-mails para o software de servidor de processamento de e-mails Sendmail, que permite analisar e-mails;
- Clamdtop - uma interface de monitoramento de recursos para o Clamd.
O ClamAV também fornece uma ferramenta de linha de comando para tarefas simples de varredura com a libclamav, chamada Clamscan. Ao contrário do daemon Clamd, o Clamscan não é um processo persistente e é mais adequado para casos de uso em que uma varredura única com configuração mínima é necessária.
As ferramentas mais complexas fornecidas pelo ClamAV exigem algum grau de configuração. O ClamAV fornece três arquivos com configurações de exemplo:
🔵clamd.conf: para configurar o comportamento do ClamAV Daemon Clamd e ferramentas associadas;🟢freshclam.conf: para configurar o comportamento da ferramenta de atualização do banco de dados de assinaturas;🟡clamav-milter.conf: para configurar o comportamento do ClamAV de filtragem de e-mails para servidor de e-mails, que interage diretamente com o Clamd.
Além disso, uma ferramenta chamada clamconf permite que os
usuários verifiquem as configurações usadas por cada uma das outras
ferramentas, obtendo informações dos arquivos de configuração listados
acima, juntamente com outras informações relevantes.
Clamconf mostra todas as configurações:
Dependendo do método de instalação e do sistema
operacional, algumas opções de configuração podem já ter sido
pré-configuradas. No Void os arquivos de configurações vêm todos
comentados, à exceção da linha User no arquivo clamd.conf.
No entanto, dependendo da distribuição, é provável que você
precise criar novos arquivos de configurações ou modificar os existentes
com configurações personalizadas que façam mais sentido para o seu caso
de uso.
A título de curiosidade, uma instalação a partir do
código-fonte exigirá que você crie um arquivo freshclam.conf antes de
usar o Freshclam, crie um arquivo "clamd.conf" antes de usar o Clamd e
um arquivo "clamav-milter.conf" antes de usar o ClamAV-Milter.
Os arquivos freshclam.conf, clamd.conf e o
clamav-milter.conf são os arquivos principais de configurações do ClamAV
antivírus.
O parâmetro "DatabaseDirectory /var/lib/_clamav" deve ser o
mesmo nos arquivos freshclam.conf e clamd.conf. Caso alterar em um,
deve, obrigatoriamente, alterar no outro. Aconselho a deixar no padrão.
Em algumas distribuições é /var/lib/clamav, sem o
sublinhado.
AVISO
"Os espelhos e links se reservam o direito de bloquear seu
IP caso você abusar dos downloads e atualizações muitas vezes por hora
ou abusar do servidor de qualquer maneira."
Faça atualizações dos bancos de dados e assinaturas com
sensatez.
A ferramenta Freshclam é a usada para baixar e atualizar os
bancos de dados oficiais de assinaturas de vírus do ClamAV.
Obs.: Em sistemas onde tem o SELinux ativado, provavelmente
você precisará definir o contexto SELinux correto, caso contrário, o
serviço Freshclam não conseguirá acessar o arquivo.
A seguir deixo os conteúdos dos arquivos freshclam.conf e
clamd.conf, ambos em estado funcional e com espelhos (mirrors) para
bancos de dados de vírus e pragas em geral.
Freshclam é a
ferramenta de atualização automática do banco de dados do Clam
AntiVirus.
Ela pode ser configurada para funcionar em dois modos:
- interativo - sob demanda a partir da linha de comando;
- daemon - silenciosamente em segundo plano.
Aqui faremos interativo através do Cron.
FRESHCLAM.CONF
Uso o vim, use teu editor preferido. Comente ou remova a linha ~8:
# Comment or remove the line below.
# Example ... <<< Linha 8
# Example ... <<< Linha 8
Vá descomentando e configurando os parâmetros abaixo (ou deixe tudo comentado e acrescente no final).
Obs.: Na linha 92 comente "DatabaseMirror database.clamav.net", pois já está abaixo. Salve e saia.
CLAMD.CONF
Comente ou remova a linha ~8:
Para testar: Saída: 104857600
Permanente:
Saída: fs.inotify.max_user_watches=104857600
# Comment or remove the line below.
# Example ... <<< Linha 8
# Example ... <<< Linha 8
Vá descomentando e configurando os parâmetros abaixo (ou
deixe tudo comentado e acrescente no final).
Obs.: Tenha o cuidado de verificar se o usuário do ClamAV
na tua distribuição é clamav ou _clamav e mude abaixo na linha User. E
no lugar de "seu_usuario" coloque o nome do teu usuário
(OnAccessIncludePath /home/seu_usuario/Downloads).
Verifique a linha 269 (User _clamav) e comente ela se for acrescentar
tudo abaixo.
Salve e saia.
Obs.: Caso decida habilitar o Clamonacc depois, aconselho a
não habilitar #OnAccessIncludePath /home e
#OnAccessIncludePath /home/usuario porque pode acontecer de dar
umas travadas quando for abrir essas pastas graficamente (clicando com o
mouse) e pode acontecer de abrir a pasta de usuário e sumirem os ícones
de pastas e de arquivos dando a impressão de que tudo foi apagado. Caso
isso acontecer basta desligar o Clamonacc (sudo sv stop clamonacc). O
Clamonacc (Proteção em Tempo Real) exerce um poder muito grande sobre os
diretórios e arquivos configurados.
O inotify tem um número limitado de pontos de controle
disponíveis para uso por um processo a qualquer momento. Para aumentar o
número de inotifywatch-points disponíveis para uso pelo ClamAV,
execute:
Para testar: Saída: 104857600
Permanente:
Saída: fs.inotify.max_user_watches=104857600
AVISO
O número ali são 100M convertidos em bytes. Esse número
deve ser o mesmo do parâmetro OnAccessMaxFileSize. Caso você mudar o
número do parâmetro OnAccessMaxFileSize deve executar esse comando
novamente com o novo número.
O ClamAV não tem um arquivo de quarentena por padrão, então vamos criá-lo e configurá-lo.
Criando diretório e arquivo e permissionando:
Desativando a Execução de Arquivos (Montagem Segura)
A maior ameaça de uma quarentena é um usuário ou script
executar acidentalmente um binário infectado que está lá dentro.
A forma mais robusta de impedir isso no
Linux
é isolar o diretório em uma montagem separada (ou usando um loop device)
com a flag noexec.
Vamos aplicar um "bind mount" no /etc/fstab.
Adicione a seguinte linha no final para aplicar restrições
estritas de segurança (noexec, nosuid e
nodev impedem a execução de programas, binários SUID e criação de
dispositivos):
...
/var/opt/clamav-quarentena /var/opt/clamav-quarentena none bind,noexec,nosuid,nodev 0 0
/var/opt/clamav-quarentena /var/opt/clamav-quarentena none bind,noexec,nosuid,nodev 0 0
Montando imediatamente:
Criando um script de limpeza que preserva os arquivos
quarentena.log e os logrotate e limpa os demais:
Coloque dentro:
Salve e saia.Permissionando:
Este script de avisos é somente um exemplo, cabe a você adaptar para o teu provedor de e-mail e tuas configurações, pois não é o escopo do artigo.
As linhas:
EMAIL_DESTINO
e da linha assunto=
até
) | msmtp
estão comentadas para fins de teste sem precisar configurar envio de e-mail, somente dará o popup de aviso na tela que permanecerá até clicar em cima dele.
Permissionando: Vamos testar criando um arquivo "suspeito" dentro do diretório de quarentena: Resete o arquivo de estado para ZERO para forçar o alerta: Executando o script manualmente:
E vemos a mensagem de alerta com o Zenity.
Vemos a mensagem de alerta com o Notify-send e XFCE.
Mensagem de alerta com Cinnamon e Notify-send.
Eu prefero o Notify-send porque ele fica na tela até clicar
em cima do aviso e não minimiza se clicar fora dele, como o Zenity.
Caso quiser o Zenity, instale: Verifique também: Saída:2026-09-18 11:14:53 -> ALERTA: 1 novo(s) arquivo(s) isolado(s): teste.txt
Deletando o arquivo: Vendo se tudo continuou igual: total 4
drwx------ 1 _clamav _clamav 54 set 23 09:05 .
drwxr-xr-x 1 root root 34 set 23 09:02 ..
-rw-r--r-- 1 _clamav _clamav 2 set 23 09:10 .ultimo_total
-rw-r--r-- 1 _clamav _clamav 0 set 23 09:02 quarentena.log
Tem de ter 4 arquivos e esse é o único que deve estar como root:
drwxr-xr-x 1 root root 34 21 09:02 ..
Os outros tem que estar com o usuário _clamav como dono.
Caso o ClamAV detectar um malware num escaneamento e movê-lo para a quarentena, esses arquivos poderão estar com outro dono, porém, os 4 arquivos básicos tem de estar nesse padrão.
Para ver as últimas 10 linhas quando o arquivo estiver maior: No XFCE, caso quiser incrementar o layout do alerta com o notify-send, execute: E depois reinicie:
No terminal:
Criando arquivo de gravação do log da quarentena
Salve e saia.
Os outros tem que estar com o usuário _clamav como dono.
Caso o ClamAV detectar um malware num escaneamento e movê-lo para a quarentena, esses arquivos poderão estar com outro dono, porém, os 4 arquivos básicos tem de estar nesse padrão.
Para ver as últimas 10 linhas quando o arquivo estiver maior: No XFCE, caso quiser incrementar o layout do alerta com o notify-send, execute: E depois reinicie:
As opções são poucas, mas a vantagem é que o alerta fica na
tela até você clicar em cima dele.
Com o Zenity, o alerta dá para fazer um layout melhor, mas
ao clicar fora, ele minimiza e pode acontecer de você esquecer, desligar
a máquina e não verificar o e-mail nem o log.
Vai de você escolher a melhor opção para seu gosto:
notify-send ou zenity.
No Cinnamon o
caminho é: Menu > Configurações do sistema > na seção
"Preferências", clique em Notificações.
Este arquivo está nas configurações do
/etc/clamd.conf (VirusEvent /usr/local/bin/notificar-virus.sh).
Como o script periódico
/usr/local/bin/monitor-quarentena.sh configurado no Cron lê a
quantidade de arquivos na pasta e compara com o estado anterior
(.ultimo_total), ele também vai perceber que um novo arquivo
chegou (movido pelo Clamonacc) e disparará o aviso caso o número mude.
Fazendo o LOGROTATE
Instalando: Criando o arquivo: Coloque dentro: Salve e saia.
Assim o arquivo não crescerá demais.
Verificando:
warning: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want.
reading config file /etc/logrotate.d/clamav-quarentena
Reading state from file: /var/lib/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Handling 1 logs
rotating pattern: /var/opt/clamav-quarentena/quarentena.log monthly empty log files are not rotated, (6 rotations), old logs are removed
switching euid from 0 to 989 and egid from 0 to 988 (pid 10363)
considering log /var/opt/clamav-quarentena/quarentena.log
Creating new state
Now: 2026-09-23 22:35
Last rotated at 2026-09-23 22:00
log does not need rotating (log has already been rotated)
switching euid from 989 to 0 and egid from 988 to 0 (pid 10363)
A saída indica que tudo está correto.Criando logrotate para o Freshclam e Clamd: Coloque dentro: Verificando:
Parâmetros
- monthly: O arquivo de log será rotacionado uma vez por mês (geralmente no primeiro dia do mês).
- rotate 6: O sistema vai guardar no máximo 6 arquivos antigos de log. Quando o 7º mês chegar, o log mais antigo de todos será deletado permanentemente.
- compress: Compacta os logs antigos no formato .gz para economizar espaço em disco.
- delaycompress: Adia a compactação do log anterior para o próximo ciclo de rotação. Na prática, o log do mês atual estará ativo, o do mês passado estará rotacionado mas em texto puro (.1), e apenas do retrasado em diante estarão compactados (.2.gz, .3.gz). Isso é útil se algum programa ainda precisar escrever ou ler o log logo após a virada.
- missingok: Se o arquivo quarentena.log não existir por algum motivo (ex: foi deletado manualmente), o logrotate não vai gerar nenhum erro e passará para o próximo serviço silenciosamente.
- notifempty: Não rotaciona o log se ele estiver vazio. Se o ClamAV não pegou nenhuma ameaça no mês e o arquivo estiver com 0 bytes, o logrotate ignora o ciclo e economiza processamento.
- create 0640 _clamav _clamav: Logo após rotacionar (mover) o arquivo antigo, o logrotate cria um arquivo quarentena.log novinho em folha com as permissões 0640 (leitura/escrita para o dono, leitura para o grupo) e define o dono como usuário _clamav e grupo _clamav.
- sharedscripts: Garante que o bloco postrotate (os comandos de recarregamento) seja executado apenas uma vez no final, em vez de disparar uma vez para cada arquivo.
- vsv reload: No Void Linux, o utilitário vsv (ou sv reload) envia um sinal HUP controlado para o runit. Isso força o ClamAV e o Freshclam a fecharem o descritor de arquivo antigo e começarem a gravar no novo arquivo zerado que o create 0640 acabou de gerar.
Agora precisamos atualizar o banco de dados, o que pode
demorar alguns minutos.
Dependendo de como você instalou e da versão do ClamAV que
você está usando, pode encontrar erros na primeira vez que executar o
Freshclam.
Ao executar o Freshclam, o programa tentará buscar uma
atualização no endereço especificado na linha DatabaseMirror;
caso não encontre, ele passará para o endereço subsequente, até
encontrar e baixar as atualizações. Depois, ele executará todas as
DatabaseCustomURL.
Porém, primeiro temos que rodar o comando que habilita o
serviço do Clamd e integra ao runit, assim ele será iniciado junto com o
sistema:
Tentando iniciar o Clamd:
Saída:
timeout: down: clamd: 0s, normally up, want up
Wed Sep 23 22:44:45 2026 -> Database test passed.
Wed Sep 23 22:44:45 2026 -> doppelstern.ndb updated (version: custom database, sigs: 1)
Wed Sep 23 22:44:45 2026 -> fc_download_url_database: doppelstern.ndb updated.
Wed Sep 23 22:44:45 2026 -> Database update completed successfully.
Wed Sep 23 22:44:45 2026 -> Clamd successfully notified about the update.
Provavelmente dará "down" porque é um bug em que, mesmo o
Clamd não iniciando, faz-se necessário rodar o comando antes de
atualizar o banco de dados para não dar o WARNING de que o Clamd não foi
notificado.
Para rodar o Freshclam do jeito certo, sempre execute-o
invocando o usuário do ClamAV:
ou
...Wed Sep 23 22:44:45 2026 -> Database test passed.
Wed Sep 23 22:44:45 2026 -> doppelstern.ndb updated (version: custom database, sigs: 1)
Wed Sep 23 22:44:45 2026 -> fc_download_url_database: doppelstern.ndb updated.
Wed Sep 23 22:44:45 2026 -> Database update completed successfully.
Wed Sep 23 22:44:45 2026 -> Clamd successfully notified about the update.
Terminará sem erros com essas últimas linhas acima.
Caso apareça um WARNING como esse no final:
Caso apareça um WARNING como esse no final:
WARNING: Wed Sep 16 12:02:53 2026 -> Clamd was NOT notified: Can't
connect to Clamd through /var/run/clamav/clamd.ctl: No such file or
directory
não se preocupe, falta iniciar o Clamd.
Caso dê erro, veja qual é o erro e repare. Por exemplo:
Caso apareça um WARNING como esse no final:
não se preocupe, falta iniciar o Clamd.
Caso dê erro, veja qual é o erro e repare. Por exemplo:
ERROR: Fri Sep 4 15:48:00 2026 -> NotifyClamd: No communication socket
specified in /etc/clamd.conf
ERROR: Fri Sep 4 15:48:00 2026 -> Can't send to clamd: Socket operation on non-socket
Esse erro significa que alguma configuração no arquivo /etc/clamd.conf
está em desacordo.ERROR: Fri Sep 4 15:48:00 2026 -> Can't send to clamd: Socket operation on non-socket
Caso apareça um WARNING como esse no final:
WARNING: Tue Sep 8 09:56:06 2026 -> Clamd was NOT notified: Can't
connect to Clamd through /var/run/clamav/clamd.ctl: Permission
denied
confira essas linhas:
https://docs.clamav.net/faq/faq-freshclam.html
Ou copie e cole o comando com o erro e jogue no Google ou em alguma IA.
confira essas linhas:
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
E rode o comando sudo -u _clamav freshclam (ou
sudo -u clamav freshclam) novamente. E, caso as linhas estejam
corretas, não se preocupe: depois, ao iniciar o Clamd, esse aviso
desaparece.
Para outros erros, veja este link que aborda a maioria dos
erros ao executar o Freshclam pela primeira vez:
https://docs.clamav.net/faq/faq-freshclam.html
Ou copie e cole o comando com o erro e jogue no Google ou em alguma IA.
Iniciando o Serviço CLAMD no Void
ok: run: clamd: (pid 21883) 34s
Caso queira, pode executar novamente:
Depois, pode sempre verificar com: run: clamd: (pid 19534) 3s; run: log: (pid 18660) 259s
Caso queira, pode executar novamente:
Depois, pode sempre verificar com: run: clamd: (pid 19534) 3s; run: log: (pid 18660) 259s
Verificando com Htop.
$ sudo htop
Verificando com ClamdTop.
$ sudo clamdtop
Para outros sistemas, veja:
https://www.vivaolinux.com.br/artigo/Antivirus-ClamAV-com-protecao-em-tempo-real/
https://www.vivaolinux.com.br/artigo/ClamAV-o-kit-de-ferramentas-antivirus/
Vendo as últimas 10 linhas para verificar se os logs estão funcionando:
Mon Sep 21 09:22:18 2026 -> download_complete_callback:
fc_context->bTestDatabases : 1
Mon Sep 21 09:22:18 2026 -> download_complete_callback: fc_context->bBytecodeEnabled : 1
Mon Sep 21 09:22:18 2026 -> Testing database: '/var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb' ...
Mon Sep 21 09:22:18 2026 -> Loading signatures from /var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb
Mon Sep 21 09:22:18 2026 -> Properly loaded 1 signatures from /var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb
Mon Sep 21 09:22:18 2026 -> Database test passed.
Mon Sep 21 09:22:18 2026 -> doppelstern.ndb updated (version: custom database, sigs: 1)
Mon Sep 21 09:22:18 2026 -> fc_download_url_database: doppelstern.ndb updated.
Mon Sep 21 09:22:18 2026 -> Database update completed successfully.
Mon Sep 21 09:22:18 2026 -> Clamd successfully notified about the update.
Mon Sep 21 09:22:18 2026 -> download_complete_callback: fc_context->bBytecodeEnabled : 1
Mon Sep 21 09:22:18 2026 -> Testing database: '/var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb' ...
Mon Sep 21 09:22:18 2026 -> Loading signatures from /var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb
Mon Sep 21 09:22:18 2026 -> Properly loaded 1 signatures from /var/lib/_clamav/tmp.9f45e86cf8/clamav-4821cfa51c2c06a78e61b54f2a22520a.tmp-doppelstern.ndb
Mon Sep 21 09:22:18 2026 -> Database test passed.
Mon Sep 21 09:22:18 2026 -> doppelstern.ndb updated (version: custom database, sigs: 1)
Mon Sep 21 09:22:18 2026 -> fc_download_url_database: doppelstern.ndb updated.
Mon Sep 21 09:22:18 2026 -> Database update completed successfully.
Mon Sep 21 09:22:18 2026 -> Clamd successfully notified about the update.
Mon Sep 21 09:39:28 2026 -> ELF support enabled.
Mon Sep 21 09:39:28 2026 -> Mail files support enabled.
Mon Sep 21 09:39:28 2026 -> OLE2 support enabled.
Mon Sep 21 09:39:28 2026 -> PDF support enabled.
Mon Sep 21 09:39:28 2026 -> SWF support enabled.
Mon Sep 21 09:39:28 2026 -> HTML support enabled.
Mon Sep 21 09:39:28 2026 -> XMLDOCS support enabled.
Mon Sep 21 09:39:28 2026 -> HWP3 support enabled.
Mon Sep 21 09:39:28 2026 -> OneNote support enabled.
Mon Sep 21 09:39:28 2026 -> Self checking every 3600 seconds.
Mon Sep 21 09:39:28 2026 -> Mail files support enabled.
Mon Sep 21 09:39:28 2026 -> OLE2 support enabled.
Mon Sep 21 09:39:28 2026 -> PDF support enabled.
Mon Sep 21 09:39:28 2026 -> SWF support enabled.
Mon Sep 21 09:39:28 2026 -> HTML support enabled.
Mon Sep 21 09:39:28 2026 -> XMLDOCS support enabled.
Mon Sep 21 09:39:28 2026 -> HWP3 support enabled.
Mon Sep 21 09:39:28 2026 -> OneNote support enabled.
Mon Sep 21 09:39:28 2026 -> Self checking every 3600 seconds.
Para ver em tempo real:
Mon Sep 21 09:39:28 2026 -> ELF support enabled.
Mon Sep 21 09:39:28 2026 -> Mail files support enabled.
Mon Sep 21 09:39:28 2026 -> OLE2 support enabled.
Mon Sep 21 09:39:28 2026 -> PDF support enabled.
Mon Sep 21 09:39:28 2026 -> SWF support enabled.
Mon Sep 21 09:39:28 2026 -> HTML support enabled.
Mon Sep 21 09:39:28 2026 -> XMLDOCS support enabled.
Mon Sep 21 09:39:28 2026 -> HWP3 support enabled.
Mon Sep 21 09:39:28 2026 -> OneNote support enabled.
Mon Sep 21 09:39:28 2026 -> Self checking every 3600 seconds.
Mon Sep 21 09:39:28 2026 -> Mail files support enabled.
Mon Sep 21 09:39:28 2026 -> OLE2 support enabled.
Mon Sep 21 09:39:28 2026 -> PDF support enabled.
Mon Sep 21 09:39:28 2026 -> SWF support enabled.
Mon Sep 21 09:39:28 2026 -> HTML support enabled.
Mon Sep 21 09:39:28 2026 -> XMLDOCS support enabled.
Mon Sep 21 09:39:28 2026 -> HWP3 support enabled.
Mon Sep 21 09:39:28 2026 -> OneNote support enabled.
Mon Sep 21 09:39:28 2026 -> Self checking every 3600 seconds.
Ctrl+c para sair.
Verifique se o clamd.ctl foi criado em /var/run/clamav:
total 0
drwxr-x--- 2 _clamav _clamav 60 set 23 22:36 .
drwxr-xr-x 23 root root 620 set 23 22:07 ..
srw-rw---- 1 _clamav _clamav 0 set 23 22:36 clamd.ctl
drwxr-x--- 2 _clamav _clamav 60 set 23 22:36 .
drwxr-xr-x 23 root root 620 set 23 22:07 ..
srw-rw---- 1 _clamav _clamav 0 set 23 22:36 clamd.ctl
Agora vamos habilitar o Clamonacc, conhecido também
como Proteção em Tempo Real.
O ClamAV não tem aquela proteção que fica o tempo todo escaneando o computador; ele somente escaneia o diretório e/ou o arquivo quando é acessado. O cliente Clamonacc para o daemon de varredura Clamd fornece varredura no acesso em versões modernas do Linux, incluindo um recurso opcional para bloquear o acesso ao arquivo até que ele seja verificado.
O ClamAV não tem aquela proteção que fica o tempo todo escaneando o computador; ele somente escaneia o diretório e/ou o arquivo quando é acessado. O cliente Clamonacc para o daemon de varredura Clamd fornece varredura no acesso em versões modernas do Linux, incluindo um recurso opcional para bloquear o acesso ao arquivo até que ele seja verificado.
IMPORTANTE
Caso o fanotify não esteja habilitado no kernel, não adianta fazer esse procedimento sem antes habilitá-lo.
Para configurar o Clamonacc, basta ajustar o arquivo /etc/clamd.conf.
Como as configurações já estão no arquivo, deixo aqui os passos
básicos:
Criando o Clamonacc no Void
Coloque dentro:
Salve e saia.
ok: run: clamonacc: (pid 12570) 7s
ok: run: clamonacc: (pid 12716) 1s
run: clamonacc: (pid 12716) 42s
Para verificar melhor, pode usar o htop:
- Abra o arquivo /etc/clamd.conf;
- Especifique o(s) caminho(s) que você gostaria de monitorar definindo a opção OnAccessIncludePath;
- Defina OnAccessPrevention para yes;
- Verifique qual nome de usuário está sendo usado para executar o comando, clamav ou _clamav;
- Defina OnAccessExcludeUname para o nome de usuário correspondente;
- Salve seu trabalho e feche o clamd.conf.
ok: run: clamonacc: (pid 12716) 1s
run: clamonacc: (pid 12716) 42s
Para verificar melhor, pode usar o htop:
htop
O padrão mundial para testar antivírus sem usar código
malicioso real é o EICAR Standard Anti-Virus Test File. Qualquer
antivírus atualizado, incluindo o ClamAV, vai identificá-lo
imediatamente como uma ameaça chamada Win.Test.EICAR_HBR-1 ou similar.
Códigos de retorno do ClamAV: 0 = limpo, 1 = infectado, 2 = erro
Coloque a opção OnAccessIncludePath /home/seu_usuario/Downloads no arquivo:
##OnAccessIncludePath /home
##OnAccessIncludePath /home/seu_usuario
OnAccessIncludePath /home/seu_usuario/Downloads
##OnAccessIncludePath /home/seu_usuario
OnAccessIncludePath /home/seu_usuario/Downloads
Reinicie os serviços: ok: run: clamd: (pid 15652) 0s
ok: run: clamonacc: (pid 15702) 1s
Tentando criar o arquivo: bash: /home/usuario/Downloads/eicar.com: Operação não permitida
Isso deve acontecer porque no arquivo /etc/clamd.conf o caminho /home/seu_usuario/Downloads está no OnAccessIncludePath.
AVISO IMPORTANTE
Em algumas interfaces gráficas, como o Cinnamon, não haverá
aviso no terminal, mas a proteção está funcionando. Após dar o echo,
basta verificar a pasta ~/Downloads e ver que o arquivo não está lá e
verificar o diretório /var/opt/clamav-quarentena:
Faremos com sudo:
Tentando ler o arquivo:
cat: /home/usuario/Downloads/eicar.com: Operação não permitidaNo XFCE o Clamonacc não deixa acessar o arquivo e depois move para a quarentena. cat: /home/kluster/Downloads/eicar.com: Arquivo ou diretório inexistente
No Cinnamon o arquivo é movido para a quarentena antes de
qualquer processo sequer conseguir ler.
O comportamento diferente ocorre porque o
Cinnamon e o
XFCE gerenciam de formas
distintas os erros de sistema originados por chamadas do kernel e as
notificações para o usuário.
Quando damos o echo, o bash consegue criar o
arquivo temporariamente na memória, mas no milissegundo seguinte o
indexador do Cinnamon tenta ler o arquivo para gerar um ID/miniatura.
Isso dispara o gatilho do ClamAV, que bloqueia o acesso e move o arquivo
imediatamente.
Códigos de retorno do ClamAV: 0 = limpo, 1 = infectado, 2 = erro
Tentaremos com sudo:
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
Perceba que o arquivo foi movido para a quarentena porque
colocamos no arquivo /etc/sc/clamonacc/run a opção --move=/var/opt/clamav-quarentena
e foi registrado no log porque colocamos no arquivo /etc/clamd.conf a opção VirusEvent /usr/local/bin/notificar-virus.sh:
total 12
drwx------ 1 _clamav _clamav 160 set 21 09:51 .
drwxr-xr-x 1 root root 34 set 21 09:02 ..
-rw------- 1 root root 0 set 21 09:45 .clamav-quarantine-lock.12718.0
-rw-r--r-- 1 _clamav _clamav 2 set 21 09:50 .ultimo_total
-rw------- 1 root root 69 set 14 15:55 eicar.com
-rw------- 1 root root 69 set 21 09:48 eicar.com.001
-rw-r--r-- 1 _clamav _clamav 0 set 21 09:02 quarentena.log
drwx------ 1 _clamav _clamav 160 set 21 09:51 .
drwxr-xr-x 1 root root 34 set 21 09:02 ..
-rw------- 1 root root 0 set 21 09:45 .clamav-quarantine-lock.12718.0
-rw-r--r-- 1 _clamav _clamav 2 set 21 09:50 .ultimo_total
-rw------- 1 root root 69 set 14 15:55 eicar.com
-rw------- 1 root root 69 set 21 09:48 eicar.com.001
-rw-r--r-- 1 _clamav _clamav 0 set 21 09:02 quarentena.log
O arquivo eicar.com.001 é um arquivo de controle que o ClamAV cria automaticamente.
Testando novamente com sudo nos dois comandos: cat: /home/usuario/Downloads/eicar.com: Operação não permitida
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
total 16
drwx------ 1 _clamav _clamav 186 set 21 09:58 .
drwxr-xr-x 1 root root 34 set 21 09:02 ..
-rw------- 1 root root 0 set 21 09:45 .clamav-quarantine-lock.12718.0
-rw-r--r-- 1 _clamav _clamav 2 set 21 09:56 .ultimo_total
-rw------- 1 root root 69 set 14 15:55 eicar.com
-rw------- 1 root root 69 set 21 09:48 eicar.com.001
-rw------- 1 root root 69 set 21 09:57 eicar.com.002
-rw-r--r-- 1 _clamav _clamav 0 set 21 09:02 quarentena.log
drwx------ 1 _clamav _clamav 186 set 21 09:58 .
drwxr-xr-x 1 root root 34 set 21 09:02 ..
-rw------- 1 root root 0 set 21 09:45 .clamav-quarantine-lock.12718.0
-rw-r--r-- 1 _clamav _clamav 2 set 21 09:56 .ultimo_total
-rw------- 1 root root 69 set 14 15:55 eicar.com
-rw------- 1 root root 69 set 21 09:48 eicar.com.001
-rw------- 1 root root 69 set 21 09:57 eicar.com.002
-rw-r--r-- 1 _clamav _clamav 0 set 21 09:02 quarentena.log
2026-09-21 09:03:32 -> ALERTA EM TEMPO REAL: Arquivo suspeito
'/home/seu_usuario/Downloads/eicar.com' detectado e isolado (Vírus:
{HEX}test.test.eicar.1040.UNOFFICIAL)
Testando Escaneamento
Lembrando que o Clamscan não utiliza arquivo de configurações, mas parâmetros próprios no binário; porém, logo faremos um wrapper para ele, pois o utilizaremos para as varreduras com o cron.
O Clamdscan utiliza os parâmetros do arquivo /etc/clamd.conf nas varreduras, bem como o Clamonacc na proteção.
https://docs.clamav.net/manual/Usage/Scanning.html#clamdscan
https://docs.clamav.net/manual/Usage/Scanning.html#clamscan
Vamos comentar o diretório /home/seu_usuario/Downloads no arquivo: Comente:
Salve e saia. ok: run: clamd: (pid 31196) 0s
ok: run: clamonacc: (pid 31276) 0s
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Testando
https://sanesecurity.com/foxhole-databases/
Lembrando que o Clamscan não utiliza arquivo de configurações, mas parâmetros próprios no binário; porém, logo faremos um wrapper para ele, pois o utilizaremos para as varreduras com o cron.
Loading: 6s, ETA: 0s [========================>] 3.80M/3.80M sigs
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/seu_usuario/Downloads/grub-void.html: OK
/home/seu_usuario/Downloads/vkpurge.html: OK
/home/seu_usuario/Downloads/zram-zswap.mhtml: OK
/home/seu_usuario/Downloads/linux-7.1.2.tar.xz: OK
/home/seu_usuario/Downloads/apache-netbeans.svg: OK
/home/seu_usuario/Downloads/wgcf-master.zip: OK
/home/seu_usuario/Downloads/wgcf-account.toml: OK
----------- SCAN SUMMARY -----------
Known viruses: 3797093
Engine version: 1.5.3
Scanned directories: 1
Scanned files: 7
Infected files: 0
Data scanned: 16.27 MiB
Data read: 159.41 MiB (ratio 0.10:1)
Time: 19.103 sec (0 m 19 s)
Start Date: 2026:09:23 23:41:10
End Date: 2026:09:23 23:41:29
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/seu_usuario/Downloads/grub-void.html: OK
/home/seu_usuario/Downloads/vkpurge.html: OK
/home/seu_usuario/Downloads/zram-zswap.mhtml: OK
/home/seu_usuario/Downloads/linux-7.1.2.tar.xz: OK
/home/seu_usuario/Downloads/apache-netbeans.svg: OK
/home/seu_usuario/Downloads/wgcf-master.zip: OK
/home/seu_usuario/Downloads/wgcf-account.toml: OK
----------- SCAN SUMMARY -----------
Known viruses: 3797093
Engine version: 1.5.3
Scanned directories: 1
Scanned files: 7
Infected files: 0
Data scanned: 16.27 MiB
Data read: 159.41 MiB (ratio 0.10:1)
Time: 19.103 sec (0 m 19 s)
Start Date: 2026:09:23 23:41:10
End Date: 2026:09:23 23:41:29
Loading: 10s, ETA: 0s [========================>] 3.80M/3.80M sigs
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
WARNING: Can't open file /home/usuario/Downloads/eicar.com: Operation not permitted
----------- SCAN SUMMARY -----------
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 0
Infected files: 0
Total errors: 1
Data scanned: 0 B
Data read: 69 B (ratio 0.00:1)
Time: 12.426 sec (0 m 12 s)
Start Date: 2026:09:21 12:54:17
End Date: 2026:09:21 12:54:30
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
WARNING: Can't open file /home/usuario/Downloads/eicar.com: Operation not permitted
----------- SCAN SUMMARY -----------
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 0
Infected files: 0
Total errors: 1
Data scanned: 0 B
Data read: 69 B (ratio 0.00:1)
Time: 12.426 sec (0 m 12 s)
Start Date: 2026:09:21 12:54:17
End Date: 2026:09:21 12:54:30
O Clamdscan utiliza os parâmetros do arquivo /etc/clamd.conf nas varreduras, bem como o Clamonacc na proteção.
/home/kluster/Downloads: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 148.057 sec (2 m 28 s)
Start Date: 2026:09:24 00:07:13
End Date: 2026:09:24 00:09:41
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 148.057 sec (2 m 28 s)
Start Date: 2026:09:24 00:07:13
End Date: 2026:09:24 00:09:41
/home/usuario/Downloads/eicar.com: Failed to open file. ERROR
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.019 sec (0 m 0 s)
Start Date: 2026:09:21 12:56:14
End Date: 2026:09:21 12:56:14
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.019 sec (0 m 0 s)
Start Date: 2026:09:21 12:56:14
End Date: 2026:09:21 12:56:14
Podemos ver que o Clamonacc no XFCE não deixa nem o
Clamscan e nem o Clamdscan acessarem o arquivo virulento, nem com sudo e
nem com o próprio usuário _clamav.
Porém, ao escanear ~/Downloads ele permite somente
com o Clamscan e bloqueia com Clamdscan, porque o Clamd e o Clamonacc
utilizam o mesmo arquivo /etc/clamd.conf, enquanto o Clamscan é
independente.
https://docs.clamav.net/manual/Usage/Scanning.html#clamdscan
https://docs.clamav.net/manual/Usage/Scanning.html#clamscan
Vamos comentar o diretório /home/seu_usuario/Downloads no arquivo: Comente:
#OnAccessIncludePath /home/seu_usuario/Downloads
Salve e saia. ok: run: clamd: (pid 31196) 0s
ok: run: clamonacc: (pid 31276) 0s
Loading: 9s, ETA: 0s [========================>] 3.80M/3.80M sigs
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
----------- SCAN SUMMARY -----------
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 69 B
Data read: 69 B (ratio 1.00:1)
Time: 12.357 sec (0 m 12 s)
Start Date: 2026:09:21 12:58:58
End Date: 2026:09:21 12:59:10
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
----------- SCAN SUMMARY -----------
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 69 B
Data read: 69 B (ratio 1.00:1)
Time: 12.357 sec (0 m 12 s)
Start Date: 2026:09:21 12:58:58
End Date: 2026:09:21 12:59:10
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Vemos que o arquivo foi lido.
Obs.: para o arquivo ser movido para a quarentena, o
parâmetro --move=/caminho/quarentena deve ser passado no comando.
Primeiro utilizei o Clamscan porque tem uma saída mais
completa, mas demora mais porque carrega todo o banco de dados na
memória RAM cada vez.
O resultado mostra que o motor do ClamAV está totalmente
operacional e atualizado com mais de 3,7 milhões de assinaturas
conhecidas. Ele identificou o arquivo instantaneamente como FOUND.
Porém, o comando demorou 12.357 segundos para escanear um
único arquivo de apenas 69 bytes. Isso acontece porque o Clamscan
precisa carregar todas as assinaturas de vírus na memória RAM do zero
toda vez que é executado.
Vamos fazer esse mesmo escaneamento em fração de
milissegundos usando o comando clamdscan com a flag --stream para
enviar o arquivo ao daemon local (Clamd) que já está rodando em segundo
plano com a base de dados pré-carregada na RAM.
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL
FOUND
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.024 sec (0 m 0 s)
Start Date: 2026:09:21 13:01:34
End Date: 2026:09:21 13:01:34
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.024 sec (0 m 0 s)
Start Date: 2026:09:21 13:01:34
End Date: 2026:09:21 13:01:34
Observe que o tempo de escaneamento caiu de 12.357
segundos para apenas 0.024 segundos.
Loading: 10s, ETA: 0s [========================>] 3.80M/3.80M sigs
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/usuario/Downloads/images.jpeg: OK
/home/usuario/Downloads/26055.txt: OK
/home/usuario/Downloads/18153.txt: OK
/home/usuario/Downloads/5174256.png: OK
/home/usuario/Downloads/calvin-midia.webp: OK
/home/usuario/Downloads/biblia-terminal-main.zip: Sanesecurity.Foxhole.Zip_exe.UNOFFICIAL FOUND
/home/usuario/Downloads/0x0.webp: OK
/home/usuario/Downloads/demolition.webp: OK
/home/usuario/Downloads/idiocracia.webp: OK
/home/usuario/Downloads/celine-nietzsche.pdf: OK
/home/usuario/Downloads/Ardil-22 - Joseph Heller.pdf: OK
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
...
----------- SCAN SUMMARY -----------
Known viruses: 3797062
Engine version: 1.5.3
Scanned directories: 1
Scanned files: 54
Infected files: 2
Total errors: 1
Data scanned: 530.29 MiB
Data read: 742.51 MiB (ratio 0.71:1)
Time: 439.155 sec (7 m 19 s)
Start Date: 2026:09:24 07:51:59
End Date: 2026:09:24 07:59:19
Compiling: 2s, ETA: 0s [========================>] 42/42 tasks
/home/usuario/Downloads/images.jpeg: OK
/home/usuario/Downloads/26055.txt: OK
/home/usuario/Downloads/18153.txt: OK
/home/usuario/Downloads/5174256.png: OK
/home/usuario/Downloads/calvin-midia.webp: OK
/home/usuario/Downloads/biblia-terminal-main.zip: Sanesecurity.Foxhole.Zip_exe.UNOFFICIAL FOUND
/home/usuario/Downloads/0x0.webp: OK
/home/usuario/Downloads/demolition.webp: OK
/home/usuario/Downloads/idiocracia.webp: OK
/home/usuario/Downloads/celine-nietzsche.pdf: OK
/home/usuario/Downloads/Ardil-22 - Joseph Heller.pdf: OK
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
...
----------- SCAN SUMMARY -----------
Known viruses: 3797062
Engine version: 1.5.3
Scanned directories: 1
Scanned files: 54
Infected files: 2
Total errors: 1
Data scanned: 530.29 MiB
Data read: 742.51 MiB (ratio 0.71:1)
Time: 439.155 sec (7 m 19 s)
Start Date: 2026:09:24 07:51:59
End Date: 2026:09:24 07:59:19
Observem que ele acusou dois vírus: o arquivo
eicar.com e o arquivo
biblia-terminal-main.zip
como Sanesecurity.Foxhole.Zip_exe.UNOFFICIAL FOUND. Este talvez
seja um falso positivo, mas, por via das dúvidas, foi para a quarentena.
https://sanesecurity.com/foxhole-databases/
Definições:
- Known viruses: 3797062 - Banco de dados com 3.797.062 tipos de malwares conhecidos
- Engine version: 1.5.3 - Versão do ClamAV
- Scanned directories: 1 - Diretórios escaneados
- Scanned files: 54 - Arquivos escaneados
- Infected files: 2 - Arquivos infectados
- Total errors: 1 - Total de erros
- Data scanned: 530.29 MiB - Total de dados escaneados
- Data read: 742.51 MiB (ratio 0.71:1) - Total de dados lidos
- Time: 439.155 sec (7 m 19 s) - Duração do escaneamento
- Start Date: 2026:09:24 07:51:59 - Data/horário de início
- End Date: 2026:09:24 07:59:19 - Data/horário do fim
Movendo com Clamscan e Clamdscan
O Clamonacc, dependendo das configurações, pode bloquear o
Clamscan e o Clamdscan, então, por via das dúvidas, é de bom tom parar o
Clamonacc para a varredura e iniciar logo após:
ok: down: clamonacc: 0s, normally up
Para o Clamscan e o Clamdscan moverem os arquivos para a
quarentena, o parâmetro --move=/caminho/quarentena deve ser passado
no comando para varreduras manuais e também colocado no Cron para
varreduras automáticas:
Senha:
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
/home/usuario/Downloads/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com.008'
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
/home/usuario/Downloads/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com.008'
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.010 sec (0 m 0 s)
Start Date: 2026:09:21 13:34:29
End Date: 2026:09:21 13:34:29
Infected files: 1
Time: 0.010 sec (0 m 0 s)
Start Date: 2026:09:21 13:34:29
End Date: 2026:09:21 13:34:29
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
Loading: 9s, ETA: 0s [========================>] 3.80M/3.80M sigs
Compiling: 3s, ETA: 0s [========================>] 42/42 tasks
Compiling: 3s, ETA: 0s [========================>] 42/42 tasks
/home/usuario/Downloads/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL
FOUND
/home/usuario/Downloads/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com.009'
/home/usuario/Downloads/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com.009'
----------- SCAN SUMMARY -----------
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 69 B
Data read: 69 B (ratio 1.00:1)
Time: 12.660 sec (0 m 12 s)
Start Date: 2026:09:21 13:41:29
End Date: 2026:09:21 13:41:41
Known viruses: 3796968
Engine version: 1.5.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 69 B
Data read: 69 B (ratio 1.00:1)
Time: 12.660 sec (0 m 12 s)
Start Date: 2026:09:21 13:41:29
End Date: 2026:09:21 13:41:41
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
Códigos de retorno do ClamAV: 0 = limpo, 1 = infectado, 2 = erro
ok: run: clamonacc: (pid 15645) 0s
Sobre o Clamonacc
Recomendo utilizar o Clamonacc somente em algumas pastas
como /home/usuario/Downloads, /tmp, /var/tmp e
/dev/shm e mesmo assim, com cautela, pois pode acontecer de
processos perderem o acesso aos arquivos necessários para seu
funcionamento caso forem detectados como falsos positivos. Daí você terá
de movê-los manualmente para a lista.
O Clamonacc exige privilégios elevados (root) para
interagir com a API fanotify do Kernel.
Dar permissão de leitura global (o+rx) na pasta
/home/usuario permite que outros usuários locais vejam a lista de
arquivos públicos na sua home, isso não é recomendado, pois é uma
preocupação de privacidade e segurança. A alternativa seria adicionar o
usuário _clamav ao grupo de usuário pessoal e ajustar a opção
AllowSupplementaryGroups no clamd.conf.
De acordo com os testes mostrados, vimos que como o
Clamonacc, dependendo das configurações, pode bloquear o Clamscan e o
Clamdscan, então, por via das dúvidas, pararamos o Clamonacc para a
varredura e iniciamos logo após.
Diferenças entre Clamscan e Clamdscan
Clamd/Clamonacc: Usam obrigatoriamente o
/etc/clamd.conf. O daemon fica rodando em segundo plano na memória,
mantendo o banco de dados carregado para responder instantaneamente. É
ideal para o monitoramento leve em tempo real em pastas específicas.
Como o banco de dados de vírus já está carregado na RAM pelo
daemon (Clamd), o Clamdscan é imensamente mais rápido para iniciar e
consome muito menos CPU a cada execução. Ele apenas envia o caminho do
arquivo para o daemon analisar e devolve o resultado.
O Clamdscan é mais recomendado para varreduras manuais em
arquivos e diretórios específicos.
Por exemplo, quando tiver um arquivo muito grande para
escanear, altere o /etc/clamd.conf em OnAccessMaxFileSize XXXM e
depois rode o
echo 'fs.inotify.max_user_watches=xxxxxxxxx' | sudo tee
/etc/sysctl.d/99-inotify.conf
com o mesmo tamanho convertido em bytes. Depois retorne ao tamanho padrão
das tuas necessidades para o Clamonacc não interferir no sistema. No meu
caso eu deixo em 100 megas (100M).
Clamscan: É um utilitário avulso. Ele lê o banco de
dados de assinaturas diretamente do disco a cada execução. Como ele varre
sob demanda (via cron ou manualmente), ele não interfere no comportamento
do Clamonacc e não exige que altere o arquivo /etc/clamd.conf.
A cada execução, ele precisa ler todos os arquivos de
assinatura do banco de dados diretamente do disco e alocar tudo na RAM
novamente, o que consome bastante tempo e picos de processamento.
Porém, em uma varredura automática pelo Cron de madrugada no
sistema inteiro, o Clamscan é o ideal.
Wrapper é uma função, classe ou biblioteca que envolve um código
existente para simplificar sua interface, adicionar novas funcionalidades
ou adaptar sua comunicação.
Arquivo configurado para fazer a varredura com o Clamscan, que
depois será utilizado no Cron.
Coloque dentro:
Salve e saia.
De acordo com os testes mostrados, vimos que como o Clamonacc
bloqueia até o Clamscan e o Clamdscan, então temos que parar o Clamonacc
para a varredura e iniciá-lo logo após, como está no script.
Acrescente /var/log/varredura.log:
Salve e saia.
Verificando:
Em outro terminal execute:
Salve e saia.
cat: /home/usuario/teste/eicar.com: Arquivo ou diretório inexistente
Caso quiser dê um:
ou
Verificando:
warning: logrotate in debug mode does nothing except printing debug
messages! Consider using verbose mode (-v) instead if this is not what you
want.
reading config file /etc/logrotate.d/clamav
Reading state from file: /var/lib/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Handling 1 logs
rotating pattern: /var/log/clamd.log /var/log/freshclam.log /var/log/varredura.log monthly empty log files are not rotated, (6 rotations), old logs are removed
considering log /var/log/clamd.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
considering log /var/log/freshclam.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
considering log /var/log/varredura.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
not running postrotate script, since no logs were rotated
reading config file /etc/logrotate.d/clamav
Reading state from file: /var/lib/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
Handling 1 logs
rotating pattern: /var/log/clamd.log /var/log/freshclam.log /var/log/varredura.log monthly empty log files are not rotated, (6 rotations), old logs are removed
considering log /var/log/clamd.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
considering log /var/log/freshclam.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
considering log /var/log/varredura.log
Creating new state
Now: 2026-09-24 00:26
Last rotated at 2026-09-24 00:00
log does not need rotating (log has already been rotated)
not running postrotate script, since no logs were rotated
O parâmetro -d (modo debug) apenas imprime na tela tudo o que
ele faria se estivesse rodando de verdade.
Se você quer forçar a rotação dos logs agora mesmo, substitua
o -d pelo parâmetro -f (force):
Se você quer ver o que ele está fazendo em tempo real
enquanto executa de verdade, use o modo detalhado -v (verbose):
Testando o arquivo no diretório /home/seu_usuario/Downloads:
ok: down: clamonacc: 1894s, normally upEm outro terminal execute:
root 1927 99.0 3.3 1294288 1100592 pts/1 R+ 00:30 0:12 clamscan --recursive
--alert-broken --infected --log=/var/log/varredura.log
--move=/var/opt/clamav-quarentena
--exclude-dir=^/(proc|sys|dev|run|/var/run|/etc/sv|/etc/runit)
--exclude-dir=^/var/lib/_clamav --exclude-dir=^/var/log --max-filesize=500M
--max-scansize=1000M --max-scantime=0 --cross-fs=no --alert-exceeds-max=yes
--alert-broken=yes --alert-encrypted=yes --alert-macros=yes --detect-pua=yes
/home/kluster/Downloads
seu_usuario 1982 0.0 0.0 6704 2628 pts/2 S+ 00:30 0:00 grep clamscan
seu_usuario 1982 0.0 0.0 6704 2628 pts/2 S+ 00:30 0:00 grep clamscan
A linha root indica que o escaneamento está ocorrendo com
todos os parâmetros configurados no arquivo.
Para parar tecle Ctrl+c.
Agora vamos testar um único diretório para comprovar. Tenho
um diretório ~/teste que sei que não tem vírus, vamos colocar o
eicar para incrementar o teste:
Deixei essa parte assim, adapte para você:
# -------------------#
# Configuracao
# -------------------#
ALVOS=(
# "/"
# "/home"
# "/var/www"
# "/etc"
"/home/seu_usuario/teste"
# adicione mais diretorios aqui ou coloque para varrer o raiz (/) e adicione mais --exclude-dir abaixo
)
# Configuracao
# -------------------#
ALVOS=(
# "/"
# "/home"
# "/var/www"
# "/etc"
"/home/seu_usuario/teste"
# adicione mais diretorios aqui ou coloque para varrer o raiz (/) e adicione mais --exclude-dir abaixo
)
Salve e saia.
ok: down: clamonacc: 1s, normally up
/home/kluster/teste/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
/home/kluster/teste/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com'
----------- SCAN SUMMARY -----------
Known viruses: 3811649
Engine version: 1.5.3
Scanned directories: 45
Scanned files: 576
Infected files: 1
Data scanned: 6.92 MiB
Data read: 5.87 MiB (ratio 1.18:1)
Time: 15.432 sec (0 m 15 s)
Start Date: 2026:09:23 15:12:44
End Date: 2026:09:23 15:12:59
ok: run: clamonacc: (pid 17328) 1s
/home/kluster/teste/eicar.com: {HEX}test.test.eicar.1040.UNOFFICIAL FOUND
/home/kluster/teste/eicar.com: moved to '/var/opt/clamav-quarentena/eicar.com'
----------- SCAN SUMMARY -----------
Known viruses: 3811649
Engine version: 1.5.3
Scanned directories: 45
Scanned files: 576
Infected files: 1
Data scanned: 6.92 MiB
Data read: 5.87 MiB (ratio 1.18:1)
Time: 15.432 sec (0 m 15 s)
Start Date: 2026:09:23 15:12:44
End Date: 2026:09:23 15:12:59
ok: run: clamonacc: (pid 17328) 1s
cat: /home/usuario/teste/eicar.com: Arquivo ou diretório inexistente
Caso quiser dê um:
ou
E, para encerrar, confirme que o Clamonacc iniciou (apesar de
a saída mostrar isso no final):
run: clamonacc: (pid 17328) 62s
Vemos que o teste final correu tudo bem.
Escaneou os arquivos e pegou o eicar.com movendo-o para a
quarentena e "ligando" o Clamonacc.
Lembrando que é necessário desabilitar o Clamonacc durante as
varreduras porque, como vimos, ele não deixa nem o Clamdscan e nem o
Clamscan atuarem nos arquivos e diretórios protegidos.
Pode deixar o Clamonacc habilitado durante as varreduras que
somente não serão escaneados os diretórios e arquivos protegidos pelo
Clamonacc, porém, eu prefiro desabilitar para evitar conflitos e possíveis
problemas de travamentos porque, como vimos, o Clamonacc atua direto no
Kernel.
Depois, lembre de configurar ALVOS para raiz (/) no arquivo
/usr/local/bin/varredura.sh e acrescente quantas exclusões quiser
com o parâmetro --exclude-dir.
Códigos de retorno do ClamAV: 0 = limpo, 1 = infectado, 2 = erro
Abrindo o Cron:
ou
ou
ou
configure o ~/.bashrc permanentemente, senão o comando "sudo crontab -e" abrirá o vi por padrão no Void e você nunca mais sairá dele.
Coloque dentro:
Salve e saia.
TESTANDO O CRON
Coloque uma linha assim:

Para remover completamente:
ou
ou
configure o ~/.bashrc permanentemente, senão o comando "sudo crontab -e" abrirá o vi por padrão no Void e você nunca mais sairá dele.
Coloque dentro:
Salve e saia.
Configure os dias e horários para quando o computador/servidor
estiver ligado, ou seja, configure de acordo com as tuas necessidades.
25 15 * * * /usr/local/bin/varredura.sh >> /var/log/varredura.log
2>&1
Ajuste para um horário perto, ali está para iniciar a
varredura às 15:25 hs. Não dará mensagem nenhuma no terminal.
Aguarde terminar e veja o log:
Time: 15.479 sec (0 m 15 s)
Start Date: 2026:09:23 15:25:00
End Date: 2026:09:23 15:25:16
ok: run: clamonacc: (pid 19885) 0s 2026-09-23 15:25:16 - Fim da varredura
(código de saída: 1)
Veja que iniciou às 15:25:00.
E se você configurou também o monitor-quarentena.sh no Cron,
deverá ver a mensagem na tela (Notify-send ou Zenity).
$ sudo sv stop clamd
$ sudo sv stop clamonacc
$ sudo xbps-remove clamav
$ sudo userdel _clamav
$ sudo groupdel _clamav
$ sudo umount /var/opt/clamav-quarentena
$ sudo rm -rf /var/opt/clamav-quarentena
Não esqueça de comentar ou apagar a linha no /etc/fstab:
$ sudo vim /etc/fstab
$ sudo rm -rf /var/log/freshclam.log
$ sudo rm -rf /var/log/clamd.log
$ sudo rm -rf /var/run/clamav
$ sudo rm /var/service/clamd
$ sudo rm -rf /etc/sv/clamd
$ sudo rm /var/service/clamonacc
$ sudo rm -rf /etc/sv/clamonacc
$ sudo rm -rf /etc/logrotate.d/clamav-quarentena
$ sudo rm -rf /run/runit/supervise.clamd
$ sudo rm -rf /run/runit/supervise.clamd-log
$ sudo sv stop clamonacc
$ sudo xbps-remove clamav
$ sudo userdel _clamav
$ sudo groupdel _clamav
$ sudo umount /var/opt/clamav-quarentena
$ sudo rm -rf /var/opt/clamav-quarentena
Não esqueça de comentar ou apagar a linha no /etc/fstab:
$ sudo vim /etc/fstab
$ sudo rm -rf /var/log/freshclam.log
$ sudo rm -rf /var/log/clamd.log
$ sudo rm -rf /var/run/clamav
$ sudo rm /var/service/clamd
$ sudo rm -rf /etc/sv/clamd
$ sudo rm /var/service/clamonacc
$ sudo rm -rf /etc/sv/clamonacc
$ sudo rm -rf /etc/logrotate.d/clamav-quarentena
$ sudo rm -rf /run/runit/supervise.clamd
$ sudo rm -rf /run/runit/supervise.clamd-log
Opcional:
$ sudo rm -rf /etc/freshclam.conf
$ sudo rm -rf /etc/clamd.conf
$ sudo rm -rf /etc/clamav-milter.conf
$ sudo rm -rf /usr/local/bin/limpar-quarentena.sh
$ sudo rm -rf /usr/local/bin/monitor-quarentena.sh
AVISO IMPORTANTE
Não utilize proteção recursiva com o Clamonacc (proteção em tempo real), pois ele praticamente deixará o sistema lento, podendo travar o sistema.
Não utilize proteção recursiva com o Clamonacc (proteção em tempo real), pois ele praticamente deixará o sistema lento, podendo travar o sistema.
Pode ter múltiplos parâmetros OnAccessIncludePath:
OnAccessPrevention yes
OnAccessDisableDDD yes
OnAccessIncludePath /home
OnAccessIncludePath /home/usuario
OnAccessIncludePath /home/usuario/Downloads
OnAccessIncludePath /home/usuario/Downloads/pasta
OnAccessDisableDDD yes
OnAccessIncludePath /home
OnAccessIncludePath /home/usuario
OnAccessIncludePath /home/usuario/Downloads
OnAccessIncludePath /home/usuario/Downloads/pasta
A configuração acima resultará na proteção não recursiva em
tempo real dos diretórios, ou seja, o parâmetro "OnAccessIncludePath /home/usuario" somente protegerá em tempo real os arquivos que ali estiverem, mas não
protegerá os diretórios (pastas) dentro de /home/usuario. Quaisquer
tentativas de acesso detectadas pelo Clamonacc em arquivos maliciosos
dentro de /home/usuario serão bloqueadas pelo Kernel através do
fanotify, como veremos nos testes mais adiante.
Para o tipo de proteção com bloqueio automático, os
parâmetros básicos a serem habilitados são os seguintes:
OnAccessIncludePath /home/usuario/pasta
OnAccessExcludeUname clamav
OnAccessPrevention yes
OnAccessDisableDDD yes
OnAccessExcludeUname clamav
OnAccessPrevention yes
OnAccessDisableDDD yes
Com "OnAccessPrevention yes", ao tentar acessar um
arquivo malicioso com, por exemplo, cat eicar.com, o ClamAV através do
fanotify do Kernel emitirá uma notificação:
cat: eicar.com: Operação não permitida
Com "OnAccessPrevention no", ao tentar acessar um
arquivo malicioso, o acesso será permitido.
Coloquei "OnAccessDisableDDD yes" porque o DDD falha
em aplicar as marcações do Kernel recursivamente para diretórios que já
existiam antes do serviço iniciar, então, para evitar conflitos, é melhor
desabilitar e colocar as pastas que você quer que tenham bloqueio
imediato.
De qualquer maneira, você deverá ter um script para mover os
arquivos infectados para a quarentena ou utilizar o parâmetro
"--move=/caminho/quarentena", pois o ClamAV não faz esse tipo de
controle.
Clamscan, Clamonacc e Clamdscan incluem a opção
"--remove" para excluir qualquer arquivo que gere alertas durante
uma verificação. Isso geralmente é uma péssima ideia, a menos que você
esteja monitorando um diretório de uploads/downloads. Falsos positivos
acontecem! Você não quer que o arquivo errado seja excluído
acidentalmente. Em vez disso, considere usar o parâmetro "--move"
ou talvez apenas "--copy" e configure um script com o recurso
"VirusEvent" para notificá-lo quando algo for detectado.
CASO 0x0
Caso o usuário precise monitorar todo o sistema de arquivos,
mas bloquear tentativas de acesso maliciosas não é uma preocupação:
OnAccessMountPath /
OnAccessExcludeRootUID yes
OnAccessExcludeUname clamav
OnAccessExcludeRootUID yes
OnAccessExcludeUname clamav
Essa configuração ativará o
On-Access Scanner notify-only (apenas notificação). Ela também
garantirá que apenas processos de usuário que não sejam root nem clamav,
acionem verificações no sistema de arquivos. Os processos iniciados pelo
root e pelo usuário do ClamAV (_clamav ou clamav) não acionarão
verificações e, por conseguinte, notificações, ou seja, o ClamAV fará
nada. Muitas vezes isso é necessário para evitar um loop em processos do
root e/ou do usuário do ClamAV.
Para mover os arquivos infectados para a quarentena e limpar
a quarentena depois de um certo tempo, faz-se necessário um script, como
veremos.
O parâmetro OnAccessMountPath utiliza uma configuração
de API fanotify diferente, o que o torna incompatível com
OnAccessIncludePath e com o sistema DDD. Isso também significa que as
seguintes opções não podem ser usadas em conjunto com
OnAccessMountPath:
- OnAccessExtraScanning - é construído em torno da captura de eventos inotify.
- OnAccessExcludePath - é baseado no Sistema DDD.
- OnAccessPrevention - trava o sistema se fosse selecionado para OnAccessMountPath.
Se você precisar de OnAccessPrevention yes, use
OnAccessIncludePath e OnAccessExcludePath.
CASO 0x1
Caso o administrador do sistema precise monitorar o diretório
pessoal de vários usuários, mas não de todos e não é necessário bloquear
tentativas de acesso, mas somente notificar:
OnAccessIncludePath /home
OnAccessExcludePath /home/usario2
OnAccessExcludePath /home/usuario4
OnAccessExcludeUname clamav
OnAccessExcludePath /home/usario2
OnAccessExcludePath /home/usuario4
OnAccessExcludeUname clamav
Com essa configuração, o On-Access Scanner monitorará
recursivamente todo o diretório /home no modo notify-only, ou seja,
somente notificação. Os diretórios /home/usuario2 e
/home/usuario4 ficarão recursivamente fora da verificação.
Para mover os arquivos infectados para a quarentena e limpar
a quarentena depois de um certo tempo, faz-se necessário um script, como
vimos.
Observação:
"OnAccessIncludePath /", ou seja, "OnAccessIncludePath" na raiz, NÃO
é aceito como um parâmetro válido!
ClamAV no Linux
Verificando a configuração do kernel para a presença do fanotify: Atualizando e instalando: Verifique se o usuário e o grupo do ClamAV foram criados:
Fazendo Arquivos de Log
Para o Freshclam: Para o Clamd: Colocando o diretório database com o dono correto (verifique se é _clamav ou clamav): Veja artigo.
Veja artigo.
AVISO
QUARENTENA
Criando diretório e arquivo e permissionando:
Montando imediatamente:
Veja artigo.
Permissionando:
Veja artigo.
Permissionando:
Veja artigo.
Logrotate
Veja artigo.
Veja artigo.
Atualizando banco de dados:
ou
Caso quiser pode executar novamente:
Clamonacc
Veja artigo.
Testando bash: /home/usuario/Downloads/eicar.com: Operação não permitida
Perceba que o arquivo foi movido para a quarentena:
cat: /home/usuario/Downloads/eicar.com: Operação não permitida
Testando Escaneamento
Wrapper Clamscan
Veja artigo.
Crie o arquivo de log das varreduras:
Veja artigo.
Verificando:
Verificando a configuração do kernel para a presença do fanotify: Atualizando e instalando: Verifique se o usuário e o grupo do ClamAV foram criados:
Caso não tenha sido criado na tua distribuição, crie o
usuário (no Void, ao instalar o ClamAV, o usuário e o grupo _clamav
são criados automaticamente, então pode pular esses dois comandos):
Se o seu sistema operacional não tiver os utilitários
groupadd e useradd, instale-os.
Vamos remover a extensão do arquivo:
Criando diretório para o soquete local e permissionando (verifique o nome
correto de usuário):
Para o Freshclam: Para o Clamd: Colocando o diretório database com o dono correto (verifique se é _clamav ou clamav): Veja artigo.
Veja artigo.
AVISO
O número ali são 100M convertidos em bytes. Esse número deve
ser o mesmo do parâmetro OnAccessMaxFileSize. Caso você mudar o
número do parâmetro OnAccessMaxFileSize deve executar esse comando
novamente com o novo número.
QUARENTENA
Criando diretório e arquivo e permissionando:
Adicione a seguinte linha no final para aplicar restrições
estritas de segurança (noexec, nosuid e nodev impedem a execução de
programas, binários SUID e criação de dispositivos):
...
/var/opt/clamav-quarentena /var/opt/clamav-quarentena none
bind,noexec,nosuid,nodev 0 0
Permissionando:
Veja artigo.
Permissionando:
Veja artigo.
Veja artigo.
Caso quiser pode executar novamente:
Testando bash: /home/usuario/Downloads/eicar.com: Operação não permitida
Isso deve acontecer porque no arquivo /etc/clamd.conf o
caminho /home/usuario/Downloads está no OnAccessIncludePath.
Faremos com sudo:
Tentando ler o arquivo:
cat: /home/usuario/Downloads/eicar.com: Operação não permitida
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
Podemos ver que o clamonacc (Proteção em Tempo Real) não
deixa nem o clascam e nem o clamdscan acessarem o arquivo virulento, nem
com sudo e nem com o próprio usuário _clamav (ou clamav).
Vamos comentar o diretório /home/usuario/Downloads no
arquivo:
Comente
#OnAccessIncludePath /home/usuario/Downloads
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Obs.: Para o arquivo ser movido para a quarentena, o
parâmetro "--move=/caminho/quarentena" deve ser passado no comando,
como veremos logo adiante.
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório inexistente
cat: /home/usuario/Downloads/eicar.com: Arquivo ou diretório
inexistente
Verificando:
O parâmetro -d (modo debug) apenas imprime na tela tudo o que
ele faria se estivesse rodando de verdade.
Se você quer forçar a rotação dos logs agora mesmo, substitua
o -d pelo parâmetro -f (force):
Se você quer ver o que ele está fazendo em tempo real enquanto executa de
verdade, use o modo detalhado -v (verbose):
Testando o arquivo:
ok: down: clamonacc: 1894s, normally upEm outro terminal execute:
Agora vamos testar um único diretório para comprovar.
Tenho um diretório em ~/teste que sei que não tem
vírus, vamos colocar o eicar para incrementar o teste:
Deixei essa parte assim, adapte para você:
# -------------------#
# Configuracao
# -------------------#
ALVOS=(
# "/"
# "/home"
# "/var/www"
# "/etc"
"/home/seu_usuario/teste"
# adicione mais diretorios aqui ou coloque para varrer o raiz (/) e adicione mais --exclude-dir abaixo
)
# Configuracao
# -------------------#
ALVOS=(
# "/"
# "/home"
# "/var/www"
# "/etc"
"/home/seu_usuario/teste"
# adicione mais diretorios aqui ou coloque para varrer o raiz (/) e adicione mais --exclude-dir abaixo
)
cat: /home/usuario/teste/eicar.com: Arquivo ou diretório inexistente
Caso quiser dê:
CRON
ou
ou
ou
ou
ou
configure o ~/.bashrc permanentemente, senão o comando
sudo crontab -e abrirá o vi por padrão no Void e você nunca mais
sairá dele.
Para remover completamente:
Não esqueça de comentar ou apagar a linha no /etc/fstab:
Opcional:
Como vimos, não é difícil, mas é trabalhoso.
Em pouco tempo pega-se o jeito.
HTOP
Basta pressionar a tecla Shift + O e digitar
COMMAND=clamonacc para filtrar apenas pelo processo, ou procurar
por clamonacc na lista.
File: /var/lib/_clamav/main.cvd
Build time: 16 Dec 2025 23:18 +0000
Version: 63
Signatures: 3287027
Functionality level: 90
Builder: tomjudge
MD5: 9c353a6b32555186a45a61c6441f38c0
Digital signature: gI9w3cezaElJbedEoiykyQeX1f6j9Xbs3a+cf9U/kH5QScGMe2mRz1K2JlYOrqfBuOUMbiKmvkVvAquOsMeDp/ejLVDx5WulC6klZVhLOfBHda29OjaLZwEGR9GPIHDr0mXriv7pivuMH60/loxpASIJHLOszyj95pxVK+EaTCh
Verification OK.
Build time: 16 Dec 2025 23:18 +0000
Version: 63
Signatures: 3287027
Functionality level: 90
Builder: tomjudge
MD5: 9c353a6b32555186a45a61c6441f38c0
Digital signature: gI9w3cezaElJbedEoiykyQeX1f6j9Xbs3a+cf9U/kH5QScGMe2mRz1K2JlYOrqfBuOUMbiKmvkVvAquOsMeDp/ejLVDx5WulC6klZVhLOfBHda29OjaLZwEGR9GPIHDr0mXriv7pivuMH60/loxpASIJHLOszyj95pxVK+EaTCh
Verification OK.
Ou
File: /var/lib/_clamav/daily.cld
Build time: 23 Sep 2026 06:24 +0000
Version: 28132
Signatures: 355666
Functionality level: 90
Builder: svc.clamav-publisher
Verification OK.
Build time: 23 Sep 2026 06:24 +0000
Version: 28132
Signatures: 355666
Functionality level: 90
Builder: svc.clamav-publisher
Verification OK.
O arquivo main.cvd é a base principal de assinaturas
estáveis do ClamAV e é atualizado muito raramente (geralmente uma ou duas
vezes por ano). A versão atual e mais recente globalmente é justamente a
Versão 63, gerada pelo desenvolvedor
tomjudge em 16 de dezembro de 2025 contendo as 3.287.027 assinaturas listadas na
saída.
O main.cvd continuará estático na versão 63 por algum
tempo, enquanto o daily.cld mudará de versão e trará a data do dia
atual toda vez que se rodar o
Freshclam.
O script de quarentena está operando sobre uma base de dados
totalmente atualizada.
Lembrando que as atualizações do Freshclam ocorrem
automaticamente 2 vezes por dia conforme o parâmetro Checks 2 no
arquivo /etc/freshclam.conf e uma terceira vez no dia se tu colocou
no Cron.
Quando ocorrem atualizações diárias, o Freshclam modifica
apenas o arquivo daily.cvd (ou daily.cld).
Principais arquivos de banco de dados:
- main.cvd: O banco estático principal.
- daily.cvd (ou daily.cld): Este sim muda múltiplas vezes ao dia para incluir ameaças recentes (Ransomwares, Phishing e malwares novos).
- bytecode.cvd: Atualizado esporadicamente para novas lógicas do motor de varredura.
Verificar/autorizar falsos positivos:
Diagrama de Software de Alto Nível
https://docs.clamav.net/manual/Usage.html
Diretórios e Arquivos mais Visados
1)
Diretórios Temporários: (Os alvos nº 1) Estes são os locais mais comuns porque qualquer usuário do sistema (ou serviço web vulnerável, como um site em WordPress ou uma aplicação PHP) tem permissão total para gravar arquivos neles./tmp: O diretório temporário global. Praticamente 90% dos scripts automatizados de ataque (como mineradores de criptomoedas e bots de DDoS) fazem o download de seus binários aqui antes de executá-los./var/tmp: Semelhante ao /tmp, mas os arquivos aqui não são apagados quando o sistema reinicia. Atacantes usam este local para tentar manter persistência no servidor./dev/shm: Este é o diretório de memória compartilhada (Shared Memory). Arquivos colocados aqui rodam direto na memória RAM, o que os torna extremamente rápidos e, muitas vezes, invisíveis para ferramentas tradicionais de monitoramento de disco.
2)
Diretórios de Serviços Web e Uploads: Se o seu Linux roda um servidor web (Apache, Nginx) ou bancos de dados, o atacante explorará falhas na aplicação para injetar arquivos (geralmente Web Shells em PHP, Python ou Perl)./var/www/html/ (ou subpastas de uploads como wp-content/uploads no WordPress): Onde códigos maliciosos são injetados para que o atacante possa controlar o servidor remotamente pelo navegador./var/spool/samba/ ou pastas de compartilhamento de rede: Se o Samba estiver mal configurado, malwares de Windows (como Ransomwares) podem ser depositados ali para infectar outros computadores da rede.
3)
Diretórios Ocultos nos Perfis de Usuários (/home): Quando o ataque visa especificamente a conta de um usuário (via roubo de senha SSH ou chave privada), os binários maliciosos costumam ser escondidos dentro de pastas ocultas na /home para evitar detecção visual simples (comandos ls comuns não as mostram)./home/usuario/.config/ ou /home/usuario/.local/: Pastas legítimas onde malwares se disfarçam de arquivos de configuração do sistema./home/usuario/.ssh/: Embora não coloquem o malware aqui, os atacantes injetam chaves públicas no arquivo authorized_keys desta pasta para garantir que possam reentrar no sistema quando quiserem, sem precisar de senha.

Nenhum comentário:
Postar um comentário