sexta-feira, 4 de agosto de 2023

Antivírus ClamAV com Proteção em Tempo Real e Interface Gráfica

Instalação e configuração do antivírus ClamAV com arquivos de configurações, On-Access Scanning (proteção em tempo real), várias assinaturas de bancos de dados e interface gráfica (ClamTk).


INTRODUÇÃO

   Leia todo o artigo antes de sair executando comandos, a não ser que você saiba o que está fazendo!

   Nenhum software se feriu durante a realização do artigo!

   Siga os comandos na sequência apresentada no artigo, pois o ClamAV é sensível e se ofende por qualquer coisa... já grita ERROR ERROR ERROR! Porém, depois de instalado, configurado e funcionando redondo ele é bastante estável e não apresenta erros... até surpreende pela estabilidade.

   O artigo ficou extenso, mas depois de ler e executar uma vez você verá que é simples e rápido instalar e fazer a manutenção do ClamAV, são poucos comandos e você poderá usar também a interface gráfica que, apesar de ser bastante básica, é uma mão na roda.

   ClamAV é um kit de ferramentas antivírus de código aberto (GPLv2) projetado especialmente para verificação de e-mail em gateways 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 é fornecido pela Cisco Systems, Inc.

   Antivirus para Linux ainda não se faz muito necessário, pois o Linux é modular, caso você pegar um vírus ele se restringirá a somente uma pequena parte do sistema. Além disso, poucos tem interesse em fazer vírus para Linux, pois quem faz vírus, ransomware, etc, pretende levar uma vantagem financeira e como o Linux não é muito usado em desktop não há interesse. Em servidores, que são a maioria baseados em UNIX/Linux no mundo todo, conta-se com a proteção do firewall, um bom filtro de pacotes e o sistema de permissões dos diretórios e arquivos que fornecem quase a totalidade da proteção necessária. E mais além disso, no caso de vírus e ransomware, na esmagadora maioria das vezes o principal responsável é o usuário que entra em certos sites duvidosos e clica em cima de links, executa arquivos, etc, sem o menor cuidado, muitas vezes levado por ganância financeira e/ou desejo sexual.

   Porém, um antivírus como o ClamAV fornece uma camada extra de proteção, principalmente para quem gosta de acessar certos sites duvidosos e, neste caso, tanto faz se for Linux, Windows, macOS, etc.

   E, como já foi dito, o ClamAV é projetado especialmente para verificação de e-mail em gateways de e-mail.


IMPORTANTE

   Para ter On-Access Scanning (proteção em tempo real) requer um sistema executando um kernel Linux versão >= 3.8 com fanotify compilado, sem o fanotify não rola o On-Access Scanning.

   Segundo o que está na página oficial do ClamAV (link ao final do artigo):

   "On-Access Scanning The ClamOnAcc application provides On-Access Scanning for Linux systems. On-Access Scanning is a form of real-time protection that uses ClamD to scan files when they're accessed."

  "Varredura ao acessar O aplicativo ClamOnAcc fornece varredura ao acessar para sistemas Linux. A varredura ao acessar é uma forma de proteção em tempo real que usa o ClamD para verificar os arquivos quando eles são acessados."

   O ClamAV não tem aquela proteção que fica o tempo todo "escaneando" o computador (aliás, antivírus nenhum tem, mas isso é passível de discussão), ele somente escaneia o diretório e/ou o arquivo quando ele é acessado, o que não é muito diferente.

   O cliente ClamOnAcc para o daemon de varredura ClamD fornece varredura no acesso em versões modernas do Linux. Isso inclui um recurso opcional para bloquear o acesso ao arquivo até que um arquivo seja verificado (prevenção no acesso). E o ClamAV é um glutão de memória, ele sozinho consome 3GB de RAM só existindo. Executando processos pode chegar a 5GB de RAM só para ele. Porém, com as configurações aqui presentes consegui reduzir para 2GB ele sozinho e 3GB com processos de escaneamento ocorrendo. Apesar de que isso é relativo atualmente, pois como os softwares gráficos vão se atualizando, cada vez mais faz-se necessário mais memória RAM.

   Caso você não tenha muita memória RAM com seu Linux sugiro não habilitar o On-Access Scanning, faça uma instalação básica do ClamAV (link ao final do artigo), mas ainda assim ele consumirá, no mínimo, 2GB de RAM só para ele.

