ClamAV (Français)

État de la traduction:
Cet article est la version francophone de
ClamAV
. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Clam AntiVirus
est un kit d'outils antivirus open source (GPL) pour UNIX.  Il fournit un certain nombre d'utilitaires, notamment un daemon multithread flexible et évolutif, un scanner en ligne de commande et un outil avancé de mise à jour automatique des bases de données. Comme ClamAV est principalement utilisé sur les serveurs de fichiers et de courrier électronique pour les ordinateurs de bureau Windows, il détecte principalement les virus et les logiciels malveillants Windows grâce à ses signatures intégrées.
Installation
Installez
le paquet
clamav
.
Mise à jour de la base de données
Mettez à jour les définitions de virus avec :
# freshclam
Si vous êtes derrière un proxy, éditez
/etc/clamav/freshclam.conf
et mettez à jour HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername et HTTPProxyPassword.
Les fichiers de la base de données sont enregistrés dans :
/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
/var/lib/clamav/bytecode.cvd
Démarrez
et
activez
clamav-freshclam.service
pour que les définitions de virus restent récentes.
Démarrage du daemon
Note
Vous devrez exécuter
freshclam
avant de démarrer le service pour la première fois ou vous rencontrerez des problèmes/erreurs qui empêcheront ClamAV de démarrer correctement.
Le daemon n'est pas nécessaire si vous souhaitez uniquement effectuer des analyses autonomes. Consultez
#Scanner les virus
ci-dessous.
Le service s'appelle
clamav-daemon.service
.
Démarrez
et
activez
son exécution au démarrage.
Tester le logiciel
Afin de vous assurer que ClamAV et les définitions sont correctement installés, analysez le
fichier de test EICAR
(une signature inoffensive sans code de virus) avec
clamscan
.
$ curl
https://secure.eicar.org/eicar.com.txt
| clamscan -
La sortie
doit
inclure :
stdin : Win.Test.EICAR_HDB-1 FOUND
Sinon, lisez la partie Dépannage ou demandez de l'aide sur le site
Arch Forums
.
Ajouter d'autres dépôts de bases de données/signatures
ClamAV peut utiliser des bases de données/signatures provenant d'autres dépôts ou de fournisseurs de sécurité.
Pour ajouter les plus importants en une seule étape, installez soit
clamav-unofficial-sigs
AUR
. (consultez
description GitHub
) ou
python-fangfrisch
AUR
. (consultez
documentation en ligne
). Les deux ajouteront des signatures/bases de données provenant de fournisseurs populaires, par exemple MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc.
Note
Vous devez toujours avoir le
clamav-freshclam.service
démarré
pour avoir les mises à jour officielles des signatures des miroirs ClamAV.
Option #1 : Configurer Fangfrisch
Fangfrisch
a été conçu comme un remplacement plus sûr, plus flexible et plus pratique de clamav-unofficial-sigs, et nécessite
très peu de configuration
(
/etc/fangfrisch/fangfrisch.conf
).
Plus important encore, Fangfrisch n'a jamais besoin d'être exécuté avec les droits root, contrairement à clamav-unofficial-sigs.
Créez la structure de la base de données en exécutant :
# sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb
Activez
fangfrisch.timer
.
Option #2 : Configurer clamav-unofficial-sigs
Activez
clamav-unofficial-sigs.timer
.
Cela mettra régulièrement à jour les signatures non officielles en fonction des fichiers de configuration du répertoire
/etc/clamav-unofficial-sigs
.
Pour mettre à jour les signatures manuellement, exécutez la commande suivante :
# clamav-unofficial-sigs.sh
Pour changer les paramètres par défaut, consultez et modifiez
/etc/clamav-unofficial-sigs/user.conf
.
Base de données MalwarePatrol
Si vous souhaitez utiliser la base de données MalwarePatrol, créez un compte à l'adresse
https://www.malwarepatrol.net/free-guard-upgrade-option
[
dead link
2023-07-30—HTTP 404]
.
Dans
/etc/clamav-unofficial-sigs/user.conf
, modifiez les éléments suivants pour activer cette fonctionnalité :
malwarepatrol_receipt_code="YOUR-RECEIPT-NUMBER" # entrez votre numéro de reçu ici
malwarepatrol_product_code="8" # Utilisez 8 si vous avez un compte gratuit ou 15 si vous êtes un client Premium.
malwarepatrol_list="clamav_basic" # clamav_basic ou clamav_ext
malwarepatrol_free="yes" # Définir à oui si vous avez un compte gratuit ou non si vous êtes un client Premium.
Source :
https://www.malwarepatrol.net/clamav-configuration-guide/
Scanner les virus
Il existe deux options pour l'analyse à la demande :
utilisation de l'analyseur autonome
clamscan
peut être utilisé pour analyser certains fichiers, répertoires personnels ou un système entier :
$ clamscan monfichier
$ clamscan --recursive --infected /home
# clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /
Si vous souhaitez que
clamscan
supprime le fichier infecté, ajoutez à la commande l'option
--remove
, ou vous pouvez utiliser
--move=/dir
pour les mettre en quarantaine.
Vous pouvez également souhaiter que
clamscan
analyse des fichiers plus volumineux. Dans ce cas, ajoutez les options
--max-filesize=4000M
et
--max-scansize=4000M
à la commande. 4000M' est la plus grande valeur possible, et peut être réduite si nécessaire.
L'utilisation de l'option
-l /path/to/file
imprimera les journaux de
clamscan
dans un fichier texte pour localiser les infections signalées.
utilisation du daemon
clamdscan
est similaire à la commande ci-dessus mais utilise le daemon, qui doit être en cours d'exécution pour que la commande fonctionne. La plupart des options sont ignorées puisque le daemon lit les paramètres spécifiés dans
/etc/clamav/clamd.conf
.
Utilisation de milter
Milter analysera votre serveur mail pour détecter les e-mails contenant des virus. Adaptez
/etc/clamav/clamav-milter.conf
à vos besoins. Par exemple :
/etc/clamav/clamav-milter.conf
MilterSocket /tmp/clamav-milter.socket
MilterSocketMode 660
FixStaleSocket yes
User clamav
MilterSocketGroup clamav
PidFile /run/clamav/clamav-milter.pid
TemporaryDirectory /tmp
ClamdSocket unix:/run/clamav/clamd.ctl
LogSyslog yes
LogInfected Basic
Créer
/etc/systemd/system/clamav-milter.service
:
/etc/systemd/system/clamav-milter.service
[Unit]
Description='ClamAV Milter'
After=clamav-daemon.service

