http://tuxanantes.free.fr/
Ce document décrit l'installation de Clamav , Spamassassin, Amavisd-New et la configuration de Postfix pour utiliser ces différents services.
La mise en oeuvre a été réalisée sur une Debian etch
L'installation de Postfix n'est pas décrite dans ce document. On partira du principe que l'on dispose d'un serveur de messagerie opérationnel.
On trouvera dans ce document :
les commandes utilisées et leur retour
les fichiers de configuration
les éventuelles messages d'erreur rencontrés et leur correction
peu de commentaires .....
Clamav
Clamav est un Antivirus
Mise à jour de la date et de l'heure système :
syntaxe générale de la commande :
# date -s "MM/JJ/AAAA HH:MM:SS"
Packages Debian :
http://packages.debian.org/fr/etch-volatile/clamav
http://volatile.debian.org/debian-volatile/
Pour installer la dernière version mise à jour de clamav , ajouter dans /etc/apt/sources.list :
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
Aprés modification , le fichier /etc/apt/sources.list contient :
# cat /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian/ etch main
deb-src http://ftp.fr.debian.org/debian/ etch main
## security
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free
# non free
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free
# apt-get upgrade
# apt-get install clamav
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
clamav-base clamav-freshclam libclamav4 libgmp3c2
Paquets suggérés :
unrar lha clamav-docs
Paquets recommandés :
arj unzoo
Les NOUVEAUX paquets suivants seront installés :
clamav clamav-base clamav-freshclam libclamav4 libgmp3c2
0 mis à jour, 5 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 16,7Mo dans les archives.
Après dépaquetage, 18,2Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?
# apt-get install clamav-daemon
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Paquets suggérés :
daemon clamav-docs
Les NOUVEAUX paquets suivants seront installés :
clamav-daemon
0 mis à jour, 1 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 210ko dans les archives.
Après dépaquetage, 467ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://volatile.debian.org etch/volatile/main clamav-daemon 0.93.1.dfsg-volatile1 [210kB]
210ko réceptionnés en 1s (137ko/s)
Sélection du paquet clamav-daemon précédemment désélectionné.
(Lecture de la base de données... 79119 fichiers et répertoires déjà installés.)
Dépaquetage de clamav-daemon (à partir de .../clamav-daemon_0.93.1.dfsg-volatile1_i386.deb) ...
Paramétrage de clamav-daemon (0.93.1.dfsg-volatile1) ...
Starting ClamAV daemon: clamd .
# apt-get install clamav-testfiles
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les NOUVEAUX paquets suivants seront installés :
clamav-testfiles
0 mis à jour, 1 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 192ko dans les archives.
Après dépaquetage, 307ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://volatile.debian.org etch/volatile/main clamav-testfiles 0.93.1.dfsg-volatile1 [192kB]
192ko réceptionnés en 1s (167ko/s)
Sélection du paquet clamav-testfiles précédemment désélectionné.
(Lecture de la base de données... 79142 fichiers et répertoires déjà installés.)
Dépaquetage de clamav-testfiles (à partir de .../clamav-testfiles_0.93.1.dfsg-volatile1_all.deb) ...
Paramétrage de clamav-testfiles (0.93.1.dfsg-volatile1) ...
Résultat de l'installation :
Le fichier /etc/clamav/clamd.conf :
#Automatically Generated by clamav-base postinst
#To reconfigure clamd run #dpkg-reconfigure clamav-base
#Please read /usr/share/doc/clamav-base/README.Debian.gz for details
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
User clamav
AllowSupplementaryGroups true
ScanMail true
ScanArchive true
ArchiveLimitMemoryUsage false
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
StreamMaxLength 10M
LogSyslog false
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
TemporaryDirectory /tmp
SelfCheck 3600
Foreground false
Debug false
ScanPE true
ScanOLE2 true
ScanHTML true
DetectBrokenExecutables false
MailFollowURLs false
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
PhishingSignatures true
PhishingScanURLs true
PhishingRestrictedScan true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
DetectPUA false
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Le fichier /etc/clamav/freshclam.conf
# Automatically created by the clamav-freshclam postinst
# Comments will get lost when you reconfigure the clamav-freshclam package
DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose false
LogSyslog false
LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogTime no
Foreground false
Debug false
MaxAttempts 5
DatabaseDirectory /var/lib/clamav/
DNSDatabaseInfo current.cvd.clamav.net
AllowSupplementaryGroups false
PidFile /var/run/clamav/freshclam.pid
ConnectTimeout 30
ReceiveTimeout 30
ScriptedUpdates yes
CompressLocalDatabase no
NotifyClamd /etc/clamav/clamd.conf
# Check for new database 24 times a day
Checks 24
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net
Les processus :
clamav 11947 1 1 11:16 ? 00:00:03 /usr/bin/freshclam -d --quiet
clamav 12423 1 0 11:17 ? 00:00:00 /usr/sbin/clamd
Les fichiers contenant les signatures des virus :
# ls -l /var/lib/clamav/
total 32768
-rw-r--r-- 1 clamav clamav 446221 2008-06-26 11:16 daily.cvd
-rw-r--r-- 1 clamav clamav 33062400 2008-06-26 11:16 main.cld
-rw------- 1 clamav clamav 52 2008-06-26 11:16 mirrors.dat
# cd /usr/share/clamav-testfiles/
# clamscan .
./clam.zip: ClamAV-Test-File FOUND
./clam.exe.bz2: ClamAV-Test-File FOUND
./clam.cab: ClamAV-Test-File FOUND
LibClamAV Warning: RAR code not compiled-in
./clam-v2.rar: OK
LibClamAV Warning: RAR code not compiled-in
./clam-v3.rar: OK
./clam.exe: ClamAV-Test-File FOUND
----------- SCAN SUMMARY -----------
Known viruses: 327691
Engine version: 0.93.1
Scanned directories: 1
Scanned files: 6
Infected files: 4
Data scanned: 0.00 MB
Time: 8.498 sec (0 m 8 s)
Remarque concernant les Warning sur RAR :
Attention : l'article qui suit fait référence à la version clamav-0.92, à la date de rédaction de ce document la dernière version à jour est : clamav-0.93.1
http://www.securiteinfo.com/divers/Clamav_LibClamAV_Warning_RAR_code_not_compiled-in.shtml
Clamav with Debian : LibClamAV Warning: RAR code not compiled-in
A non-GPL license
Since 0.92, Debian cannot distribute Clamav packages with the unrar 3.0 code compiled in for license reasons. Unrar 1.0 and 2.0 file format are still supported but unrar 3.0 is not compiled in by default anymore. At the moment, there is no debian official / volatile / backport / non-free / unofficial mirror that offers a clamav package with RAR 3.0 code built-in.
How do I know if my Clamscan handles RAR 3.0 or not ?
Download RAR 3.0 test file, check it with clamscan. Two results are possible :
clam.rar: ClamAV-Test-File FOUND : Your Clamscan supports RAR 3.0
LibClamAV Warning: RAR code not compiled-in : Your Clamscan does not support RAR 3.0
The user's choice
To face to this problem, the user has 3 choices :
Continue to use debian mirrors for Clamav package. He will be able to scan RAR 3.0 with an external unpacker (see --unrar option for clamscan). This could be usefull for a desktop user, but not for a server because of performance impact.
Wait for a 3rd party to build mirror to make Clamav packages available with unrar 3.0 feature built-in. We guess it is not a good way due to security reasons : Clamav 0.92 is patching 3 security holes. Better to upgrade to 0.92.
Compile yourself the 0.92 version with unrar 3.0 code build-in. As far as we are a computer security company, that's our choice for obvious security reasons : we cannot stay with 0.91.1 and we cannot let viruses bypass the protections for a license problem.
Preparing the operating system
First of all, be sure to have at least a gcc compiler :apt-get install gcc make
You could need other packages and devel packages :apt-get install libwrap0 html2text libmagic1 libmilter0 libgmp3c2 file gettext bc libbz2-dev libmilter-dev libgmp3-dev libwrap0-dev zlib1g-dev
Get Clamav compile and installcd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/clamav/clamav-0.92.tar.gz
tar xvzf clamav-0.92.tar.gz
cd clamav-0.92
./configure --prefix=/usr --mandir=${prefix}/share/man --infodir=${prefix}/share/info --disable-clamav --with-dbdir=/var/lib/clamav/ --sysconfdir=/etc/clamav --with-sendmail=/usr/sbin/sendmail --enable-milter --disable-clamuko --with-tcpwrappers --with-gnu-ld --with-dns --enable-dns-fix
/usr/bin/make CFLAGS="-Wall -g -O2" pkgdatadir=/var/lib/clamav/ all
/usr/bin/make install
If all above does not generate errors, then it should be fully operational. Check it by clamscan the clam.rar file.
Warranty
NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.
Arnaud Jacques
27th december 2007
SpamAssassin
SA travaille sur des heuristiques : base de règles empiriques permettant
de reconnaître des occurrences de spam dans les mail
Quand le motif d’une règle est reconnu dans un mail, un score est
affecté au mail
Chaque règle donne un score qui est additionné au score total
Plus le score total est élevé, plus le mail a une probabilité forte d’être un
Spam…
# apt-get install spamassassin
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libnet-dns-perl
libnet-ip-perl libsocket6-perl libsys-hostname-long-perl liburi-perl libwww-perl
Paquets suggérés :
libio-socket-ssl-perl razor libnet-ident-perl libdbi-perl dcc-client pyzor libmail-dkim-perl
Paquets recommandés :
libhtml-format-perl spamc libmail-spf-query-perl re2c libsys-syslog-perl
Les NOUVEAUX paquets suivants seront installés :
libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libnet-dns-perl
libnet-ip-perl libsocket6-perl libsys-hostname-long-perl liburi-perl libwww-perl spamassassin
0 mis à jour, 12 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 2200ko dans les archives.
Après dépaquetage, 6799ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?
Modifier le fichier /etc/default/spamassassin
ENABLED=1
Modifier le fichier /etc/spamassassin/local.cf
rewrite_header Subject *****SPAM*****
report_safe 1
required_score 5.0
use_bayes 1
bayes_auto_learn 1
Mise à jour des régles :
# sa-update -D
Amavisd-new
Amavisd-new est un scanneur de mail pour détecter virus et/ou
spams
Amavisd-new est une amélioration des versions précédentes, car il
est « daemonisé » (résident en mémoire et pré-forké i.e plusieurs
daemon en attente)
antispam
clamav)
serveur de mails
de non délivrance
# apt-get install amavisd-new
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
libarchive-tar-perl libarchive-zip-perl libberkeleydb-perl libcompress-zlib-perl libconvert-binhex-perl
libconvert-tnef-perl libconvert-uulib-perl libio-multiplex-perl libio-stringy-perl libio-zlib-perl libmailtools-perl
libmime-perl libnet-cidr-perl libnet-server-perl libtimedate-perl libunix-syslog-perl
Paquets suggérés :
spamassassin lha arj unrar zoo nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl libdbi-perl
libio-string-perl libio-socket-ssl-perl
Les NOUVEAUX paquets suivants seront installés :
amavisd-new libarchive-tar-perl libarchive-zip-perl libberkeleydb-perl libcompress-zlib-perl libconvert-binhex-perl
libconvert-tnef-perl libconvert-uulib-perl libio-multiplex-perl libio-stringy-perl libio-zlib-perl libmailtools-perl
libmime-perl libnet-cidr-perl libnet-server-perl libtimedate-perl libunix-syslog-perl
0 mis à jour, 17 nouvellement installés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 1772ko dans les archives.
Après dépaquetage, 5468ko d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ?
La configuration se situe dans /etc/amavis/conf.d, elle est séparé en 7 fichiers :
01-debian : Rarement modifié
05-domain_id : detection automatique du domaine
Dans ce fichier , vous devez ajouter tous les domaines gérés mem les virtuels :
@local_domains_acl = ( ".$mydomain",".dsl-fr.eu" ,".lindev.fr" ,".toto.com" );
05-node_id : detection automatique du nom d'hôte
Rien a faire dans ce fichier, juste vérifier que hostname --fqdn renvoie le bon nom
15-av_scanner : liens des antivirus installés (autodetection)
Rien à faire dans ce fichier si ce n'est vérifier que l'antivirus utilisé est décommenté
15-content_filter_mode : lignes à décommenter pour activer AV&SA
Décommenter ces deux lignes :
@bypass_virus_checks_maps = (
%bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re);
@bypass_spam_checks_maps = (
%bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re);
20-debian_defaults : Paramétres principaux à modifier/ajouter selon vos besoins
Voici les principaux paramétres que modifié :
$mydomain='lindev.fr';
$myhostname = 'spms.lindev.fr';
$sa_tag_level_deflt = -100.0;
$sa_tag2_level_deflt = 5;
$sa_kill_level_deflt = 5;
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_BOUNCE;
$final_bad_header_destiny = D_PASS;
50-user : Paramétres perso
Pas de modification.
Toutes les options disponibles sont listés dans : /usr/share/doc/amavisd-new/examples
Configuration postfix :
Dans /etc/postfix/main.cf , on ajoute la ligne :
content_filter = smtp-amavis:[127.0.0.1]:10024
Dans le fichier /etc/postfix/master.cf, on ajoute les lignes :
( respecter l'espace blanc devant chaque -o, marque de continuité des lignes pour Postfix )
smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
On relance le service postfix :
# postfix reload
Test de la configuration mise en place :
On envoie un mail à l'aide par exemple de la comande « mail » :
# mail root
Subject: 2
2
Cc:
Lecture du mail :
# mail -u linux1 ( dans cette configuration le compte root est aliasé sur le compte linu1 )
# mail -u linux1
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/linux1": 1 message 1 new
>N 1 root@db41.exemple Thu Jun 26 14:08 26/1036 2
& 1
Message 1:
From root@db41.exemple.com Thu Jun 26 14:08:28 2008
X-Original-To: root@db41.exemple.com
X-Virus-Scanned: Debian amavisd-new at db41.exemple.com
X-Spam-Score: 2.898
X-Spam-Level: **
X-Spam-Status: No, score=2.898 tagged_above=2 required=6.31
tests=[NO_RELAYS=-0.001, TVD_SPACE_RATIO=2.899]
To: root@db41.exemple.com
Subject: 2
Date: Thu, 26 Jun 2008 12:08:18 +0000 (UTC)
From: root@db41.exemple.com (root)
2
Regardons les logs :
Jun 26 14:08:19 db41 amavis[16786]: (16786-01) (!!) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/lib/amavis/tmp/amavis-20080626T140818-16786/parts: lstat() failed. ERRORn
Jun 26 14:08:19 db41 amavis[16786]: (16786-01) (!!) WARN: all primary virus scanners failed, considering backups
Jun 26 14:08:28 db41 postfix/smtpd[18554]: connect from unknown[127.0.0.1]
Jun 26 14:08:28 db41 postfix/smtpd[18554]: 5A1A396C4E: client=unknown[127.0.0.1]
Jun 26 14:08:28 db41 postfix/cleanup[18545]: 5A1A396C4E: message-id=<20080626120818.94C7096C48@db41.exemple.com>
Jun 26 14:08:28 db41 postfix/qmgr[18310]: 5A1A396C4E: from=
Jun 26 14:08:28 db41 postfix/smtpd[18554]: disconnect from unknown[127.0.0.1]
Jun 26 14:08:28 db41 amavis[16786]: (16786-01) Passed CLEAN,
Jun 26 14:08:28 db41 postfix/smtp[18547]: 94C7096C48: to=
Jun 26 14:08:28 db41 postfix/qmgr[18310]: 94C7096C48: removed
Jun 26 14:08:28 db41 postfix/local[18555]: 5A1A396C4E: to=
Jun 26 14:08:28 db41 postfix/qmgr[18310]: 5A1A396C4E: removed
La solution du problème est ici :
http://wiki.clamav.net/Main/AmavisdNew
# addgroup clamav amavis
Ajout de l'utilisateur « clamav » au groupe « amavis »...
Terminé.
Dans le fichier /etc/clamav/clamd.conf , verifier la présence de la ligne :
AllowSupplementaryGroups true
et redemarrer le service clamd :
# /etc/init.d/clamav-daemon restart
Plus de messages d'erreur dans les logs.
On teste l'envoie d'un virus :
On récupère sur le site : http://securite-informatique.info/virus/eicar/ le code de test :
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
qu'on insère dans un mail :
# mail root
Subject: test de virus
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Cc:
On consulte les messages :
# mail -u linux1
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/linux1": 3 messages 3 unread
>U 1 root@db41.exemple Thu Jun 26 14:17 27/1046 3
U 2 root@db41.exemple Thu Jun 26 14:20 27/1046 4
U 3 postmaster@db41.e Thu Jun 26 14:27 63/2029 VIRUS (Eicar-Test-Signature) in mail FROM LOCAL <root@db41.exemple.com>
& 3
Message 3:
From MAILER-DAEMON Thu Jun 26 14:27:07 2008
X-Original-To: postmaster@db41.exemple.com
Content-Type: multipart/mixed; boundary="----------=_1214483227-16785-0"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
Date: Thu, 26 Jun 2008 14:27:06 +0200 (CEST)
From: "Content-filter at db41.exemple.com"
Subject: VIRUS (Eicar-Test-Signature) in mail FROM LOCAL
To:
This is a multi-part message in MIME format...
------------=_1214483227-16785-0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
A virus was found: Eicar-Test-Signature
Scanner detecting a virus: ClamAV-clamd
Content type: Virus (9,0)
Internal reference code for the message is 16785-03/gM-zhuTSP4yz
Return-Path:
Message-ID: <20080626122706.632F596C4D@db41.exemple.com>
Subject: test de virus
The message has been quarantined as: virus-gM-zhuTSP4yz
The message WAS NOT relayed to:
254 2.7.1 Ok, discarded, id=16785-03 - VIRUS: Eicar-Test-Signature
Virus scanner output:
p001: Eicar-Test-Signature FOUND
Virus scanner output:
p001: Eicar-Test-Signature FOUND
------------=_1214483227-16785-0
Content-Type: text/rfc822-headers; name="header"
Content-Disposition: inline; filename="header"
Content-Transfer-Encoding: 7bit
Content-Description: Message headers
Return-Path:
Received: by db41.exemple.com (Postfix, from userid 0)
id 632F596C4D; Thu, 26 Jun 2008 12:27:06 +0000 (UTC)
To: root@db41.exemple.com
Subject: test de virus
Message-Id: <20080626122706.632F596C4D@db41.exemple.com>
Date: Thu, 26 Jun 2008 12:27:06 +0000 (UTC)
From: root@db41.exemple.com (root)
------------=_1214483227-16785-0--
et dans les logs /var/log/mail.log :
...
Jun 26 14:27:07 db41 postfix/smtpd[19635]: 8C02996C4F: client=unknown[127.0.0.1]
Jun 26 14:27:07 db41 postfix/cleanup[19630]: 8C02996C4F: message-id=
Jun 26 14:27:07 db41 postfix/qmgr[18310]: 8C02996C4F: from=<>, size=1929, nrcpt=1 (queue active)
Jun 26 14:27:07 db41 amavis[16785]: (16785-03) Blocked INFECTED (Eicar-Test-Signature),
Jun 26 14:27:07 db41 postfix/smtp[19632]: 632F596C4D: to=
...