Utiliser ClamAV sous Slackware 13.37

S'il y a un logiciel que la plupart des personnes sous Linux n'utilisent pas, c'est un antivirus. Sans être indispensable, il est tout de même intéressant d'en disposer dans certains cas, que ce soit sur une machine personnelle ou un serveur, dès lors que l'on reçoit des fichiers inconnus et que l'on partage par la suite. Seul antivirus libre, ClamAV est adapté pour la plupart des situations, mais il demande une configuration un peu fine si l'on souhaite en tirer le meilleur bénéfice.

Installation

Rien de très particulier à cette étape : récupérer les sources, la signature et la clé GPG du responsable du développement pour la vérification. Mais avant d'effectuer les traditionnels ./configure ; make ; make install il est nécessaire de créer un compte utilisateur et un groupe qui seront dédiés à ClamAV.

groupadd -g 1000 clamav
groupadd -g 1001 clamscan
useradd -g clamav -s /bin/false -c "User for Clam Antivirus" -G clamscan clamav
passwd -l clamav

En fait deux groupes ont été crées, ce qui sera expliqué par la suite. Le compte utilisateur ne sera pas utilisé de manière interactive, il est donc verrouillé.

Après avoir décompressé les sources, vous pouver procéder à l'installation habituelle. Par commodité, on indiquera l'option prévue pour placer les fichiers de configuration dans le répertoire /etc :

./configure --sysconfdir=/etc
make
make install

Remarque issue du wiki du projet, dans le cas d'une mise à jour il faudra exécuter la commande make uninstall depuis le répertoire de la version précédente avant d'installer la plus récente (et s'assurer que le logiciel ne soit pas actif à ce moment là).

Afin de préparer notre configuration, il restera à créer les répertoires et fichiers avec les autorisations ad-hoc :

mkdir /var/log/clamav
touch /var/log/clamav/freshclam.log /var/log/clamav/clamd.log
chmod 600 /var/log/clamav/freshclam.log /var/log/clamav/clamd.log
chown -R clamav /var/log/clamav

ClamAV fourni deux outils principaux, auquels correspondent chacun un fichier de configuration. Pour les mises à jour de signatures, il s'agit du fichier freshclam.conf. Pour l'analyse de fichiers, le daemon clamd se réfère au fichier clamd.conf.

Configuration de freshclam

Le premier outil à paramétrer est freshclam. On commencera par supprimer ou mettre en commentaire la directive Example en tête de fichier. On indiquera le fichier journal avec la directive UpdateLogFile /var/log/clamav/freshclam.log complété par la directive LogTime yes pour obtenir l'horodatage. Enfin, la directive la plus importante est celle indiquant le serveur source pour les mises à jour. Par défaut, il s'agit de la machine database.clamav.net mais au vu du nombre d'utilisateurs du logiciel, plusieurs serveurs répartis géographiquement sont accessibles. Il est donc nécessaire d'utiliser la directive DatabaseMirror avec le nom du serveur selon votre pays : db.fr.clamav.net pour la France, db.be.clamav.net pour la Belgique, db.us.clamav.net pour les États-Unis, etc (sachant qu'à chaque nom répondent plusieurs adresses IP).

Une fois ces opérations effectuées, lancez une mise à jour avec la commande freshclam et suivez son déroulement dans le fichier journal.

Mises à jour périodiques

Il s'agit d'une tâche simple, freshclam doit être exécuté de manière régulière pour bénéficier des signatures les plus récentes. Pour cela la crontab du compte clamav sera l'outil de choix, en y ajoutant la ligne suivante :

12 6 * * * /usr/local/bin/freshclam --quiet

Ce qui lancera la mise à jour tous les jours à 6 heures et 12 minutes. Il est recommandé de ne pas spécifier un nombre de minutes multiple de dix, pour ne pas surcharger les serveurs.

Configuration de clamd

Cette partie est optionelle, il est tout à fait possible d'analyser n'importe quel fichier avec la commande clamscan. L'inconvénient est qu'à chaque lancement de la commande c'est toute la base de signatures qui est chargée, ce qui n'est pas génant pour une utilisation ponctuelle mais peut être un point bloquant pour scruter des fichiers de manière continue. Pour cela on utilisera donc la commande clamdscan, reposant sur le daemon clamd, qui maintient les signatures à disposition.

La configuration de fait de façon suivante : supprimer ou mettre en commentaire la directive Example en tête de fichier, indiquer l'emplacement du fichier journal avec la directive LogFile /var/log/clamav/clamd.log et y appliquer l'horodatage avec LogTime yes. Le fichier enregistrant le PID du processus peut aussi être précisé : PidFile /var/run/clamd.pid. Éventuellement, préciser aussi quel répertoire temporaire utiliser : TemporaryDirectory /tmp. Rien de tout cela ne diffère d'un daemon courant.

Clamd est accessible soit via TCP/IP sur le port 3310 (mais cela est rarement mis en œuvre) soit via une socket. Il faut pour cela définir quelques options : LocalSocket /var/run/clamd.socket, LocalSocketGroup clamscan, LocalSocketMode 664. Voilà l'explication concernant le second groupe crée lors de la première étape ; par défaut la socket est accessible à tout utilisateur en lecture et écriture, ce qui permet bien sûr d'analyser des fichiers mais également d'envoyer diverses commandes à clamd, entre autre pour l'arrêter. Afin d'éviter cela on limitera les droits au groupe clamscan, auquel devra appartenir les utilisateurs voulus. Cela ne résoud qu'une partie du problème (une personne malveillante disposant des droits pourra toujours lancer n'importe quelle commande) mais évitera que ces droits soit étendus pour tout le système.

Restera à inclure la commande /usr/local/sbin/clamd en fin du fichier /etc/rc.d/rc.local pour que le daemon soit lancé au démarrage du système. Un script plus affiné est en préparation.

publié le 29 mars 2012, mis à jour le 9 septembre 2013