[Service]
Type=forking
ExecStart=/usr/bin/clamav-milter --config-file /etc/clamav/clamav-milter.conf
Restart=Always

[Install]
WantedBy=multi-user.target
Vous pourriez avoir envie d'ajuster la ligne
Restart=
pour vos besoins. Cette ligne est nécessaire si vous utilisez des outils qui tuent le service clamav-milter, tels que
logrotate
.
Activez
et
démarrez
clamav-milter.service
.
Pour
Postfix
, ajoutez les lignes suivantes à
/etc/postfix/main.cf
:
etc/postfix/main.cf
smtpd_milters = unix:/tmp/clamav-milter.socket
milter_default_action = tempfail
Vérifiez
journalctl
si la permission d'accéder à
clamav-milter.socket
pour postfix est définie en conséquence, si non, ajoutez l'utilisateur postfix au groupe
clamav
.
OnAccessScan
(Source originale :
https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html
)
L'analyse à l'accès analyse le fichier pendant sa lecture, son écriture ou son exécution.
Attention
A ce jour (novembre 2021), l'analyse à l'accès dans ClamAV est encore immature, vous pouvez consulter des plantages inexpliqués de
clamd
, et les processus conteneurisés ne sont pas protégés. Par conséquent, on peut se demander s'il s'agit d'une amélioration de la sécurité ou non. Ne l'activez pas à moins que des réglementations, des contrats ou votre propre curiosité ne vous y obligent.
L'analyse à l'accès nécessite que le noyau soit compilé avec le module de noyau
fanotify
(noyau >= 3.8), ce qui est vrai pour les paquets officiels du noyau d'Arch Linux. Vérifiez si
fanotify
a été activé avant d'activer l'analyse sur accès.
$ zgrep FANOTIFY /proc/config.gz
Tout d'abord, modifiez le fichier de configuration
/etc/clamav/clamd.conf
en ajoutant ce qui suit à la fin du fichier (vous pouvez également modifier les options individuelles).
Attention
Veuillez tenir compte de l'avertissement suivant concernant la sécurité du port clamd si vous modifiez d'autres parties du fichier. Utilisez généralement un socket unix local mais notez que ce port n'est ni authentifié ni protégé. Consultez
https://docs.clamav.net/manual/Usage/Scanning.html#clamd-v0101
pour plus de détails dans la section Daemon puis ClamD.
/etc/clamav/clamd.conf
# Set the mount point where to recursively perform the scan,
# this could be every path or multiple path (one line for path)
OnAccessMountPath /
OnAccessExcludePath /proc
OnAccessExcludePath /run
OnAccessExcludePath /sys

