Sécurité Linux - Installer et configurer ClamAV
Date de publication : January 20, 2025
Temps de lecture estimé : 5 minutes
Auteur : Axel Agnan
L’objectif de cet article est d’expliquer comment installer et configurer l’antivirus ClamAV sur une machine.
ClamAV est l’un des rares antivirus présent dans le monde Linux, mon usage est surtout pour éviter de propager des malwares destinés à Windows depuis une machine Linux.
Je m’en sers notamment dans le milieu professionnel, exploitant régulièrement des architectures mixtes alliant Windows et Linux, une protection sur toutes les machines est donc nécessaire afin d’éviter toute propagation.
ClamAV, en plus de se baser sur une détection à base de signature numérique, propose une détection heuristique.
Installer ClamAV
Dans un premier temps, il faut installer le package clamav-daemon sur votre machine (Le nom du package diffère en fonction de la distribution choisie)
# Pour Arch :
pacman -S clamav
# Pour Alpine :
apk add clamav-daemon
# Pour Debian :
apt-get install clamav-daemon
Utilisation de ClamAV
Gestion du service
Une fois le daemon installé, il faut l’activer et le démarrer
Pour les systèmes basés systemd :
# Activation du service :
systemctl enable clamav-daemon
# Démarrage du service :
Systemctl start clamav-daemon
Pour les systèmes basés sur openRC (Alpine par exemple) :
# Activation du service :
rc-update add clamd
# Démarrage du service :
service clamd start
Au démarrage du service, ClamAV va procéder à une mise à jour de sa banque de données.
Configurer ClamAV
Pour configurer ClamAV, vous devez aller modifier le fichier /etc/clamav/clamd.conf
Voici un exemple d’un fichier de configuration minimal :
# Paramétrage des logs
## Emplacement des logs
LogFile /var/log/clamav/clamd.log
## Ajouter un timestamp à nos logs
LogTime yes
## Ajouter plus de détail aux logs
LogVerbose yes
# Modification des limites
## Taille maximale des fichiers à analyser
MaxScanSize 100M
## Taille maximale des fichiers à scanner dans les archives
MaxFileSize 25M
## Niveau de récursion dans les archives
MaxRecursion 10
## Nombre maximum de fichiers à scanner dans les archives
MaxFiles 10000
# Emplacements
## Emplacement du fichier Pid
PidFile /run/clamav/clamd.pid
## Emplacement du dossier tmp
TemporaryDirectory /tmp
## Emplacement de la base de données
DatabaseDirectory /var/lib/clamav
# Configuration du socket
## Emplacement du socket local
LocalSocket /run/clamav/clamd.ctl
LocalSocket /run/clamav/clamd.ctl
# Options supplémentaires de détection de malwares
## Activer la détection d'exécutables cassés ou corrompus
DetectBrokenExecutables yes
## Active la détection heuristique
HeuristicScanPrecedence yes
## Définir si ClamAV doit utiliser une détection basé sur le bytecode (Peut consommer énormément de ressources système)
Bytecode yes
Freshclam
Freshclam est l’outil utilisé pour télécharger et mettre à jour la base virale de ClamAV.
Mettre à jour manuellement la base virale
Pour mettre à jour manuellement la base virale, vous pouvez utiliser la commande freshclam
Sur mon système Arch, j’ai obtenu l’erreur suivante :
$> freshclam
ERROR: Can t create freshclam.dat in /var/lib/clamav
Hint: The database directory must be writable for UID 1000 or GID 1000
ERROR: Failed to save freshclam.dat!
WARNING: Failed to create a new freshclam.dat!
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!
Cette erreur signifie que l’utilisateur actuel, d’UID 1000 n’a pas accès au dossier /var/lib/clamav
Pour y remédier, changez le propriétaire du dossier par votre utilisateur tout en conservant le groupe clamav :
chown $USER:clamav /var/lib/clamav
Configurer Freshclam
Le fichier de configuration de freshclam se trouve à l’emplacement suivant : /etc/clamav/freshclam.conf
Voici un exemple de configuration minimale de freshclam :
# Paramétrage des logs
## Emplacement du fichier de logs
UpdateLogFile /var/log/clamav/freshclam.log
## Ajouter un timestamp dans les logs
LogTime yes
## Créer un nouveau fichier log une fois la limite de temps ou de taille est atteinte
LogRotate true
## Taille maximale du fichier de log
LogFileMaxSize 100M
## Stocker ou non les logs dans le system pool (false: stocker dans un fichier | true: stocker dans le système pool)
LogSyslog false
## Produire des logs plus détaillées
LogVerbose true
# Paramétrage des mises à jour
## Cycle de vérification des mises à jour (2 représente deux fois par jour, toutes les 12 heures donc)
Checks 2
## Activer les mises à jour en arrière plan sans interrompre les services
Foreground yes
## Configuration du mirroit (Possibilité d'héberger le sien : https://docs.clamav.net/appendix/CvdPrivateMirror.html)
DatabaseMirror database.clamav.net
# Système de notifications interne
## Notifier clamd des process freshclam en cours,
## mettre cette valeur sur yes indique que freshclam préviendra le daemon clamd qu'une
## mise à jour est toujours en cours ou alors terminée,
## cela permet d'éviter les conflits entre les deux programmes
NotifyClamd yes
# Paramétrage de la base de données
## Utilisateur propriétaire de la base de données
DatabaseOwner clamav
## Compression de la base de données
CompressLocalDatabase no
## Emplacement de la base de données
DatabaseDirectory /var/lib/clamav
## Tester l'intégrité de la base de données
TestDatabases yes
Tester la détection
Le meilleur moyen de tester si clamAV fonctionne correctement sur sa machine est de télécharger un fichier de test EICAR et de le scanner.
Information concernant EICAR : Lien Wikipedia
$> curl https://secure.eicar.org/eicar.com.txt | clamscan -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 68 100 68 0 0 522 0 --:--:-- --:--:-- --:--:-- 523 ding: 0s [ ] 0/8.72M sigs
Loading: 9s, ETA: 0s [========================>] 8.70M/8.70M sigs
Compiling: 2s, ETA: 0s [========================>] 41/41 tasks
stdin: Win.Test.EICAR_HDB-1 FOUND
----------- SCAN SUMMARY -----------
Known viruses: 8704051
Engine version: 1.4.1
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 11.754 sec (0 m 11 s)
Start Date: 2025:01:20 12:40:17
End Date: 2025:01:20 12:40:29
Options de Scan
# Scanner un fichier unique
clamscan monfichier
# Scanner le contenu d'un dossier et n'afficher que les fichiers infectés avec le paramètre --infected
clamscan --recursive --infected /home
# Scanner le contenu d'un dossier et supprimer les malwares détectés avec le paramètre --remove
clamscan --recursive --remove --infected /home
# Scanner le contenu d'un dossier et déplacer dans le dossier de quarantaine /dir le malware détecté
clamscan --recursive --move=/dir --infected /home
Créer une tâche Cron pour analyse journalière
Ici, je vais créer une tâche cron journalière afin d’analyser mon dossier /home.
Créer le fichier /etc/cron.daily/clamav avec le contenu suivant :
#!/bin/sh
# Stopping service
systemctl stop clamav-freshclam
# Upgrading database
freshclam
# Restart service
systemctl start clamav-freshclam
# Start daily scan job
clamscan --infected --remove --recursive /home
Modifier les droits sur le fichier Cron :
chmod 755 /etc/cron.daily/clamav
Tester sa configuration :
sudo /etc/cron.daily/clamav
cat /var/log/clamav/clamd.log