ClamAV (Français)
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
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
- 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.
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.
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.
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.
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).
/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
et ajoutez ce qui suit. 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 :
/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
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
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 :
# 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.