root@debina:~# free --mega
                             total     usada        livre     compart.     buff/cache    disponível
Mem.:                25183      3054     21201             111             1378           22128
Swap:                  1999            0       1999


   Vejam que tem 24GB de RAM e 3054MB usados (~3GB), sendo que tem instalado o sistema Debian 12, Apache2, PostgreSQL, PHP, Nftables, Netbeans, Filezilla, Google Chrome, Firefox e o ClamAV, além de outros programas.

 Figura 01 - Pelo htop podemos ver o On-Access Scanning (proteção em tempo real) em ação.


INSTALAÇÃO

   Aqui será demonstrada a instalação no Debian (e derivados), mas você pode usar o pacman, o dnf, o zypper, etc, sempre verificando os caminhos dos arquivos, pois podem ser diferentes na sua distribuição.

   O ClamAV tem nos repositórios da maioria das distribuições e pode ser instalado pelo gerenciador de pacotes. Quem quiser a versão mais atual do ClamAV visite o site https://www.clamav.net/downloads e baixe a versão correspondente ao teu sistema e faça a instalação manual.

Verificando a configuração do kernel para a presença do fanotify:

# cat /boot/config-`uname -r` | grep FANOTIFY

Caso tiver habilitado no kernel a saída será essa:

CONFIG_FANOTIFY=y
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y

E se isso aparecer:

CONFIG_FANOTIFY=y
# 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, só 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, mas não será mostrado aqui pois demanda tempo e não é o escopo do artigo. Porém, você pode instalar o ClamAV mesmo assim e colocar para escanear o PC duas ou três (ou mais) vezes por dia através do cron.

Instalando dependências:

# apt-get install arc arj bzip2 cabextract lhasa lzop nomarch p7zip-full pax rpm tnef unrar-free unzip zip

Instalando

# apt-get install clamav clamav-base clamav-daemon clamav-docs clamav-freshclam clamav-milter
# aptitude install clamav-unofficial-sigs <<< banco de dados não oficial, mas interessante e não prejudica nada.

Para atualizar manualmente o clamav-unofficial-sigs:
clamav-unofficial-sigs.sh

   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 muito necessário. Para Desktop não precisa instalar, mas vai do seu gosto.

   Aqui foi instalado o clamav-milter por uma questão de o artigo ficar mais completo, mas você pode escolher não instalá-lo para economizar memória RAM.

Caso você instalá-lo e depois queira remover:

# apt-get remove clamav-milter
# apt autoremove

Ou nem coloque o clamav-milter no comando abaixo:
# apt-get install clamav clamav-base clamav-daemon clamav-docs clamav-freshclam clamav-milter

Deixaremos para instalar o clamTK (interface gráfica) no final.

Iniciando, habilitando e parando:

# systemctl start clamav-freshclam && systemctl enable clamav-freshclam && systemctl stop clamav-freshclam
# systemctl start clamav-daemon && systemctl enable clamav-daemon && systemctl stop clamav-daemon
# systemctl start clamav-milter && systemctl enable clamav-milter && systemctl stop clamav-milter

 Verifique se os arquivos freshclam.conf, clamd.conf e clamav-milter.conf estão dentro da pasta /etc/clamav:

# cd /etc/clamav
# ls


ARQUIVO FRESHCLAM.CONF

   Os arquivos freshclam.conf e o clamd.conf são os arquivos principais de configurações do ClamAV antivírus. Lembrando que na instalação básica (link ao final do artigo) configura-se somente o freshclam.conf.

   O parâmetro "DatabaseDirectory /var/lib/clamav" deve ser o mesmo nos arquivos freshclam.conf e clamd.conf. Caso alterar num, deve obrigatoriamente, alterar no outro. Aconselho a deixar no padrão.

   Ao executar o freshclam o programa buscará uma atualização no endereço especificado na linha DatabaseMirror e caso não encontre ele passará para o endereço subsequente até encontrar e baixar as atualizações. Depois ele executará todas as DatabaseCustomURL. O arquivo em si ficou gigantesco, mas cada atualização completa demora em média apenas 2 a 3 minutos dependendo do seu PC e da sua banda de internet.

WARNING

