:: CLAMAV


Nome del pacchetto:   ClamAV
Sito di riferimento:   http://www.clamav.net/
Autore:   ====
Versione presentata:   75.1
Categoria port:   SECURITY

:: Descrizione del pacchetto

ClamAV è un antivirus per Unix:

  • scritto interamente in C;
  • utilizzabile a linea di comando;
  • in grado di autoaggiornare il proprio database di virus;
  • opensource.
Principale obiettivo degli sviluppatori di questo pacchetto è l'integrazione con i mail server. Attualmente ClamAV è in grado di identificare virus ma non di ripulire i file infetti. In una prossima release sarà presente il supporto per alcuni tipi di file.

Il database dei virus "conosciuti" è disponibile all'indirizzo: http://clamav-du.securesites.net/cgi-bin/clamgrok.

:: Installazione

ClamAV è disponibile tra i ports di FreeBSD e pertanto potete installarlo con i seguenti comandi:

# cd /usr/ports/security/clamav
# make
# make install
# make clean

L'installazione è completata. Per verificare l'elenco dei file compresi nel pacchetto vi ricordiamo l'utilizzo di:

# pkg_info (elenco dei pacchetti tra cui clamAV)
# pkg_info -L [nome del pacchetto]

:: Configurazione

Per un funzionamento "efficace" di ClamAV occorre aggiornare periodicamente il database delle definizioni dei virus. Possiamo farlo in due modi:

  • grazie all'esecuzione di un demone predisposto alla gestione di tale attività;
  • attraverso l'esecuzione periodica del comando di aggiornamento per mezzo della crontab di sistema;
Per gestire gli aggiornamenti, in entrambi i casi, sarà necessario l'utilizzo del comando freshclam. Ecco i comandi da eseguire per automatizzare l'aggiornamento del dizionario nel primo modo:

# touch /var/log/freshclam.log
# chmod 644 /var/log/freshclam.log
# chown clamav:clamav /var/log/freshclam.log
# vi /usr/local/etc/rc.d/freshclam.sh
(creazione dello script di avvio del demone freshclam)
[CONTENUTO DEL FILE]

#!/bin/sh
#
# Startup / shutdown script for Clam Antivirus

case "$1" in
start)
     /usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log
     echo -n ' freshclam'
     ;;
stop)      /usr/bin/killall freshclam > /dev/null 2>&1 \
     echo -n ' freshclam'
     ;;
*)
     echo ""
     echo "Usage: `basename $0` { start | stop }"
     exit 64
     ;;
esac

# chmod 744 /usr/local/etc/rc.d/freshclam.sh

Riassumiamo nella seguente tabella le opzioni che il programma freshclam accetta in input.

Opzione abbreviata Descrizione
-h Help.
-V Visualizza la versione di ClamAV.
-v Visualizza a video le operazioni eseguite durante l'aggiornamento.
-s Stampa alcune statistiche.
--quit Visualizza solo i messaggi di errore a video.
-d Avvia freshclam in modalità "demone".
-l [file] Definisce la posizione e nome del file di log.
-u [user] Specifica il nome dell'utente con il quale freshclam deve "girare". Per default clamav.
-c [num] Numero di check giornalieri che freshclam eseguirà. [num] deve essere compreso tra 1 e 50.


Freshclam utilizza inoltre un file di configurazione dove settare altri parametri importanti tra cui il server a cui connettersi per il download degli aggiornamenti. Qui di seguito riportiamo il contenuto del file /usr/local/etc/freshclam.conf che dovreste avere in seguito alla installazione del port.

[ /usr/local/etc/freshclam.conf ]

## Example config file for freshclam
## Please read the clamav.conf(5) manual before editing this file.
## This file may be optionally merged with clamav.conf.
##
# It should match clamav.conf's directive ! (in most cases you shouldn't change it)
DatabaseDirectory /usr/local/share/clamav
# Path to the log file (make sure it has proper permissions)
UpdateLogFile /var/log/clamav/freshclam.log
# Enable verbose logging.
#LogVerbose
# Use system logger (can work together with UpdateLogFile).
#LogSyslog
# Specify the type of syslog messages - please refer to 'man syslog'
# for facility names. Default is LOG_LOCAL6.
#LogFacility LOG_MAIL
# By default when freshclam is started by root it drops privileges and
# switches to the "clamav" user. You can change this behaviour here.
DatabaseOwner clamav
# The main database mirror is database.clamav.net (this is a round-robin
# DNS that points to many mirrors on the world) and in most cases you
# SHOULD NOT change it.
DatabaseMirror database.clamav.net
# How many attempts to make before giving up.
MaxAttempts 3
# How often check for a new database. We suggest checking for it every
# two hours.
Checks 2
# Proxy settings
#HTTPProxyServer myproxy.com
#HTTPProxyPort 1234
#HTTPProxyUsername myusername
#HTTPProxyPassword mypass

