Outils pour utilisateurs

Outils du site


clamav

Antivirus à la demande pour Linux

Pourquoi un antivirus ?

Linux est très peu sensible aux virus, mais au delà de ça, il peut être utile de scanner des fichiers pour éviter d'être porteur sain de virus (par exemple si vous échangez des fichiers avec des utilisateurs de Windows).
Si vous avez un doute et que vous voulez scanner un unique fichier, la meilleure solution reste VirusTotal qui va scanner le fichier avec tous les antivirus du marché. Mais si vous avez besoin de scanner un ensemble de répertoires, un antivirus localement installé sur votre machine est une meilleure solution. C'est la solution présentée ci-dessous.

Attention: VirusTotal (qui appartient à Google) conserve une copie des fichiers qui lui sont envoyés. Ce n'est peut-être pas une bonne idée de lui envoyer des fichiers privés.

Cette page explique comment installer l'antivirus libre et gratuit ClamAV et comment l'intégrer au gestionnaire de fichier afin de scanner à la demande n'importe quel fichier ou répertoire en deux clics.

Choix de l'installation

L'antivirus peut s'appeller depuis la ligne de commande avec clamscan ou à travers son interface graphique clamtk. Nous choisissons ici de nous passer de ClamTK: Nous allons utiliser clamscan et l'intégrer au gestionnaire de fichiers, et afficher les résultats dans un simple terminal.

Petit soucis avec clamscan: Quand on le lance, il met du temps à démarrer avant de scanner (il lui faut du temps pour lire les fichiers de signatures). Alors nous allons utiliser le démon ClamAV, associé à son scanner clamdscan.

Donc au lieu de lancer clamscan (qui va lire les signatures au moment de scanner), on laisser tourner un service (clamav-daemon) et on le sollicite pour scanner des fichiers avec clamdscan.

Installation

  • Installons le démon clamav et clamdscan:
    sudo apt install clamav-daemon clamdscan
  • Configuration (personnelle): Dans /etc/clamav/clamd.conf, je change les valeurs afin de lui laisser le temps de scanner les gros fichiers:
    MaxEmbeddedPE 4000M
    MaxScanTime 1200000  # Au lieu d'arrêter de scanner au bout de 2 minutes, on lui laisse 20 minutes
    MaxScanSize 4000M    # On l'autorise à scanner des fichiers de 4 Go.
    MaxFileSize 4000M
    MaxDirectoryRecursion 255 # 15 par défaut.
    • J'aurais aimé activer l'option DetectPUA true, mais ClamAV fait beaucoup trop de faux positifs avec cette option.
  • Personnellement, pour éviter que le scanner me monopolise le CPU, dans le fichier /lib/systemd/system/clamav-daemon.service, dans la section [Service], j'ajoute l'option Nice=19 (priorité CPU minimale).
  • Et redémarrer le service pour la prise en compte des paramètres:
    sudo service clamav-daemon restart

Intégration au navigateur de fichiers

Dans notre exemple nous prendrons Caja, mais le fonctionnement est similaire avec les autres (Nautilus, etc.)

  • Créer le fichier ~/.config/caja/scripts/Scanner avec ClamAV contenant:
    Scanner avec ClamAV
    #!/bin/bash
    IFS=$'\n'
     
    for FILENAME in $CAJA_SCRIPT_SELECTED_FILE_PATHS; do
      if [ -d "$FILENAME" ]; then
        cmd="echo \"Scan du répertoire: $FILENAME\";/usr/bin/clamdscan --fdpass -m \"$FILENAME\" ; read"
        xterm -geometry 300x50 -e /bin/bash -l -c "$cmd"
      fi
      if [ -f "$FILENAME" ]; then
        cmd="echo \"Scan du fichier: $FILENAME\";/usr/bin/clamdscan --fdpass -m \"$FILENAME\" ; read"
        xterm -geometry 300x50 -e /bin/bash -l -c "$cmd"
      fi
    done
  • Explication des options utilisées:
    • --fdpass : Pour scanner avec vos droits utilisateurs (sinon le service clamav n'a pas le droit d'accéder à vos fichiers).
    • -m pour scanner plus vite en utilisant plusieurs coeurs du CPU.
  • Pensez à installer xterm s'il n'est pas installé.
  • Rendez le fichier exécutable (chmod +x ~/.config/caja/scripts/Scanner_avec_ClamAV)

Vous pouvez maintenant scanner n'importe quel fichier ou répertoire en faisant un clic droit > Scripts > Scanner avec ClamAV. Laissez lui le temps de scanner. Il ne vous affichera que les fichiers pour lesquels il a doute. Dans tous les cas, il vous affichera un rapport à la fin du scan de ce genre:

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.049 sec (0 m 0 s)
Start Date: 2021:05:10 21:05:29
End Date:   2021:05:10 21:05:32