"The mirrors reserve the right to block your IP address, if you are downloading too many times per hour or are abusing their servers/bandwidth in any way."

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.

   O arquivo abaixo está configurado para atualizar as assinaturas (banco de dados de porcarias, vírus, malware, etc) duas vezes por dia (parametro Checks 2). O padrão é Checks 24 (24 vezes por dia), mas leva em conta somente as assinaturas do próprio ClamAV.

   Vamos adicionar mais repositórios no freshclam.conf (verifique o caminho onde foi instalado o ClamAV, no Debian é em /etc/clamav).

   Antes faça um backup do arquivo original.

# mv /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf.bkp

   Segue o arquivo gigantesco com as configurações abaixo (está completo com espelhos de todo lugar para malware, spam, phishing, etc). Nem precisa de tudo isso, mas depois, caso você queira, pesquise e diminua e/ou altere o arquivo de acordo com as tuas necessidades.

# vim /etc/clamav/freshclam.conf <<< usei o vim use teu editor de texto preferido.


# INÍCIO DO ARQUIVO
#    
# Automatically created by the clamav-freshclam postinst
# Comments will get lost when you reconfigure the clamav-freshclam package
#
DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose false
LogSyslog false
LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogRotate true
LogTime true
Foreground false
Debug false
MaxAttempts 5
DatabaseDirectory /var/lib/clamav
DNSDatabaseInfo current.cvd.clamav.net
ConnectTimeout 30
ReceiveTimeout 0
TestDatabases yes
ScriptedUpdates yes
CompressLocalDatabase no
Bytecode true
NotifyClamd /etc/clamav/clamd.conf
# Check for new database 2 times a day
Checks 2
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net
#
DatabaseMirror db.br.clamav.net
DatabaseMirror db.ar.clamav.net
DatabaseMirror db.at.clamav.net
DatabaseMirror db.au.clamav.net
DatabaseMirror db.be.clamav.net
DatabaseMirror db.bg.clamav.net
DatabaseMirror db.ca.clamav.net
DatabaseMirror db.ch.clamav.net
DatabaseMirror db.cn.clamav.net
DatabaseMirror db.cz.clamav.net
DatabaseMirror db.de.clamav.net
DatabaseMirror db.dk.clamav.net
DatabaseMirror db.ec.clamav.net
DatabaseMirror db.ee.clamav.net
DatabaseMirror db.es.clamav.net
DatabaseMirror db.fr.clamav.net
DatabaseMirror db.gr.clamav.net
DatabaseMirror db.hk.clamav.net
DatabaseMirror db.hu.clamav.net
DatabaseMirror db.id.clamav.net
DatabaseMirror db.ie.clamav.net
DatabaseMirror db.it.clamav.net
DatabaseMirror db.jp.clamav.net
DatabaseMirror db.kr.clamav.net
DatabaseMirror db.lt.clamav.net
DatabaseMirror db.mx.clamav.net
DatabaseMirror db.nl.clamav.net
DatabaseMirror db.pl.clamav.net
DatabaseMirror db.pt.clamav.net
DatabaseMirror db.ro.clamav.net
DatabaseMirror db.ru.clamav.net
DatabaseMirror db.se.clamav.net
DatabaseMirror db.sg.clamav.net
DatabaseMirror db.sk.clamav.net
DatabaseMirror db.tr.clamav.net
DatabaseMirror db.tw.clamav.net
DatabaseMirror db.ua.clamav.net
DatabaseMirror db.uk.clamav.net
DatabaseMirror db.us.clamav.net
#
# Argentina
DatabaseMirror clamav.md5.com.ar
#
# Australia
DatabaseMirror clamav.island.net.au
DatabaseMirror clamav.mirror.pacific.net.au
DatabaseMirror clamavdb.planetmirror.com
#
# Austria
DatabaseMirror clamav.inode.at
DatabaseMirror xarch.clamav.net
#
# Belgium
DatabaseMirror clamav.edpnet.net
#
# Bulgaria
DatabaseMirror clamav.host.bg
DatabaseMirror clamav.paralax.org
#
# Canada
DatabaseMirror clamav.mirror.rafal.ca
DatabaseMirror clamav.gossamer-threads.com
#
# China
DatabaseMirror clamav.ialfa.net
#
# Czech Rrepublic
DatabaseMirror clamav.iol.cz
DatabaseMirror clamav.skynet.cz
DatabaseMirror clamav.mirror.vutbr.cz
#
# Denmark
DatabaseMirror clamav.dif.dk
DatabaseMirror clamav.mirrors.webpartner.dk
#
# Ecuador
DatabaseMirror clamav.ecualinux.com
#
# Estonia
DatabaseMirror clamav.infonet.ee
#
# France
DatabaseMirror clamav.easynet.fr
DatabaseMirror clamav.inet6.fr
DatabaseMirror clamav.univ-nantes.fr
DatabaseMirror clamav.ovh.net
DatabaseMirror clamav.mirror.waycom.net
#
# Germany
DatabaseMirror clamav.mirror.fizzelpark.com
DatabaseMirror clamav.informatik.fh-furtwangen.de
DatabaseMirror clamav.lug-norderstedt.de
DatabaseMirror clamav.mcs.de
DatabaseMirror clamav.mirror.myebs.de
DatabaseMirror clamav.pcn.de
DatabaseMirror clamav.power-netz.de
DatabaseMirror clamav.savework.de
DatabaseMirror fuxhausen.tiscali.de
DatabaseMirror clamav.ftpproxy.org
DatabaseMirror clamav.kgt.org
#
# Greece
DatabaseMirror clamav.forthnet.gr
DatabaseMirror clamav.uoc.gr
#
# Hong Kong
DatabaseMirror clamav.meiwing.com
DatabaseMirror clamavdb.hostlink.com.hk
DatabaseMirror clamav.cpss.edu.hk
#
# Hungary
DatabaseMirror clamav.crysys.hu
DatabaseMirror clamav.dc.hu
DatabaseMirror clamav.fisher.hu
DatabaseMirror clamavdb.ikk.sztaki.hu
#
# Indonesia
DatabaseMirror clamav.cbn.net.id
DatabaseMirror db.clamav.or.id
#
# Ireland
DatabaseMirror clamavdb.heanet.ie
#
# Italy
DatabaseMirror clamav.oltrelinux.com
DatabaseMirror clamav.mirror.garr.it
DatabaseMirror clamav.linux.it
DatabaseMirror idea.sec.dico.unimi.it
#
# Japan
DatabaseMirror clamav.nara.wide.ad.jp
DatabaseMirror clamav-mirror.wiseknot.co.jp
DatabaseMirror clamavdb.ml-club.jp
DatabaseMirror clamav.mtcnet.jp
DatabaseMirror clamav.begi.net
DatabaseMirror clamavdb.osj.net
DatabaseMirror clamav.s-lines.net
DatabaseMirror clamav.yukiguni.net
DatabaseMirror clamavdb.mithril-linux.org
#
# Republic of Korea
DatabaseMirror clamav.hanbiro.com
#
# Lithuania
DatabaseMirror clamav.vtu.lt
#
# Mexico
DatabaseMirror clamav.mpsnet.com.mx
#
# Netherlands
DatabaseMirror clamav.essentkabel.com
DatabaseMirror clamav.fx-services.com
DatabaseMirror clamav.prolocation.net
DatabaseMirror clamav.mirror.transip.nl
DatabaseMirror clamav.unnet.nl
DatabaseMirror clamav.xs4all.nl
DatabaseMirror clamav.packetstorm.nu
#
# Poland
DatabaseMirror database.clamav.ps.pl
#
# Portugal
DatabaseMirror clamav.linux.pt
#
# Romania
DatabaseMirror clamav.iasi.roedu.net
#
# Russian Federation
DatabaseMirror clamav.citrin.ru
DatabaseMirror clamav.eastweb.ru
DatabaseMirror clamav.unix.su
#
# Singapore
DatabaseMirror clamav.acnova.com
#
# Slovakia
DatabaseMirror clamav.hq.alert.sk
#
# Spain
DatabaseMirror clamav.talika.eii.us.es
#
# Sweden
DatabaseMirror clamav.kratern.se
DatabaseMirror clamav.df.lth.se
DatabaseMirror clamav.mainloop.se
#
# Switzerland
DatabaseMirror switch.clamav.net
#
# Taiwan
DatabaseMirror clamav.cs.pu.edu.tw
DatabaseMirror clamav.stu.edu.tw
#
# Turkey
DatabaseMirror clamav.enderunix.org
DatabaseMirror clamav.ubak.gov.tr
#
# Ukraine
DatabaseMirror clamav.intercom.net.ua
#
# United Kingdom
DatabaseMirror clamav.mirror.camelnetwork.com
DatabaseMirror clamav.dbplc.com
DatabaseMirror clamav.spod.org
DatabaseMirror clamav.public-internet.co.uk
#
# United States
DatabaseMirror clamav.catt.com
DatabaseMirror clamav.clearfield.com
DatabaseMirror clamav.devolution.com
DatabaseMirror clamav.edebris.com
DatabaseMirror clamav.edgescape.com
DatabaseMirror clamav.infotex.com
DatabaseMirror clamav.irontec.com
DatabaseMirror clamav.liquidweb.com
DatabaseMirror clamav.pathlink.com
DatabaseMirror avmirror2.prod.rxgsys.com
DatabaseMirror clamav.theshell.com
DatabaseMirror clamav-du.viaverio.com
DatabaseMirror clamav-sj.viaverio.com
DatabaseMirror clamav.walkertek.com
DatabaseMirror clamav.westlinks.com
DatabaseMirror clamav.xyxx.com
DatabaseMirror clamav.pinna.cx
DatabaseMirror clamav.unet.brandeis.edu
DatabaseMirror clamav.bridgeband.net
DatabaseMirror clamav.inoc.net
DatabaseMirror clamav-000.mirrors.nks.net
DatabaseMirror clamav-001.mirrors.nks.net
DatabaseMirror clamav-002.mirrors.nks.net
DatabaseMirror clamav-003.mirrors.nks.net
DatabaseMirror clamav-004.mirrors.nks.net
DatabaseMirror clamav-005.mirrors.nks.net
DatabaseMirror clamav.oc1.mirrors.redwire.net
DatabaseMirror clamav.securityminded.net
DatabaseMirror clamav.securitywonks.net
DatabaseMirror clamav.sonic.net
#
# Malware
DatabaseCustomURL https://cdn.malware.expert/malware.expert.ndb
DatabaseCustomURL https://cdn.malware.expert/malware.expert.hdb
DatabaseCustomURL https://cdn.malware.expert/malware.expert.ldb
DatabaseCustomURL https://cdn.malware.expert/malware.expert.fp
#
# Sanesecurity: malware, spam, phishing, lottery, etc
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/sigwhitelist.ign2
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/sanesecurity.ftm
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/MiscreantPunch099-INFO-Low.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/MiscreantPunch099-Low.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/Sanesecurity_BlackEnergy.yara
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/Sanesecurity_sigtest.yara 
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/Sanesecurity_spam.yara
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/badmacro.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/blurl.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/hackingteam.hsb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/junk.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbl.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/jurlbla.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/lott.ndb
#
# Bofhland
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_cracked_URL.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_URL.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_malware_attach.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/bofhland_phishing_URL.ndb
#
# Foxhole
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_all.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_all.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_js.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_links.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/foxhole_mail.cdb
#
# Malware.expert
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malware.expert.fp
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malware.expert.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malware.expert.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malware.expert.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/malwarehash.hsb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phish.ndb
#
# Porcupine
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/phishtank.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/porcupine.hsb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/porcupine.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/rogue.hdb
#
# Spam
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/scam.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/scamnailer.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/shelter.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spam.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamattach.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spamimg.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spear.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/spearl.ndb
#
# Winnow
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow.attachments.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow.complex.patterns.ldb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_bad_cw.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_extended_malware_links.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_malware_links.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete.ndb
# DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_phish_complete_url.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/winnow_spam_complete.ndb
#
# Maldet
DatabaseCustomURL https://www.rfxn.com/downloads/rfxn.ndb
DatabaseCustomURL https://www.rfxn.com/downloads/rfxn.hdb
# Phishing, scams and other junk, hashes of spam documents and images
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/crdfam.clamav.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/doppelstern-phishtank.ndb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/doppelstern.hdb
DatabaseCustomURL https://ftp.swin.edu.au/sanesecurity/doppelstern.ndb
#
# FIM DO ARQUIVO