# Send the RELOAD command to clamd.
#NotifyClamd [/optional/config/file/path]
# Run command after database update.
#OnUpdateExecute command
# Run command if database update failed.
#OnErrorExecute command

:: Utilizzo
ClamAV può essere impiegato normalmente come antivirus a linea di comando per controllare directory diverse da quelle della posta elettronica.
Ecco un esempio di scansione di sistema:

# clamscan --recursive --infected --exclude /usr/home --log=/var/log/clamscan.log /usr

Con il precedente comando possiamo effettuare la scansione della directory /usr/ e delle sue sottodirectory escludendo /usr/home e registrando il log dei risultati nel file /var/log/clamscan.log.

Ecco il riepilogo delle opzioni del comando clamscan.

Opzione abbreviata Descrizione
-h Help.
-V Visualizza la versione di ClamAV.
-v Visualizza a video le operazioni eseguite durante l'aggiornamento.
-s Stampa alcune statistiche.
--quit Visualizza solo i messaggi di errore a video.
-l --log=[file]d Salva il report della scansione nel file specificato.
-r --recursive Esegue la scansione anche nelle sottodirectory a partire da quella indicata.
--bell "Beep" per indicare il rilevamento di un virus durante la scansione.
-d --directory=[directory] Specifica una particolare directory contenente il database dei virus.
--no-summary ClamAV non presenta il report di riepilogo al termine della scansione.
--remove Cancella i file infetti. Usate questa opzione con "cautela".
--move=[directory] ClamAV sposta i file infettati nella directory indicata. Per funzionare, clamav deve avere il permesso di scrittura nella directory indicata.


Per verificare il corretto funzionamento di ClamAV possiamo eseguire un test eseguendo i seguenti comandi:

# cd /tmp
# wget http://www.eicar.com/download/eicar.com
# wget http://www.eicar.com/download/eicar.com.txt
# wget http://www.eicar.com/download/eicar_com.zip
# wget http://www.eicar.com/download/eicarcom2.zip

L'utility wget consente di scaricare una pagina html o un file presente nell'htdocs del web server indicato. Il port è disponibile in /usr/ports/ftp/wget.

Con wget possiamo scaricare un "test virus" disponibile nel sito dell'EICAR (European Institute for Computer Antivirus Research). Va sottineato che i file presenti in tale sito non sono virus ma file che contengono stringe che normalmente gli antivirus identificano come impronte virali come "EICAR Test virus".

Per ulteriori informazioni sull'EICAR consultate il sito web: http://www.eicar.org.

Eseguiamo ora il test con il comando:

# clamscan /tmp

Il risultato dovrebbe essere il seguente:

--------------------------------------
Scan started: Sun Aug 8 19:11:58 2004

/tmp/eicar.com: Eicar-Test-Signature FOUND
/tmp/eicar.com.txt: Eicar-Test-Signature FOUND
/tmp/eicar_com.zip: Eicar-Test-Signature FOUND
/tmp/eicarcom2.zip: Eicar-Test-Signature FOUND

-- summary --
Known viruses: 23186
Scanned directories: 1
Scanned files: 8
Infected files: 4
Data scanned: 0.00 MB
I/O buffer size: 131072 bytes
Time: 3.201 sec (0 m 3 s)

Il nostro antivirus funziona. Possiamo rimuovere i file di test da /tmp e schedulare un controllo periodico del nostro sistema tramite la crontab.

Come ultima cosa possiamo decidere di avviare clam in modalità demone in modo da poter accettare connessioni Unix o tcp/ip da parte di altri programmi (come ad esempio Openwebmail). Eseguiamo i seguenti comandi:

# vi /usr/local/etc/rc.d/clamd.sh
[CONTENUTO DEL FILE]
#! /bin/sh
#

case "$1" in
start)
     /usr/local/sbin/clamd -c /usr/local/etc/clamav.conf
     echo -n " clamd"
      ;;
stop)
     killall clamd > /dev/null 2>&1
     ;;
*)
     echo ""
     echo "Usage: clamd [start|stop]"
     echo ""
     exit
     ;;
esac

I parametri che clamd accetta in input sono:

Opzione abbreviata Descrizione
-h --help Help.
-V --version Visualizza la versione di ClamAV.
-c --config-file [file] Indica la posizione e il nome del file di configurazione di clamd.

Se notate il file di boot, abbiamo eseguito clamd indicando il file di configurazione /usr/local/etc/clamav.conf, file presente nella directory indicata in seguito alla installazione del pacchetto.

[ Pagina principale ]