Simscan avec Clam Antivirus et SpamAssassin

Un article de Wiki SOS-ADMIN.


Sommaire

Installation de Simscan avec Clam Antivirus & SpamAssassin

Prérequis

Ce guide fonctionne avec une installation fonctionnelle de Qmail avec son patch Qmailqueue (voir ce guide)

J'ai traité il y a quelques jours de cela une installation similaire, mais en utilisant l'utilitaire Qmail-Scanner (voir ici, programmé en Perl. L'outil dont je vais parler aujourd'hui est lui programmé en C donc :

  • Plus rapide et performant
  • Pas de problèmes de suidperl



On ajoute les utilisateurs et groupes nécessaires :

groupadd clamav
groupadd simscan

useradd -g clamav -c "Compte ClamAV" -s /bin/false clamav
useradd -g clamav -c "Compte Simscan" -s /bin/false simscan


Vous devez avoir au minimum perl version 5.6.1, pour vérifier votre version de perl :

$ perl -v

This is perl, v5.8.6 built for i686-linux-thread-multi-ld

Copyright 1987-2004, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Les modules Perl suivants sont nécessaires pour effectuer correctement l'installation :

Digest::SHA1
Digest::HMAC
Net::DNS
Time::HiRes
HTML::Tagset
HTML::Parser
Pod::Usage
Parse::Syslog
Statistics::Distributions

Pour installer ces modules, lancez la commande suivante :

perl -MCPAN -e shell

Lors de l'installation manuelle (si c'est la première fois que vous utilisez cette commande), vous devrez choisir les mirroirs les plus proches en répondant aux questions posées. Pour toutes les autres questions, il suffit d'appuyez sur entrée.


Une fois en ligne de commande, vous pouvez installer les modules comme suit (attention à bien respecter les majuscules !) :

install Module::Module

En cas d'erreur pour certains, vous pouvez toujours tenter de forcer l'installation :

force install Module::Module

ou encore de télécharger les sources sur http://cpan.perl.org/ et en les installant comme suit :

perl Makefile.PL
make
make install

et dernière solution les RPM ; par exemple :

Sous RedHat/Fedora :
apt-get install perl-module-module

Sous Mandrake/Mandriva :
urpmi perl-module-module

Installation de Clam Antivirus

wget http://ovh.dl.sourceforge.net/sourceforge/clamav/clamav-0.87.1.tar.gz
tar -zxf clamav-0.87.1.tar.gz
cd clamav-0.87.1/
./configure --sysconfdir=/etc
make
make install
cp ./contrib/init/RedHat/clamd /etc/init.d/clamd
chkconfig clamd on

Nous éditons le fichier de configuration du démon Clam Antivirus :

vi /etc/clamd.conf

On commente la ligne suivante :

#Example

Et on décommente les lignes suivantes :

LogTime
LogSysLog
ScanMail

Voici les lignes à ajouter :

LogFile /var/log/clamd.log
User simscan
TemporaryDirectory /tmp

On s'occupe du fichier de log de clamd :

touch /var/log/clamd.log
chmod 600 /var/log/clamd.log
chown simscan:clamav /var/log/clamd.log

On commente la ligne suivante du fichier /etc/freshclam.conf :

#Example

Et on décommente celle-ci :

UpdateLogFile /var/log/freshclam.log

Afin d'être sympa et utiliser un miroir plus proche, on décommente et modifie également la ligne suivante (remplacez le 'fr' par un autre code de pays si votre serveur n'est pas en France) :

DatabaseMirror db.fr.clamav.net

On s'occupe du fichier de log de freshclam :

touch /var/log/freshclam.log
chmod 660 /var/log/freshclam.log
chown simscan:clamav /var/log/freshclam.log

On lance la commande suivante :

freshclam

Une fois la mise à jour effectuée, il ne vous reste plus qu'à lancer le démon Clam !

/etc/init.d/clamd start

Nous allons automatiser la mise à jour de la base de signatures de Clam Antivirus grâce à une tâche Cron quotidienne.

On édite le fichier /etc/crontab :

vi /etc/crontab

Et on rajoute la ligne suivante :

x y * * * root /usr/local/bin/freshclam -l /var/log/freshclam.log &>/dev/null