Salve e saia do arquivo.

Deixo a título de informação a descrição de algumas assinaturas: 


Figura 02


Figura 03


Note: Only use ONE of the above databases, winnow_phish_complete.ndb or winnow_phish_complete_url.ndb.

NOTA: Use somente um dos dois, ou um ou outro: winnow_phish_complete.ndb ou winnow_phish_complete_url.ndb.

No arquivo freshclamav.conf já deixei o winnow_phish_complete.ndb comentado.

Maiores informações aqui:

https://ftp.swin.edu.au/sanesecurity/readme.txt


ATUALIZANDO O FRESHCLAM

   O parâmetro DatabaseDirectory /var/lib/clamav deve ser o mesmo nos arquivos freshclam.conf e clamd.conf. Caso alterar num deve obrigatoriamente alterar no outro. Aconselho a deixar no padrão. 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.

Atualizando pelo terminal:

# systemctl stop clamav-freshclam
# freshclam

   Levará em torno de um a dois minutos atualizando os bancos de dados. Caso der um erro semelhante a esse:

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!

Faça o seguinte:

# lsof /var/log/clamav/freshclam.log

e veja na saída o número do PID ao final:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
freshclam XXXX clamav 3wW REG 8,3 3384 7471195 /var/log/clamav/freshclam.log