Notez qu'il y a toujours le risque d'avoir des faux positifs, c'est à dire des fichiers que l'antivirus trouve douteux mais qui ne le sont pas forcément. Dans ce cas, une soumission à VirusTotal peut être une bonne idée.

FIXME mettre captures d'écran (menu clic droit, fenêtre de scan).

Notez que toute détection sera loguée dans le fichier /var/log/clamav/clamav.log

Vérifier que ça fonctionne

  • Téléchargez ce fichier: https://secure.eicar.org/eicar_com.zip
    • Note: Ce n'est pas un virus. C'est un fichier innofensif, mais tous les éditeurs d'antivirus se sont accordés pour le détecter. Cela permet de vérifier que les antivirus sont actifs.
  • Une fois téléchargé, faites un clic-droit > Scripts > Scanner avec ClamAV.
  • Vous devriez voir la détection: /home/…/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND

Mise à jour des signatures

La mise à jour des signatures est assurée par le service freshclam. Par défaut, il va chercher les mises à jour 24 fois par jour (les signatures sont généralement des fichiers de petite taille, ce n'est donc pas pénalisant). Si vous voulez changer la fréquence, modifiez le paramètre Checks 24 dans le fichier /etc/clamav/freshclam.conf (pensez à redémarrer le service (sudo service clamav-freshclam restart). Personnellement, je trouve qu'aller les chercher toutes les 6 heures est suffisant, j'ai donc mis Checks 4.

Pour vérifier la version de vos signatures, faites:

$ clamdscan -V
ClamAV 0.103.2/26166/Mon May 10 13:05:01 2021
  • On voit qu'il s'agit de la version 0.103.2 de ClamAV.
  • Les signatures sont en version 26166, datées du 10 mai 2021 à 13h05.

S'il y a un soucis avec les mises à jour, pensez à regarder les logs dans /var/log/clamav/freshclam.log.

Faux positifs

Un faux positif est fichier détecté comme infecté alors qu'il ne l'est pas. Malheureusement ClamAV a un certain nombre d'alertes de ce genre.

Signatures complémentaires

Après quelques tests, je déconseille ces signatures complémentaires car elles font beaucoup trop de faux positifs.

Il est possible d'ajouter à ClamAV de multiples sources de signatures afin d'augmenter encore son taux de détection avec https://github.com/extremeshok/clamav-unofficial-sigs

Par exemple, au 10 mai 2021, cela permet de passer de 8 528 087 signatures (signatures standard ClamAV) à 8 711 750, soit 183 663 signatures supplémentaires.

  • Voici la procédure d'installation (pour Ubuntu):
    sudo mkdir -p /usr/local/sbin/
    sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/clamav-unofficial-sigs.sh -O /usr/local/sbin/clamav-unofficial-sigs.sh && sudo chmod 755 /usr/local/sbin/clamav-unofficial-sigs.sh
    sudo mkdir -p /etc/clamav-unofficial-sigs/
    sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/master.conf -O /etc/clamav-unofficial-sigs/master.conf
    sudo wget https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/user.conf -O /etc/clamav-unofficial-sigs/user.conf
    sudo wget "https://raw.githubusercontent.com/extremeshok/clamav-unofficial-sigs/master/config/os/os.ubuntu.conf" -O /etc/clamav-unofficial-sigs/os.conf
  • Première mise à jour:
    sudo /usr/local/sbin/clamav-unofficial-sigs.sh --force
  • Pour controller le bon chargement des fichiers de signatures:
    clamscan --debug 2>&1 /dev/null | grep "loaded"
  • Mises à jour suivantes:
    sudo /usr/local/sbin/clamav-unofficial-sigs.sh --update
    • Pas besoin de le faire manuellement si vous installez la tâche cron (ci-dessous).
  • Installer la tâche cron (/etc/cron.d/clamav-unofficial-sigs):
    sudo /usr/local/sbin/clamav-unofficial-sigs.sh --install-cron
  • Installer man:
    sudo /usr/local/sbin/clamav-unofficial-sigs.sh --install-man
    • puis: man clamav-unofficial-sigs
  • Installer le logrotate (/etc/logrotate.d/clamav-unofficial-sigs):
    sudo /usr/local/sbin/clamav-unofficial-sigs.sh --install-logrotate

Notez que certaines sources de signatures nécessitent, pour être activées, de s'enregistrer sur les différents sites (voir la page du projet pour plus d'information). Ces sources sont optionnelles.

Astuce: voir en temps réel ce que ClamScan est en train de scanner:

watch "lsof -a -d 0-999 -c clamscan | grep REG"
clamav.txt · Dernière modification : 2023/10/19 12:44 de sebsauvage