ClamAV

11 febbraio 2024 by Roberto Puzzanghera 2 commenti

Clam AntiVirus is an open source (GPL) anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail gateways.

Aggiornare alla versione 1.3.0

La version 1.3.0 di ClamAV (release notes) installa anche le librerie libclamav_rust, libclammspack, libclamunrar_iface, and libclamunrar static libraries required by libclamav. Non dobbiamo quindi più preoccuparci di questi prerequisiti.

Prerequisiti

A partire dalla versione 0.104.0 l'installazione di clamav è basata esclusivamente su CMake, che sostuisce definitivamente quella basata su autotools. E' pertanto necessario cambiare il modo di configurazione, compilazione e installazione.

Dal momento che l'installazione non prevede personalizzazioni particolari sarà sufficiente, se lo si preferisce, installare il programma mediante un pacchetto che potrebbe essere messo già a disposizione dalla nostra distribuzione Linux preferita e utilizzare questa pagina solo per quanto riguarda la configurazione successiva.

Mostrerò qui come installare il programma attraverso la compilazione manuale dei sorgenti. Come detto, è necessario avere il pacchetto CMake. Nella documentazione ufficiale si raccomanda una versione recente (la versione 3.21.3 è ok qui sulla mia slackware) altrimenti potrebbero sorgere dei problemi e in quel caso sarà necessario aggiornare CMake via python pip3; in tal caso dare una occhiata a questa pagina delladocumentazione ufficiale sul come fare.

Prerequisiti

clamav e freshclam hanno queste  these librerie come loro dipendenze:

  • libbz2 / bzip2
    libz / zlib
    libxml2
    libpcre2
    openssl
    json-c
    libjson-c / json-c
    libmspack (built-in by default, enable with `ENABLE_EXTERNAL_MSPACK=ON`)
    libiconv (built-in to `libc` 99% of the time, not required on Windows)
    pthreads (provided by Linux/Unix; requires `pthreads-win32` on Windows)
    llvm (optional, see: [Bytecode Runtime](#bytecode-runtime), below)
    libcheck (default, disable with `ENABLE_TESTS=OFF`)

Opzionalmente, se siamo in un sistema basato su SystemD:

  • systemd, so ClamD, FreshClam, ClamOnAcc SystemD service.
  • libsystemd, so ClamD will support the `clamd.ctl` socket.

E' possibile reperire in questo commento una lista dei pacchetti necessari all'installazione di ClamAV su Ubuntu 22.04.

Installazione

Creare l'utente e il gruppo clamav

groupadd clamav
useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav

Scaricare

CLAMAV_VERSION=1.3.0
cd /usr/local/src
wget http://www.clamav.net/downloads/production/clamav-${CLAMAV_VERSION}.tar.gz
tar -xzf clamav-${CLAMAV_VERSION}.tar.gz
cd clamav-${CLAMAV_VERSION}
chown -R root:root .

Build e installazione

Prima di tutto, creare una sottocartella "build". Ciò ci consentirà, all'occorrenza in caso di problemi, di cancellare i file compilati e ricomniciare da capo.

La seguente installazione riprende il path della vecchia versione e usa /usr/localcome default prefix. Se si usa un sistema a 32b cambiare la variabile libdir a /usr/local/lib. Se si utilizza un sistema basato su systemd usare ENABLE_SYSTEMD=ON.

mkdir build 
cd build

cmake \
       -D CMAKE_INSTALL_PREFIX=/usr/local \
       -D CMAKE_INSTALL_FULL_LIBDIR=/usr/local/lib64 \
       -D APP_CONFIG_DIRECTORY=/usr/local/etc \
       -D ENABLE_MILTER=ON \
       -D ENABLE_SYSTEMD=OFF \
       -D ENABLE_TESTS=ON \
       -D CMAKE_BUILD_TYPE=Release ..

cmake --build .
ctest
cmake --build . --target install

Configurazione

Creiamo le directory log e database:

mkdir -p /var/log/clamd
chown -R clamav.clamav /var/log/clamd/
chmod -R o-rx /var/log/clamd/

mkdir -p /usr/local/share/clamav
chown clamav.clamav /usr/local/share/clamav

/usr/local/etc/clamd.conf

Prestare attenzione almeno alle seguenti righe, in particolare a quella che stabilisce l'utente sotto il quale deve girare il processo:

# Questo deve essere commentato
# Example
LogFile /var/log/clamd/clamd.log
LogTime yes
LogRotate yes
DatabaseDirectory /usr/local/share/clamav/
User clamav
TCPSocket 3310
TCPAddr 127.0.0.1

/usr/local/etc/freshclam.conf

# Commentare o rimuovere la linea qui sotto.
#Example
DatabaseDirectory /usr/local/share/clamav/
UpdateLogFile /var/log/clamd/freshclam.log
LogTime yes
LogRotate yes
DatabaseOwner clamav
DatabaseMirror database.clamav.net
NotifyClamd /usr/local/etc/clamd.conf
# Questo è per l'aggiornamento delle versioni su simscan headers. Commentare questa riga se simscan non e' ancora stato installato
OnUpdateExecute /usr/local/sbin/update-simscan

Avvio di clamd e freshclam

E' necessario avviare freshclam prima di clamav affinchè venga installato preventivamente il database.

Creiamo uno startup script come questo per freshclam (scarica):

#!/bin/sh 
# 
# Start/stop/restart freshclam. 
# 

DAEMON=/usr/local/bin/freshclam 

# Start clamav: 
start() { 
 if [ -x $DAEMON ]; then 
   echo -n "Starting freshclam daemon ... " 
   $DAEMON -d 
   echo " done." 
 fi 
} 

# Stop clamav: 
stop() { 
   echo -n "Stopping freshclam daemon ... " 
   killall -TERM freshclam 
   echo " done." 
} 

# Restart clamav: 
restart() { 
 stop 
 sleep 1 
 start 
} 

case "$1" in 
'start') 
 start 
 ;; 
'stop') 
 stop 
 ;; 