Encerre o processo:

# kill XXXX <<< no lugar de XXXX terá um número de 4 dígitos

Atualizando:

# freshclam

Abaixo é somente um exemplo, a saída bem maior:

Mon Jun 20 20:15:41 2023 -> ClamAV update process started at Mon Jun 19 20:15:41 2023
Mon Jun 20 20:15:41 2023 -> daily.cvd database is up-to-date (version: 26944, sigs: 2037362, f-level: 90, builder: raynman)
Mon Jun 20 20:15:41 2023 -> main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr)
Mon Jun 20 20:15:41 2023 -> bytecode.cvd database is up-to-date (version: 334, sigs: 91, f-level: 90, builder: anvilleg)
Mon Jun 20 20:15:42 2023 -> malware.expert.ndb is up-to-date (version: custom database)
Mon Jun 20 20:15:43 2023 -> malware.expert.hdb is up-to-date (version: custom database)
Time: 1.1s, ETA: 0.0s [========================>] 246B/246B
Mon Jun 20 20:15:44 2023 -> Testing database: '/var/lib/clamav/tmp.6691514a05/clamav-d170be684bda2d5cf594bdd941ceae65.tmp-malware.expert.ldb' ...
Mon Jun 20 20:15:44 2023 -> Database test passed.
Mon Jun 20 20:15:44 2023 -> malware.expert.ldb updated (version: custom database, sigs: 1)

