ClamAV

6 agosto 2019 Roberto Puzzanghera0 commenti

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

Creiamo l'utente e il gruppo clamav e installiamo:

groupadd clamav
useradd -g clamav clamav
cd /usr/local/src
wget http://www.clamav.net/downloads/production/clamav-0.101.3.tar.gz
tar -xzf clamav-0.101.3.tar.gz
cd clamav-0.101.3
chown -R root.root .

./configure
make
make install

ldconfig

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
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
DatabaseOwner clamav
# Decommentare la linea seguente e sostituire XY con il codice della tua nazione. 
# See http://www.iana.org/cctld/cctld-whois.htm for the full list.
DatabaseMirror db.it.clamav.net
NotifyClamd /usr/local/etc/clamd.conf

Logrotate

Copiare questo script in /etc/logrotate.d:

cat > /etc/logrotate.d/clamav << __EOF__
/var/log/clamd/*.log {
  daily
  notifempty
  missingok
  postrotate
  /usr/bin/killall -HUP freshclam 2> /dev/null || true
  /usr/bin/killall -HUP clamd 2> /dev/null || true
  endscript
}
__EOF__

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

COMMAND=$1
DAEMON=/usr/local/bin/freshclam

if [ "$COMMAND" == "start" ] ; then
    echo -n "Starting freshclam daemon ... "
    $DAEMON -d
    echo " done."
    exit
elif [ "$COMMAND" == "stop" ] ; then
    echo -n "Stopping freshclam daemon ... "
    killall -TERM freshclam
    echo " done."
    exit
else
    echo "usage: $0 start|stop"
    exit
fi

Avvio del daemon:

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

COMMAND=$1
DAEMON=/usr/local/sbin/clamd

if [ "$COMMAND" == "start" ] ; then
    echo -n "Starting clamd daemon ... "
    $DAEMON
    echo " done."
    exit
elif [ "$COMMAND" == "stop" ] ; then
    echo -n "Stopping clamd daemon ... "
    killall -TERM clamd
    echo " done."
    exit
elif [ "$COMMAND" == "help" ] ; then
    $DAEMON --help   
    exit
else
    echo "usage: $0 start|stop|help"
    exit
fi

Avvio del daemon

# 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

Test

Questo test dalla linea di comando dovrebbe essere fatto dalla directory sorgente di clamav. Ci dovrebbero essere alcuni file di test nella cartella clamav-x.yz/test. Il risultato della scansione sarà salvato in scan.txt

# cd /path/to/src/clamav/test
# clamscan -r -l scan.txt
----------- SCAN SUMMARY -----------
Known viruses: 834112
Engine version: 0.96.3
Scanned directories: 312
Scanned files: 7541
Infected files: 49
Data scanned: 273.18 MB
Data read: 306.89 MB (ratio 0.89:1)
Time: 24.649 sec (0 m 24 s)

Controlliamo il file scan.txt:

clamav-0.97/test/clam.chm: ClamAV-Test-File FOUND
clamav-0.97/test/clam.exe.bz2: ClamAV-Test-File FOUND
clamav-0.97/test/clam.bz2.zip: ClamAV-Test-File FOUND
clamav-0.97/test/clam-upx.exe: ClamAV-Test-File FOUND

Aggiungere il database di foxhole

Prima di tutto un grande grazie a Costel Balta per il suo ennesimo contributo a questa guida. Quanto sotto riportato mi è stato suggerito da lui.

I malware Zero hour (0hr) inviati via email sono sempre stati un problema. ClamAV può essere anche usato per bloccare questi attacchi. I database di foxhole hanno l'estensione .cdb, i quali usasno il sistema ClamAV per ricercare all'interno di certi file archivio dei file con nomi riconducibili a malware conosciuti e inoltre consente l'uso delle Espressioni Regolari, sugli stessi nomi dei file.

Per aggiungere il database di foxhole (http://sanesecurity.com/foxhole-databases/) è sufficiente salvare il file foxhole_all.cdb nella DatabaseDirectory di clamav, assegnare i privilegi all'utente clamav e riavviare il servizio:

cd /usr/local/share/clamav/
wget http://ftp.swin.edu.au/sanesecurity/foxhole_all.cdb
chown clamav:clamav foxhole_all.cdb
clamdctl stop
clamdctl start

Aggiungi un commento