# Alternatively, add some directories instead of mount points
# OnAccessIncludePath /home

# Prevention doesn't work with OnAccessMountPath.
# It works with OnAccessIncludePath, as long as /usr and /etc are not included.
# Including /var while activating prevention is also not recommended, because
# this would slow down package installation by a factor of 1000.
OnAccessPrevention false

# Perform scans on newly created, moved, or renamed files
OnAccessExtraScanning true

# Exclude the UID of the scanner itself from checking, to prevent loops
OnAccessExcludeUname clamav

# Optionally, also exclude root-owned processes
# OnAccessExcludeRootUID true

# Specify an action to perform when clamav detects a malicious file
# it is possible to specify an inline command too
VirusEvent /etc/clamav/virus-event.bash

# WARNING: for security reasons, clamd should NEVER run as root.
# Previous instructions in this wiki included this line, remove it:
# User root    # REMOVE THIS
# Add this instead:
User clamav
Ensuite, autorisez l'utilisateur
clamav
à exécuter
notify-send
en tant qu'utilisateur avec des variables d'environnement personnalisées via
sudo
:
/etc/sudoers.d/clamav
clamav ALL = (ALL) NOPASSWD : SETENV : /usr/bin/notify-send
Ensuite, créez le fichier
/etc/clamav/virus-event.bash
, rendez-le
exécutable
et ajoutez ce qui suit :
/etc/clamav/virus-event.bash
#!/bin/bash
PATH=/usr/bin
ALERT="Signature détectée par clamav : $CLAM_VIRUSEVENT_VIRUSNAME dans $CLAM_VIRUSEVENT_FILENAME"