Deverá terminar com a última linha assim:

Mon Jun 20 20:16:19 2023 -> Clamd successfully notified about the update.

   Aconselho a colocar no cron para fazer freshclam uma vez por semana (ou mais, a seu gosto) ou use o Programador na interface do ClamTK. Lembrando que o ClamTK é bem básico e abrange somente os aspectos do ClamAV (somente o que está nos arquivos de configurações), por exemplo, as atualizações do clamav-unofficial-sigs você deverá programar no cron ou realizar manualmente.

# systemctl start clamav-freshclam


IMPORTANTE

Sempre antes de executar freshclam deve-se parar o serviço, a sequência é sempre essa:

# systemctl stop clamav-freshclam
# freshclam
# systemctl start clamav-freshclam

Testando

Vamos instalar o diretório virulento de testes fornecido pelo clamav:

# apt-get install clamav-testfiles

Escaneando

# clamscan /usr/share/clamav-testfiles/

Deverá terminar com a lista de arquivos encontrados e ao final terá:

----------- SCAN SUMMARY -----------
Known viruses: 8808129
Engine version: 1.0.1
Scanned directories: 1
Scanned files: 46
Infected files: 46
Data scanned: 20.73 MB
Data read: 6.21 MB (ratio 3.34:1)
Time: 85.844 sec (1 m 25 s)
Start Date: 2023:06:19 20:26:40
End Date:   2023:06:19 20:28:06

Daí pode remover:
# apt-get remove clamav-testfiles


ON-ACCESS SCANNING

Agora vamos habilitar o On-Access Scanning conhecido também como Proteção em Tempo Real.

 Segundo o que está na página oficial do ClamAV:

"On-Access Scanning The ClamOnAcc application provides On-Access Scanning for Linux systems. On-Access Scanning is a form of real-time protection that uses ClamD to scan files when they're accessed."

