ClamAV (Français)

From ArchWiki
É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-sigsAUR. (consultez description GitHub) ou python-fangfrischAUR. (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 ⓘ].

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 sendmail 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

[Install]
WantedBy=multi-user.target

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