Introduction
Linux est moins exposé aux malwares que Windows, mais reste un vecteur :
- Serveur web qui reçoit des uploads
- Partage Samba / NFS partagé avec des postes Windows
- Serveur mail qui scanne les pièces jointes
- Application SaaS où les clients uploadent des fichiers
ClamAV est la solution open-source de référence : signatures mises à jour quotidiennement par Cisco Talos, scan via CLI ou daemon, intégration native avec Postfix, Dovecot, Samba.
Prérequis
- VPS Linux (Debian / Ubuntu)
- 2 Go RAM minimum (ClamAV charge toute la DB en mémoire)
- Accès root
Étape 1 : Installation
sudo apt update
sudo apt install -y clamav clamav-daemon clamav-freshclam
clamscan --version
Étape 2 : Mise à jour des signatures
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
Le service clamav-freshclam met automatiquement à jour les signatures plusieurs fois par jour.
Étape 3 : Premier scan
# Un fichier
sudo clamscan /tmp/suspect.exe
# Un dossier récursivement
sudo clamscan -r /var/www/uploads
# Ne lister que les infectés
sudo clamscan -r --bell -i /var/www/uploads
# Test EICAR
curl -O https://secure.eicar.org/eicar.com
clamscan eicar.com
# Result: Eicar-Signature FOUND
Étape 4 : Activer le daemon clamd
sudo systemctl enable --now clamav-daemon
sudo systemctl status clamav-daemon
Le premier démarrage charge la DB en RAM (1-2 minutes).
clamdscan /tmp/suspect.exe
100x plus rapide que clamscan car la DB est déjà en RAM.
Étape 5 : Scan automatique des uploads
sudo nano /usr/local/bin/scan-uploads.sh
#!/bin/bash
UPLOAD_DIR="/var/www/uploads"
QUARANTINE="/var/lib/clamav/quarantine"
LOG="/var/log/clamav/scan-uploads.log"
mkdir -p "$QUARANTINE"
clamdscan -r --infected --move="$QUARANTINE" "$UPLOAD_DIR" >> "$LOG" 2>&1
if grep -q "FOUND" "$LOG"; then
echo "Virus detecte" | mail -s "ALERTE virus sur $(hostname)" [email protected]
fi
sudo chmod +x /usr/local/bin/scan-uploads.sh
echo "*/15 * * * * /usr/local/bin/scan-uploads.sh" | sudo crontab -
Avec inotify (temps réel)
sudo apt install -y inotify-tools
#!/bin/bash
inotifywait -m -r -e create,moved_to /var/www/uploads --format "%w%f" |
while read FILE; do
clamdscan --infected --move=/var/lib/clamav/quarantine "$FILE"
done
Étape 6 : Intégration Postfix
sudo apt install -y amavisd-new
amavisd-new s'intercale entre Postfix et la livraison, vérifie chaque mail via ClamAV + SpamAssassin.
Étape 7 : Intégration Samba
sudo apt install -y samba-vfs-modules
/etc/samba/smb.conf :
[partage]
path = /srv/samba/partage
vfs objects = virusfilter
virusfilter:scanner = clamav
virusfilter:socket path = /var/run/clamav/clamd.ctl
virusfilter:infected file action = quarantine
virusfilter:quarantine directory = /srv/quarantine
sudo systemctl restart smbd
Étape 8 : Performance
/etc/clamav/clamd.conf :
MaxThreads 12
MaxQueue 200
MaxFileSize 100M
MaxScanSize 400M
MaxRecursion 16
MaxFiles 10000
sudo systemctl restart clamav-daemon
Étape 9 : Signatures additionnelles
sudo apt install -y clamav-unofficial-sigs
sudo nano /etc/clamav-unofficial-sigs/master.conf
Activez Sanesecurity et autres :
declare -A enabled_dbs=(
[sanesecurity]="yes"
[securiteinfo]="yes"
)
sudo clamav-unofficial-sigs.sh
Ajoute ~2M signatures supplémentaires.
Étape 10 : Mise en quarantaine
clamscan -r --move=/var/quarantine /var/www # déplacer
clamscan -r --remove /var/www # supprimer
⚠️ Toujours un dry-run d'abord pour identifier les faux positifs.
Étape 11 : Liste blanche (faux positifs)
sudo nano /var/lib/clamav/whitelist.fp
<sha256>:fichier-legitime.zip
sha256sum /path/to/file
Dépannage
"ERROR: Can't connect to clamd"
sudo systemctl restart clamav-daemon
Premier démarrage très long
Normal, ClamAV charge ~2 Go en RAM. Patientez 1-2 min.
Update freshclam échoue
sudo freshclam -v
Vérifiez firewall sortant et DNS.
Scan très lent
Utilisez clamdscan (daemon) au lieu de clamscan. Augmentez MaxThreads.
"OOM Killer" — clamd tué
Pas assez de RAM. ClamAV a besoin de ~2 Go.
Commandes utiles
sudo freshclam # update manuelle
clamdscan --fdpass /path # scan via daemon
clamdtop # stats temps réel
clamscan --version # voir DB version
ls -la /var/lib/clamav/quarantine # quarantine
clamscan --include="\.(exe|dll|pdf)$" -r /var/www
clamscan --max-filesize=100M -r /var/www
Conclusion
ClamAV protège efficacement uploads, mails, partages réseau, backups.
Pour aller plus loin :
- Combinez avec Wazuh pour détection multi-couche
- Utilisez maldet (Linux Malware Detect) en complément
- Pour serveurs mail intenses, Rspamd + ClamAV
Ressources
- Site officiel : https://www.clamav.net
- Documentation : https://docs.clamav.net
- Sanesecurity : https://sanesecurity.com
- Source : https://github.com/Cisco-Talos/clamav


