"Varredura ao acessar O aplicativo ClamOnAcc fornece varredura ao acessar para sistemas Linux. A varredura ao acessar é uma forma de proteção em tempo real que usa o ClamD para verificar os arquivos quando eles são acessados."

   O ClamAV não tem aquela proteção que fica o tempo todo "escaneando" o computador (aliás, antivírus nenhum tem, mas isso é passível de discussão), ele somente escaneia o diretório e/ou o arquivo quando ele é acessado, o que não é muito diferente.

   O cliente ClamOnAcc para o daemon de varredura ClamD fornece varredura no acesso em versões modernas do Linux. Isso inclui um recurso opcional para bloquear o acesso ao arquivo até que um arquivo seja verificado (prevenção no acesso).

IMPORTANTE

   Caso o fanotify não estiver habilitado no Kernel (página INTRODUÇÃO) não adianta fazer esse procedimento sem antes habilitá-lo.

Pare o serviço e acesse o arquivo clamd.conf:

# systemctl stop clamav-daemon
# cd /etc/clamav
# vim clamd.conf

Deixe como está abaixo:

#Automatically Generated by clamav-daemon postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-daemon
#Please read /usr/share/doc/clamav-daemon/README.Debian.gz for details
#
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clamav
LocalSocketMode 666
#
# TemporaryDirectory is not set to its default /tmp here to make overriding
# the default with environment variables TMPDIR/TMP/TEMP possible
#
User clamav
ScanMail true
ScanArchive true
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
LogSyslog false
LogRotate true
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PreludeEnable no
PreludeAnalyzerName ClamAV
DatabaseDirectory /var/lib/clamav
OfficialDatabaseOnly false
SelfCheck 3600
Foreground false
Debug false
ScanPE true
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF true
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
CrossFilesystems true
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 30
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
AllowAllMatchScan true
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanTime 120000
MaxRecursion 16
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
PCREMatchLimit 10000
PCRERecMatchLimit 5000
PCREMaxFileSize 25M
ScanXMLDOCS true
ScanHWP3 true
MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
#
OnAccessMountPath /
OnAccessExcludePath /sys
OnAccessIncludePath /
OnAccessIncludePath /home
OnAccessPrevention yes
OnAccessExcludeUname clamav
OnAccessExtraScanning yes
OnAccessMaxFileSize 20M
MaxFileSize 50M
MaxScanSize 200M
TCPSocket 3310
TCPAddr localhost
AlertExceedsMax yes

