Table des matières
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.
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'optionNice=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.
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
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
- (source)
- 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"