# Envoyer une alerte à tous les utilisateurs graphiques.
for ADDRESS in /run/user/* ; do
    USERID=${ADDRESS#/run/user/}
    /usr/bin/sudo -u "#$USERID" DBUS_SESSION_BUS_ADDRESS="unix:path=$ADDRESS/bus" PATH=${PATH} \
        /usr/bin/notify-send -i dialog-warning "Virus trouvé !" "$ALERT"
done
Cela vous permet de modifier/spécifier le message lorsqu'un virus a été détecté par le service d'analyse à l'accès de clamd.
Redémarrez
clamav-daemon.service
.
Par défaut,
clamonacc
transmet à
clamav
les noms des fichiers qui viennent d'être accédés pour analyse. C'est un problème, car les fichiers inaccessibles à l'utilisateur de
clamav
ne peuvent pas être analysés de cette manière. À la place, il est possible de demander à
clamonacc
(qui s'exécute toujours en tant que
root
) d'utiliser le passage par les descripteurs de fichiers.
Éditez
clamav-clamonacc.service
avec le contenu suivant :
[Service]
ExecStart=
ExecStart=/usr/sbin/clamonacc -F
--fdpass
--log=/var/log/clamav/clamonacc.log
Enfin,
activez
et
démarrez
clamav-clamonacc.service
.
Si vous obtenez des refus de
AppArmor
concernant
clamd
, définissez le profil en mode plainte uniquement :
# aa-complain clamd
Dépannage
Note
Assurez-vous que l'utilisateur à partir duquel vous exécutez
clamscan
a les droits de lecture pour les fichiers de la base de données (
/var/lib/clamav/*.cvd
)
Erreur : Clamd n'a PAS été notifié
Si vous obtenez les messages suivants après avoir exécuté freshclam :
WARNING: Clamd was NOT notified: Cannot connect to clamd through 
/var/lib/clamav/clamd.sock connect(): No such file or directory
Ajoutez un fichier sock pour ClamAV :
Attention
Consultez l'avertissement dans
#OnAccessScan
sur la sécurité du port clamd:
# touch /run/clamav/clamd.ctl
# chown clamav:clamav /run/clamav/clamd.ctl
Ensuite, éditez
/etc/clamav/clamd.conf
- décommentez cette ligne :
LocalSocket /run/clamav/clamd.ctl
Sauvegardez le fichier et
redémarrez
clamav-daemon.service
.
Erreur : Aucun fichier de base de données pris en charge n'a été trouvé
Si vous obtenez l'erreur suivante au démarrage du daemon :
LibClamAV Error: cli_loaddb(): No supported database files found
in /var/lib/clamav ERROR: Not supported data format
Cela se produit à cause d'un désaccord entre le paramètre
/etc/clamav/freshclam.conf
DatabaseDirectory
et le paramètre
/etc/clamav/clamd.conf
DatabaseDirectory
.
/etc/clamav/freshclam.conf
pointe vers
/var/lib/clamav
, mais
/etc/clamav/clamd.conf
(répertoire par défaut) pointe vers
/usr/share/clamav
, ou un autre répertoire. Modifiez
/etc/clamav/clamd.conf
et remplacez par le même
DatabaseDirectory
que dans
/etc/clamav/freshclam.conf
. Après cela,
clamav
démarrera avec succès.
Erreur : Impossible de créer un répertoire temporaire
Si vous obtenez l'erreur suivante, accompagnée d'un 'HINT' (indice) contenant un numéro UID et un numéro GID :
# can't create temporary directory (Impossible de créer un répertoire temporaire)
Corrigez les permissions comme suit :
# chown UID:GID /var/lib/clamav && chmod 755 /var/lib/clamav
Trucs et astuces
Exécuter en plusieurs threads
Utilisation de clamscan
Lors de l'analyse d'un fichier ou d'un répertoire à partir de la ligne de commande en utilisant
clamscan
, un seul thread CPU est utilisé. Cela peut convenir dans les cas où le temps n'est pas critique ou si vous ne voulez pas que l'ordinateur devienne lent. S'il est nécessaire d'analyser rapidement un grand répertoire ou un lecteur USB, vous pouvez vouloir utiliser tous les processeurs disponibles pour accélérer le processus.
clamscan
est conçu pour être monotâche, donc
xargs
peut être utilisé pour exécuter l'analyse en parallèle :
$ find /home/archie -type f -print0 | xargs -0 -P $(nproc) clamscan
Dans cet exemple, le paramètre
-P
de
xargs
exécute
clamscan
dans autant de processus qu'il y a de CPU (signalés par
nproc
) en même temps. Les options
--max-lines
et
--max-args
permettent un contrôle encore plus fin de la répartition de la charge de travail entre les threads.
Utilisation de clamdscan
Si le daemon
clamd
fonctionne déjà,
clamdscan
peut être utilisé à la place (consultez
#Démarrage du daemon
) :
$ clamdscan --multiscan --fdpass /home/archie
Ici, le paramètre
--multiscan
permet à
clamd
d'analyser le contenu du répertoire en parallèle en utilisant les threads disponibles. Le paramètre
--fdpass
est nécessaire pour transmettre les permissions du descripteur de fichier à
clamd
car le daemon est exécuté sous l'utilisateur et le groupe
clamav
.
Le nombre de threads disponibles pour
clamdscan
est déterminé dans
/etc/clamav/clamd.conf
via le paramètre
MaxThreads
(consultez
clamd.conf(5)
). Même si vous pouvez constater que le nombre de
MaxThreads
spécifié est supérieur à un (la valeur par défaut actuelle est 10), lorsque vous lancez l'analyse en utilisant
clamdscan
à partir de la ligne de commande et que vous ne spécifiez pas l'option
--multiscan
, un seul thread CPU réel sera utilisé pour l'analyse.
Voir aussi
Wikipedia:ClamAV