QMail – ClamAV (CentOS 7)

Published by Lello on

In questa sezione vedremo come far in modo che le mail in transito dal nostro sistema vengano filtrate per eliminare possibili messaggi con allegati potenzialmente pericolosi. Utilizzeremo ClamAV come sistema di antivirus e simscan per fare interagire il sistema di posta con il sistema di antispam e antivirus. Creiamo inizialmente l’utente ed il gruppo che ci serviranno in seguito:

# groupadd -g 88 simscan
# useradd -g 88 -u 88 -d /var/spool/simscan simscan

ClamAV

ClamAV è un motore antivirus open-source su licenza GPL ideato per scovare trojans, virus, malware e altre minacce dannose per il nostro sistema ed i nostri utenti.

Per il mio sistema userò le seguenti impostazioni:

  • ClamAV installato nella directory /opt/clamav-xxx
  • Aggiornamenti dei db di ClamAV dentro la directory /opt/clamav-xxx/share
  • Configurazione nella directory /opt/clamav-xxx/conf

Potete scaricare l’ultima versione (in formato sorgente) da questo indirizzo (vi consiglio di scaricare l’ultima versione stabile del prodotto; al momento in cui scrivo è la 0.98.4:

# cd /usr/src
# wget http://prdownloads.sourceforge.net/clamav/clamav/0.98.4/clamav-0.98.4.tar.gz
# tar xvfz clamav-0.98.4.tar.gz
# cd clamav-0.98.4
# ./configure --prefix=/opt/clamav-0.98.4 --bindir=/opt/clamav-0.98.4/bin \
   --sbindir=/opt/clamav-0.98.4/bin --sysconfdir=/opt/clamav-0.98.4/conf \
   --mandir=/usr/share/man --disable-clamav
# make
# make install
# rm -f /opt/clamav
# ln -s /opt/clamav-0.98.4 /opt/clamav
# cd /opt/clamav/conf
# cp clamd.conf.sample clamd.conf
# cp freshclam.conf.sample freshclam.conf
# mkdir  /var/run/clamd
# mkdir /var/log/clamd
# mkdir /opt/clamav/share/
# chown simscan /var/run/clamd /var/log/clamd /opt/clamav/share

Modifichiamo le seguenti direttive nel file di configurazione /opt/clamav/conf/clamav.conf; chiaramente effettuate le modifiche del caso secondo le vostre esigenze:

Example
LogFile /var/log/clamd/clamd.log
LogFileMaxSize 0
LogTime yes
LogClean yes
ExtendedDetectionInfo yes
PidFile /var/run/clamd/clamd.pid
TemporaryDirectory /tmp
DatabaseDirectory /opt/clamav/share
LocalSocket /tmp/clamd.socket
LocalSocketGroup simscan
FixStaleSocket yes
TCPSocket 3310
TCPAddr 127.0.0.1
MaxConnectionQueueLength 30
MaxThreads 20
MaxQueue 200
MaxDirectoryRecursion 20
SelfCheck 600
User simscan
AlgorithmicDetection yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanPDF yes
ScanSWF yes
ScanMail yes
ScanPartialMessages yes
PhishingSignatures yes
ScanHTML yes
ScanArchive yes
MaxScanSize 50M
MaxFiles 15000
Bytecode yes

Per l’esecuzione automatica, creiamo il file /etc/init.d/clamd ed inseriamo le seguenti linee:

#! /bin/bash
#
# crond Start/Stop the clam antivirus daemon.
#
# chkconfig: 3 70 41
# description: clamd is a standard Linux/UNIX program that scans for Viruses.
# processname: clamd
# config: /opt/clamav/conf/clamd.conf
# pidfile: /var/run/clamd/clamd.pid

# Source function library.
. /etc/init.d/functions

RETVAL=0

# See how we were called.

prog="clamd"
progdir="/opt/clamav/bin/"

# Source configuration
if [ -f /etc/sysconfig/$prog ] ; then
. /etc/sysconfig/$prog
fi

start() {
echo -n $"Starting $prog: "
daemon $progdir/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/clamd
return $RETVAL
}
stop() {
   echo -n $"Stopping $prog: "
   # Would be better to send QUIT first, then killproc if that fails
   killproc $prog
   RETVAL=$?
   echo
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/clamd
   return $RETVAL
}

rhstatus() {
   status clamd
}

restart() {
   stop
   start
}

reload() {
   echo -n $"Reloading clam daemon configuration: "
   killproc clamd -HUP
   retval=$?
   echo
   return $RETVAL
}
case "$1" in
   start)
      start
      ;;
   stop)
      stop
      ;;
   restart)
      restart
      ;;
   reload)
      reload
      ;;
   status)
      rhstatus
      ;;
   condrestart)
      [ -f /var/lock/subsys/clamd ] && restart || :
      ;;
   *)
      echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
      exit 1
esac

exit $?

Facciamo in modo che il nostro antivirus venga eseguito al boot.

# chmod 755 /etc/init.d/clamd
# chkconfig clamd on

Occupiamoci ora del freshclam, ossia quella parte di clamav che periodicamente aggiorna i database delle signature dei virus: modifichiamo il file /etc/clamav/conf/freshclam.conf in questo modo:

Example
DatabaseDirectory /opt/clamav/share
UpdateLogFile /var/log/clamd/freshclam.log
LogFileMaxSize 0
LogTime yes
PidFile /var/run/clamd/freshclam.pid
DatabaseOwner simscan
DatabaseMirror db.it.clamav.net
DatabaseMirror database.clamav.net
MaxAttempts 3
Checks 8
NotifyClamd /opt/clamav/conf/clamd.conf

Modificato il file di configurazione del freshclam, lo eseguiamo per scaricare il primo database

/opt/clamav/bin/freshclam --config-file=/opt/clamav/conf/freshclam.conf

Il processo di aggiornamento del database, durerà qualche minuto; successivamente modifichiamo il crontab (con il comando “crontab -e”) per eseguire l’aggiornamento del database delle signature dei virus ogni 8 ore:

# AGGIORNAMENTO DB CLAMAV
20 */8 * * *    /opt/clamav/bin/freshclam --config-file=/opt/clamav/conf/freshclam.conf --quiet 2>&1 > /dev/null

L’ultima cosa che ci rimane da fare è eseguire il nostro servizio:

# systemctl start clamd

Il nostro motore antivirus è installato, configurato e pronto per essere utilizzato dal nostro sistema di mailing.

 

← QMail – Test (CentOS 7)                         QMail – Spamassassin (CentOS 7)  →