Salve e saia do arquivo.

   Com a configuração acima (OnAccessPrevention yes e as outras após o último #) o fanotify bloqueará qualquer evento acionado permitindo que apenas arquivos limpos sejam abertos ou acessados.

   Essa configuração também alertará imediatamente se um arquivo malicioso for baixado inadvertidamente. 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 (para 524288), execute:

# echo 20971520 | sudo tee -a /proc/sys/fs/inotify/max_user_watches

Saída: 20971520

AVISO

   O número ali são 20M 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.

   Por enquanto somente vamos configurar esses parâmetros, em outra oportunidade disponibilizo um arquivo clamd.conf mais completo com outras configurações.

   Vejam bem, as opções acrescentadas acima estão todas comentadas mais abaixo no arquivo, somente acrescentei elas no início para evitar que tivessem que procurá-la no gigantesco arquivo, então caso você for configurar por conta o arquivo clamd.conf tenha cuidado de não repetir os parâmetros.

   O parâmetro OnAccessIncludePath pode ser utilizado várias vezes, esse parâmetro especifica o(s) diretórios (com arquivos) que serão incluídos no escaneamento no acesso.

   No parâmetro OnAccessExcludePath excluímos do escaneamento o diretório sys para evitar muitos falsos positivos. Tal diretório você deve escanear manualmente.

Execute:

# systemctl stop clamav-daemon
# clamd
<<< esse comando demora alguns segundos, caso não retornar nada é porque está tudo certo.
# systemctl start clamav-daemon
# systemctl start clamav-milter
# clamonacc

IMPORTANTE

   Cada vez que se alterar o arquivo clamd.conf deve-se executar os comandos na sequência: parar o serviço, alterar o arquivo e salvar, iniciar o serviço.

Fig. 04 - Você pode verificar com o comando top ou htop se o clamonacc está rodando.

# htop

Descompactando os bancos de dados cvd adicionais:

# mkdir /tmp/clamav-sigs
# cd /tmp/clamav-sigs/
# sigtool --unpack /var/lib/clamav/main.cvd
# ls

COPYING main.fp main.hsb main.mdb main.ndb main.crb main.hdb main.info main.msb main.sfp

# sigtool --unpack /var/lib/clamav/daily.cvd
# ls

COPYING daily.ftm daily.idb daily.ldu daily.ndb main.cdb main.info main.sfp daily.cdb daily.hdb daily.ign daily.mdb daily.ndu main.crb main.ldb daily.cfg daily.hdu daily.ign2 daily.mdu daily.pdb main.fp main.mdb daily.crb daily.hsb daily.info daily.msb daily.sfp main.hdb main.msb daily.fp daily.hsu daily.ldb daily.msu daily.wdb main.hsb main.ndb

Atualizando a base não oficial:

# clamav-unofficial-sigs


INSTALANDO O CLAMTK

# cd
# apt-get install clamtk

Fig. 05 - Abra a interface gráfica, aqui está em Aplicativos > Acessórios > ClamTk.


Fig. 06 - Clique em Configurações.


Fig. 07 - A opção de escaneamento heurístico prefiro deixar desabilitada para evitar muitos falsos positivos e habilitar somente em escaneamentos manuais.


Fig. 08 - Clique em voltar e vá em Atualização.


Fig. 09 - Verifique se as assinaturas estão atualizadas, deverá ter um número diferente de zero ao lado de "Assinaturas do antivirus". Clique em Voltar.


Fig. 10 - Vá em Assistente de atualização.


Fig. 11 - Verifique se está marcado para receber atualizações automáticas.
Lembrando que as atualizações das assinaturas do unofficial.sigs e de outros que não estejam no freshclam.conf você deverá fazer manualmente ou colocar no Cron.


Fig. 12 - Verifique no top ou no htop ou outro da sua escolha se o clamonacc (proteção em tempo real) está rodando.


   Para finalizar, reinicie o computador e execute um htop novamente para certificar se os serviços estão iniciando com o sistema.

Para remover:

# apt-get --purge remove clamav clamav-base clamav-daemon clamav-docs clamav-freshclam clamav-milter clamtk
# apt autoremove
# rm -rf /var/lib/clamav/main.cvd
# rm -rf /var/lib/clamav/daily.cvd

No caso do cron segue uma sugestão:

# crontab -e 20 23 * * * root systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam
# 40 23 * * 0,3 root clamscan --recursive --exclude-dir="^/sys" / --move=/home/clamav/quarentena
# * 1 * * 0,3 root clamav-unofficial-sigs

Salve e saia.

   A opção --recursive fará a varredura em todos os subdiretórios abaixo do /root.

   Para um escaneamento manual aconselha-se acrescentar a opção -i que exibirá os arquivos infectados, se houver:

# clamscan --recursive -i --exclude-dir="^/sys" / --move=/home/clamav/quarentena

   O arquivo quarentena em /home/clamav/quarentena você pode criar (mkdir) em outro lugar de sua escolha.

   O cron acima fará uma atualização todos os dias às 23:20h e uma varredura às 23:40h no domingo e na quarta em todo o sistema com exceção do diretório sys para evitar muitos falsos positivos e chamadas de erros.

   Caso queira, acrescente mais entradas de varreduras em vários horários no Cron de acordo com as suas necessidades. O diretório sys aconselho a escanear sozinho e manualmente para ter mais controle. E no domingo e na quarta fará atualização do clamav-unofficial-sigs à uma hora da madrugada.

   Agende como quiser no crontab quantas varreduras quiser de acordo com as suas necessidades, somente dei uma sugestão.


Opcional

Para instalar outras assinaturas adicionais do clamav-unofficial-sigs veja aqui: https://gerenciandoservidor.com/como-instalar-assinaturas-adicionais-para-o-clamav/




Instalação básica na linha de comando sem o ClamTK:


Referências

https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html

https://docs.clamav.net/manual/OnAccess.html

https://www.vivaolinux.com.br/etc/freshclam.conf-lpareal

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

https://servidordebian.org/pt/buster/intranet/antivirus/clamav

https://github.com/extremeshok/clamav-unofficial-sigs

https://malware.expert/signatures/

https://ftp.swin.edu.au/sanesecurity/

https://ftp.swin.edu.au/sanesecurity/readme.txt

https://www.rfxn.com/

https://www.rfxn.com/projects/linux-environment-security/

https://wiki.archlinux.org/title/ClamAV_(Portugu%C3%AAs)



Nenhum comentário:

Postar um comentário