'restart') 
 restart 
 ;; 
*) 
 echo "usage $0 start|stop|restart" 
esac

Avvio del daemon:

cd /usr/local/bin
wget https://notes.sagredo.eu/files/qmail/freshclamctl
chmod +x /usr/local/bin/freshclamctl
freshclamctl start

Controlliamo che il database sia stato aggiornato

# more /var/log/clamd/freshclam.log

--------------------------------------
freshclam daemon 0.96.3 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
ClamAV update process started at Fri Oct 22 13:15:43 2010
main.cvd is up to date (version: 52, sigs: 704727, f-level: 44, builder: sven)
WARNING: getfile: daily-11979.cdiff not found on remote server (IP: 195.22.205.162)
WARNING: getpatch: Can''t download daily-11979.cdiff from db.it.clamav.net
WARNING: getfile: daily-11979.cdiff not found on remote server (IP: 213.92.8.5)
WARNING: getpatch: Can''t download daily-11979.cdiff from db.it.clamav.net
WARNING: getfile: daily-11979.cdiff not found on remote server (IP: 193.206.139.37)
WARNING: getpatch: Can''t download daily-11979.cdiff from db.it.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 12167, sigs: 142570, f-level: 53, builder: guitar)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 86, sigs: 10, f-level: 53, builder: edwin)
Database updated (847307 signatures) from db.it.clamav.net (IP: 193.206.139.37)
Clamd successfully notified about the update.
--------------------------------------

Creiamo uno script clamdctl (scarica) come questo nella cartella /usr/local/bin:

#!/bin/sh 
# 
# Start/stop/restart clamav. 
# 

DAEMON=/usr/local/sbin/clamd 

# Start clamav: 
start() { 
 if [ -x $DAEMON ]; then 
   echo -n "Starting clamd daemon:  /usr/sbin/clamd " 
   $DAEMON 
   echo " done." 
 fi 
} 

# Stop clamav: 
stop() { 
  echo -n "Stopping clamd daemon ... " 
  killall -TERM clamd 
  echo " done." 
} 

# Restart clamav: 
restart() { 
  stop 
  sleep 1 
  start 
} 

# Help 
help() { 
  $DAEMON --help 
  exit 
} 

case "$1" in 
'start') 
 start 
 ;; 
'stop') 
 stop 
 ;; 
'restart') 
 restart
  ;; 
'help') 
 help 
 ;; 
*) 
 echo "usage $0 start|stop|restart|help" 
esac

Avvio del daemon

cd /usr/local/bin
wget https://notes.sagredo.eu/files/qmail/clamdctl 
chmod +x /usr/local/bin/clamdctl 
clamdctl help

                      Clam AntiVirus Daemon 0.96.3
           By The ClamAV Team: http://www.clamav.net/team
           (C) 2007-2009 Sourcefire, Inc.

    --help                   -h             Show this help.
    --version                -V             Show version number.
    --debug                                 Enable debug mode.
    --config-file=FILE       -c FILE        Read configuration from FILE.

clamdctl start

Non dimentichiamo di abilitare l'avvio di clamd e freshclam al boot della macchina in rc.local

Commenti

clamav parte da solo

Clamd parte da solo all'avvio di Lubuntu 18.04 e clamav non si ferma più, sottraendo un mucchio di ram.

Come fare ad impostare l'avvio  solo manuale ?

Clamtk è già installato , e  non ci sono pianificazioni di attività .

Risulta un utente " Clamav "  che avvia clamd .

Grazie per la risposta

Rispondi |

clamav parte da solo

Non conosco per niente Ubuntu, quindi non posso aiutarti. Posso solo dire che se lo installi compilandolo a mano di sicuro non scrive nulla negli script di sistema.

Rispondi |