En quelques années, le projet ClamAV™ est devenu la référence en matière de logiciel libre antivirus. La réactivité de l'équipe de développement est excellente qu'il s'agisse de la vitesse de publication des signatures de nouveaux virus ou des publications de correctifs de sécurité du logiciel lui-même.
L'installation et la configuration de cet antivirus est assez immédiate dans la mesure où le paquet Debian est parfaitement maintenu et son adaptation au service amavisd-new ne demande pas beaucoup d'efforts.
Les paquets Debian à installer pour une utilisation avec le service amavisd-new sont donnés dans la liste suivante :
$ dpkg -l *clam* |grep ^ii ii clamav 0.90.1-2 antivirus scanner for Unix ii clamav-base 0.90.1-2 base package for clamav, an anti-virus utility ii clamav-daemon 0.90.1-2 antivirus scanner daemon ii clamav-freshclam 0.90.1-2 downloads clamav virus databases from the Internet ii libclamav2 0.90.1-2 virus scanner library
Cette liste comprend trois fonctions distinctes.
- clamav
-
Ce paquet contient le scanner clamscan que l'on utilise au niveau système de fichiers. Ce mode de traitement est excessivement coûteux en temps d'accès disque et dégrade très sensiblement les performances du traitement du courrier électronique. Le service amavisd-new ne fait appel à ce scanner qu'en secours ; lorsque les antivirus primaires travaillant en RAM ne sont plus disponibles.
Vis-à-vis du service amavisd-new, le scanner est un antivirus secondaire. On obtient les informations suivantes lors du lancement du service.
amavis[3000]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan
- clamav-daemon
-
Ce paquet contient le démon clamd qui réside en mémoire de façon permanente et qui communique avec le service amavisd-new via un socket UNIX. C'est ce mode de traitement qui donne les meilleures performances. Une fois que le service a extrait tous les objets contenu dans les champs d'un message, il transmet ces objets aux anitivirus pour examen. Il est possible de stocker les objets à traiter dans un système de fichiers «monté» en RAM pour accroître encore les performances.
Vis-à-vis du service amavisd-new, le démon est un antivirus primaire. On obtient les informations suivantes lors du lancement du service.
amavis[3000]: Using internal av scanner code for (primary) ClamAV-clamd
- freshclam
-
Ce paquet contient le démon freshclam qui réside en mémoire de façon permanente et qui collecte périodiquement les nouvelles signatures de virus. Ce démon est aussi chargé de notifier le démon clamd pour qu'il recompose son cache en fonction des nouvelles signatures.
Ce démon n'a aucune interaction avec le service amavisd-new.
Comme les communications entre les démons freshclam, clamd et le service amavisd-new son basées sur un socket UNIX, les principales opérations de configuration consistent à organiser l'arborescence et les permissions sur le système de fichiers.
-
On choisit de stocker les informations sur l'état courant des démons dans le répertoire
/var/run/amavis
. -
Ce répertoire et tous ses objets doivent avoir pour propriétaire l'utilisateur et le groupe
amavis
.
En cours d'exécution, on obtient les informations suivantes.
$ ls -lA /var/run/amavis/ total 8 -rw-r----- 1 amavis amavis 0 2006-12-30 19:21 amavisd.lock -rw-r----- 1 amavis amavis 5 2006-12-30 09:35 amavisd.pid srwxr-x--- 1 amavis amavis 0 2006-12-30 09:35 amavisd.sock -rw-rw---- 1 amavis amavis 4 2006-12-30 09:34 clamd.pid srwxrwxrwx 1 amavis amavis 0 2006-12-30 09:34 clamd.sock
-
Configuration de
freshclam
-
La configuration de ce démon suit les directives du paquet Debian.
$ cat /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 LogFileMaxSize 0 MaxAttempts 5 # Check for new database 8 times a day Checks 8 DatabaseMirror db.local.clamav.net DatabaseMirror database.clamav.net DatabaseDirectory /var/lib/clamav/ NotifyClamd DNSDatabaseInfo current.cvd.clamav.net
-
Configuration de
clamd
-
La configuration de ce démon suit aussi les directives du paquet Debian.
$ cat /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/amavis/clamd.sock FixStaleSocket User amavis AllowSupplementaryGroups ScanMail ScanArchive ArchiveMaxRecursion 5 ArchiveMaxFiles 1000 ArchiveMaxFileSize 10M ArchiveMaxCompressionRatio 250 ScanRAR MaxDirectoryRecursion 15 ReadTimeout 180 MaxThreads 12 MaxConnectionQueueLength 15 LogSyslog LogFile /var/log/clamav/clamav.log LogTime LogFileMaxSize 0 PidFile /var/run/amavis/clamd.pid DatabaseDirectory /var/lib/clamav/ SelfCheck 3600
-
Utilisateur
clamav
-
L'utilisateur
clamav
doit faire partie du groupeamavis
.$ grep clam /etc/group amavis:!:109:clamav clamav:!:112:
C'est dans la Section VII - External
programs, virus scanners du fichier amavisd.conf
que l'on trouve les paramètres
d'appel à l'antivirus clamd
. Il
faut désigner le fichier socket tel
qu'il a été défini ci-avant : /var/run/amavis/clamd.sock
# ### http://www.clamav.net/ ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/amavis/clamd.sock"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], # # NOTE: run clamd under the same user as amavisd, or run it under its own # # uid such as clamav, add user clamav to the amavis group, and then add # # AllowSupplementaryGroups to clamd.conf; # # NOTE: match socket name (LocalSocket) in clamav.conf to the socket name in # # this entry; when running chrooted one may prefer socket "$MYHOME/clamd".