Modifiez les valeur x et y (respectivement les minutes et l'heure) en évitant les heures "pile" afin de ne pas surcharger les serveurs de mise à jour inutilement.

Voilà, c'en est fini de l'installation de Clam Antivirus, passons maintenant à SpamAssassin.

Installation de SpamAssassin

wget http://mir2.ovh.net/ftp.apache.org/dist/spamassassin/source/Mail-SpamAssassin-3.1.0.tar.gz
tar -zxf Mail-SpamAssassin-3.1.0.tar.gz
cd Mail-SpamAssassin-3.1.0/
perl Makefile.PL (lorsqu'on vous demande l'email de l'administrateur, appuyez sur Entrée)
make
make install

cp spamd/redhat-rc-script.sh /etc/init.d/spamd
chkconfig spamd on

groupadd spamd
useradd -g spamd -d /home/spamd -s /bin/false spamd

On édite maintenant les options de démarrage du démon SpamAssassin :

vi /etc/sysconfig/spamassassin

Copiez ce texte dans le fichier :

SPAMDOPTIONS="-x -m5 -u spamd -H /home/spamd -d --socketpath=/var/spamd.socket"

Note : pour le chemin du socket et histoire de respecter le système de fichier linux, indiquez plutôt --socketpath=/var/run/spamd.sock

Etant donné que nous n'utilisons pas Qmail-Scanner, il va falloir définir nous mêmes les options de SpamAssassin dans le fichier

/etc/mail/spamassassin/local.cf

Toutes les options disponibles sont présentées dans cette documentation officielle : http://spamassassin.apache.org/full/3.1.x/dist/doc/Mail_SpamAssassin_Conf.txt

Vous pouvez pour l'instant par exemple vous contenter de cette configuration :

required_hits 5
report_safe 0
rewrite_header Subject [SPAM]

On lance le démon SpamAssassin :

/etc/init.d/spamd start

Si tout est OK, bravo, vous venez d'installer avec succès Clam Antivirus et SpamAssassin !

Installation de Simscan

Simscan necessite RipMime :

wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.6.tar.gz
tar xvzf ripmime-1.4.0.6.tar.gz
cd ripmime-1.4.0.6
make && make install

Passons donc maintenant à l'application qui va permettre de faire la liaison entre Qmail et ces deux logiciels, Simscan.

wget http://www.inter7.com/simscan/simscan-1.1.tar.gz
tar -zxf simscan-1.1.tar.gz
cd simscan-1.1/
./configure --enable-spam=y \
            --enable-spam-passthru=y \
            --enable-clamav=y \
            --enable-spamc-args="-U /var/spamd.socket" \
            --enable-clamavdb-path="/usr/local/share/clamav" \
            --enable-received=y \
            --enable-attach=y

N'oubliez pas de modifier le chemin vers le socket de spamd.

Pour voir toutes le détail des options disponibles, consultez le fichier README.


Vous devriez avoir un résultat correspondant normalement à ceci :

           Current settings
---------------------------------------
user                  = simscan
qmail directory       = /var/qmail
work directory        = /var/qmail/simscan
control directory     = /var/qmail/control
qmail queue program   = /var/qmail/bin/qmail-queue
clamdscan program     = /usr/bin/clamdscan
clamav scan           = ON
trophie scanning      = OFF
attachement scan      = ON
ripmime program       = /usr/local/bin/ripmime
custom smtp reject    = OFF
drop message          = OFF
regex scanner         = OFF
quarantine processing = OFF
domain based checking = OFF
add received header   = OFF
spam scanning         = ON
spamc program         = /usr/bin/spamc
spamc arguments       = -U /var/spamd.socket
spamc user            = OFF
spam passthru         = ON


On lance donc la compilation et l'installation :

make clean
make
make install-strip

On attribue les bons droits au dossier de travail de Simscan :

chown simscan:clamav /var/qmail/simscan
chmod 750 /var/qmail/simscan

On crée le fichier simcontrol et on le compile, puis on crée le fichier contenant les versions de simscan et autres softs qu'il utilisent (clamav et spamassassin à priori) :

echo ":clam=yes,spam=yes,spam_passthru=yes">/var/qmail/control/simcontrol
/var/qmail/bin/simscanmk
/var/qmail/bin/simscanmk -g

Testeons le bon fonctionnement de Simscan avec SpamAssassin et Clam Antivirus :

echo "voila ça marche" > mailtest.txt
env QMAILQUEUE=/var/qmail/bin/simscan SIMSCAN_DEBUG=5 /var/qmail/bin/qmail-inject votre_adresse@domaine.com < mailtest.txt

Si vous recevez bien le mail, c'est bon, passez à l'étape suivante.


On édite les hôtes autorisés à utiliser notre SMTP comme relai :

vi /etc/tcp.smtp

Lignes à mettre dans ce fichier :

127.0.0.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"
:allow,QMAILQUEUE="/var/qmail/bin/simscan"

On relance tout :

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
/etc/init.d/qmail restart
OU
qmailctl cdb
qmailctl restart

Attention, les scripts de démarrage du daemon smtpd appliquent souvent des softlimit qui font que vous ne voyez pas certaines erreurs, et les mails arrivent soit vides, soit pas du tout. par exemple, pour les versions supervisés, il faut editer le fichier /service/qmail-smtpd/run, trouver la ligne (qui autorise l'utilisation de 3 mo de ram pour les process et sous process) :

exec /usr/local/bin/softlimit -m 3000000 \

et la remplacer par quelque chose du type (qui en autorise 100 mo) :

exec /usr/local/bin/softlimit -m 100000000 \

on relance le daemon smtpd :

svc -t /service/qmail-smtpd

Test de l'installation

Afin de tester SpamAssassin, vous pouvez utiliser le GTUBE : il suffit de vous envoyer la ligne ci-dessous par email et celui-ci devrait être marqué comme SPAM :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Un système identique existe pour tester Clam Anvirus, comme ci-dessous, envoyez-vous par mail la ligne suivante :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Vous pouvez aussi tester Clam Anvirus plus en profondeur grâce à ce test : http://www.webmail.us/testvirus

Patchs et modifications

Système permettant de logger les informations de Simscan dans MySQL

Patch permettant le calcul de statistiques sur l'activité de simscan

Liens utiles

Voici une liste de liens qui pourront vous être utiles durant cette installation :