ClamAV : antivirus pour serveurs Linux

ClamAV : antivirus pour serveurs Linux

Installez ClamAV pour scanner uploads, partages SMB, pièces jointes mail. Antivirus open-source maintenu par Cisco, signatures à jour quotidiennement, plus de 9 millions de signatures.

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

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres