[IT] Bash: come effettuare la scansione antivirus di una cartella automaticamente su Linux

Mettiamo caso che siate responsabili di una rete aziendale con diciotto client Windows e vogliate dotarli di un server, che tra gli altri servizi, offra anche una cartella condivisa e centralizzata su cui tutti i dipendenti possano leggere e scrivere files, una cartella che funga da metodo semplice e veloce per scambiarsi i files e che ponga fine alla primitiva abitudine di mandarsi i files via email.

Mettiamo caso che tra i diciotto dipendenti di cui sopra, ce ne siano soltanto due o tre capaci di mantenere il proprio computer pulito da virus e malware, mentre gli altri lottano ogni giorno con finestre di avviso di Avast, pennette infette e figli di trojan vari, per cui sarebbe questione di un attimo infettare tutta la Rete se i computer si vedessero tra loro.

Beh.. in una situazione del genere, se foste il sys-admin / unico responsabile IT di questa azienda/ente/ufficio, cosa fareste? Cosa fareste voi non lo so, ma posso raccontarvi cosa ho fatto io.

Una volta messo sù un server Linux [1] ed una volta configurata una simpatica condivisione Samba dal nome a dir poco fantasioso di /home/SCAMBIO, sì è già raggiunto un buon livello di sicurezza, visto che in una Rete di client Windows un server Linux già di per sè funge da pit-stop per qualsiasi infezione virale studiata per diffondersi automaticamente sulla rete locale.

Ma cosa succederebbe se un impiegato passasse un file eseguibile infetto ad un altro impiegato tramite SCAMBIO, e se quest’ultimo ci cliccasse sopra due volte? BOOM!, esatto.

Appositamente per scongiurare nabbate del genere è carino installare Clam Antivirus sul proprio server e pianificare, tramite script Bash e crontab, la scansione automatica ogni x minuti della cartella condivisa (nel mio caso, ricordiamolo, è /home/SCAMBIO), con conseguente spostamento degli eventuali files infetti in una cartella di quarantena posta al di fuori della cartella condivisa stessa e la creazione di un gioioso file di log, che meglio è formattato e meno tu sys-admin bestemmi dopo.

Riassiumiamo il tutto sottoforma di to-do list (che in questi tempi 2.0 vanno molto di moda):
- creare uno script Bash che richiami Clam Antivirus ed effettui la scansione della cartella /home/SCAMBIO, spostando gli eventuali files infetti in un’altra cartella al di fuori di essa e inaccessibile ai dipendenti (nel mio caso: /home/amministratore/Scrivania/vault);
- lo stesso script Bash genererà un file di log in cui saranno evidenziati soltanto gli eventuali files infetti trovati e spostati;
- questo file di log sarà copiato anche su /home/SCAMBIO come copia-conoscenza per i dipendenti, che potrebbero benissimo chiedersi come mai sono misteriosamente scomparsi i loro amati files .exe;
- cron si occuperà di eseguire lo script ogni x minuti automaticamente.

Lo script che ho creato è il seguente:

#!/bin/sh

# eldino's automatic clamscan v1.0
# start an antivirus scan via command-line

# user variables
FOLDER_SCAN="/home/SCAMBIO"
LOG_TEMP="/home/amministratore/Scrivania/logs/clamav.temp"
LOG_FILE="/home/amministratore/Scrivania/logs/clamav.log"
VAULT="/home/amministratore/Scrivania/vault"
SHARED_FOLDER_LOG_NAME="risultati_scansione_antivirus_automatica.txt"

# some checks
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
chmod 644 "$LOG_FILE"
fi

if [ ! -f "$LOG_TEMP" ]; then
touch "$LOG_TEMP"
chmod 644 "$LOG_TEMP"
fi

# format the date
dateToday=$(date "+%d-%m-%y")
timeNow=$(date "+%H:%M:%S")

# do the scan and save the raw log
/usr/bin/clamscan -r $FOLDER_SCAN --move=$VAULT > $LOG_TEMP

# polish the raw log and create the final log
echo "Scansione antivirus automatica:" $dateToday "-" $timeNow >> $LOG_FILE
cat $LOG_TEMP | grep "FOUND" >> $LOG_FILE
echo >> $LOG_FILE

# remove the raw log
rm -f $LOG_TEMP

# copy the final log into the shared folder
cp $LOG_FILE $FOLDER_SCAN/$SHARED_FOLDER_LOG_NAME

e lo ho messo in esecuzione automatica ogni minuto tramite gnome-schedule (“Compiti Pianificati” in Ubuntu), come illustrato dai seguenti screenshots:

Il log generato dal mio script è cumulativo. Eccovene un estratto:

Scansione antivirus automatica: 21-06-10 – 12:52:48
/home/SCAMBIO/WPAkill 2.1.7/WPA_Kill.exe: Trojan.Agent-40455 FOUND

Scansione antivirus automatica: 21-06-10 – 12:53:24

Scansione antivirus automatica: 21-06-10 – 12:54:00

Scansione antivirus automatica: 24-06-10 – 12:08:56

Scansione antivirus automatica: 24-06-10 – 12:15:22

Buon “sys-administrating” a tutti :)

Digressioni:
[1] Tre motivi al volo per usare Linux sul vostro server aziendale o d’ufficio:

1. Linux è gratuito, legale ed immediatamente disponibile per il download;
2. Linux ti permette di riciclare vecchi computer che per uso desktop sono ormai obsoleti, ma che per uso server vanno più che bene per la maggioranza delle esigenze;
3. su Linux è possibile automatizzare moltissimi task tramite la fantasticosa (cit.) shell Bash.

Chiaramente devi avere un minimo di skills informatiche e un po’ di dimistichezza con i simpatici ambienti  *NIX, perchè metter sù un server Linux non è esattamente un’operazione per perecottari e sbucciabanane (che nonostante tutto abbondano nel settore IT nostrano), ma già nel breve periodo dà molte soddisfazioni.

About these ads

2 risposte a [IT] Bash: come effettuare la scansione antivirus di una cartella automaticamente su Linux

  1. trapanzano scrive:

    Ehi, ti ho messo anche sul mio blog!!! http://trapanzano.wordpress.com

    Quale versione di linux consigli per un Pentium 4???
    Grazie

  2. eldino scrive:

    @trapanzano

    Un Pentium IV è ancora una buona macchina, se ha Ram sufficiente (almeno 512mb) vai di Ubuntu 10.04 tutta la vita, spacca i culi ed è divertente da usare. Se invece hai meno ram e/o vuoi un sistema maggiormente reattivo, prova Lubuntu 10.04 :)

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 76 follower

%d blogger cliccano Mi Piace per questo: