ClamAV : Installer un antivirus sur un serveur Linux

Installer un antivirus sur un serveur Linux

ClamAV : Utilisation de clamscan en ligne de commande sous Linux

Tout comme il existe des virus (malware) sous Windows, il existe également des virus (malware) sous Linux. Cependant ces derniers sont tellement peu nombreux qu’il n’y a presque aucun intérêt à installer un antivirus sur un serveur Linux.

La vraie faille réside dans l’utilisation des dépôts. Si jamais vous utilisez un dépôt non sûr ou pourquoi pas corrompu, lors de la mise à jour de vos paquets vous pourriez installer des éléments malveillants.

Pour le coup, je ne compte pas m’attarder sur l’utilisation personnelle d’un antivirus sous Linux (si jamais cela vous intéresse, j’ai écrit il y a quelques années un article sur pourquoi n’y a-t-il pas de virus sous Linux ?). Je vais plutôt vous montrer comment j’ai installé un antivirus sur mon serveur Linux pour repérer les virus sous Windows.

ClamAV, un antivirus libre sous Linux (et Windows)

ClamAV est un antivirus open-source fonctionnant sur Linux, Windows, MacOS…  Il permet de détecter les virus dans différents fichiers (PDF, ZIP, DOC(X), mail…), de plusieurs manières :

  • Certificats PE ;
  • Par signature de contenu ;
  • Par signature (bytecode) ;
  • Par signature (metadata) ;
  • Par heuristique ;
  • YARA.

Pour ceux que ça intéresse, vous trouverez en détail les fonctionnalités de détection des malwares ici : https://www.clamav.net/documents/clam-antivirus-user-manual.

J’ai choisi ClamAV car il est open-source, d’autres antivirus propriétaires existent sous Linux. Quasiment toutes les grosses marques d’antivirus sous Windows ont un équivalent sous Linux.

Installation de ClamAV sur un serveur Linux

Vous avez deux possibilités pour installer l’antivirus ClamAV :

  • Passer par les dépôts (actuellement version 0.101.4 sous CentOS);
  • Compiler les sources via la documentation (actuellement version 0.102.1).

Passer par les dépôts entraîne toujours un retard de mise à jour par rapport aux paquets que l’on pourrait installer à la main. Cependant je préfère éviter d’installer des outils de compilation sur mon serveur, ça fait un trou de sécurité en moins.

yum install clamav

Pour mettre à jour la base de données de ClamAV.

# freshclam 
ClamAV update process started at Sun Nov 24 10:42:15 2019
Downloading main.cvd [100%]
main.cvd updated (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Downloading daily.cvd [100%]
daily.cvd updated (version: 25642, sigs: 2006452, f-level: 63, builder: raynman)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 331, sigs: 94, f-level: 63, builder: anvilleg)
Database updated (6572795 signatures) from database.clamav.net (IP: 2606:4700::6810:da54)

La première fois cela peut-être un peu long, surtout pour l’écriture dans la base de données après le téléchargement.

Utilisation de ClamAV en scan régulier

J’ai installé il y a quelques mois OwnCloud sur mon serveur dédié pour pouvoir faire des sauvegardes régulières. J’utilise principalement l’antivirus sous Linux pour scanner les données sauvegardées à la recherche de virus Windows. Je m’explique, nous sommes plusieurs à bénéficier du partage de documents sur OwnCloud. Certains sont sous Windows, aussi je me dis qu’un scan régulier dans le dossier des éléments partagés ne pouvait pas faire de mal.

Voici mon script très simple pour lancer chaque semaine un scan complet de mon système. Voir la documentation de clamscan.

#!/bin/bash
set -e

# @explain this script is run by a cronjob every week
### “At 04:00 on Friday.”
### 0 4 * * 5 /opt/clamscan.sh > /home/alex/clamav.log 2>&1

# @vars defined
MAX_FILE_SIZE=128M # do not check files with size higher
DIRECTORY_TO_SCAN=/home/web/html/owncloud/

# @vars global
CURRENT_DATE=`date +"%Y_%m_%d-%H_%M_%S"`
LOG_DIR="/root/logs/clamav"

# @init
mkdir -vp "${LOG_DIR}"

# @start scan
clamscan --suppress-ok-results --recursive --log="${LOG_DIR}/${CURRENT_DATE}.log" --max-filesize=128M "${DIRECTORY_TO_SCAN}"

Ce script est disponible et mis à jour sur un gist Github : https://gist.github.com/Dinath/62ae79ee3e6ee5ffa1e5c30b841564b0

Résultats d’un scan avec ClamAV

Voici le résultat d’un scan lancé avec clamscan.

# clamscan --log=/root/logs/clamav/test.log --max-filesize=128M /home/nodejs/
/home/nodejs/.bash_profile: OK
/home/nodejs/.bash_logout: OK
/home/nodejs/.bash_history: OK
/home/nodejs/.bashrc: OK
/home/nodejs/.viminfo: OK

----------- SCAN SUMMARY -----------
Known viruses: 6561649
Engine version: 0.101.4
Scanned directories: 1
Scanned files: 5
Infected files: 0
Data scanned: 0.01 MB
Data read: 0.00 MB (ratio 2.00:1)
Time: 351.188 sec (5 m 51 s)

On peut voir que le scan a été très long à s’effectuer. En effet il faut compter le temps de chargement de la base de données au démarrage, qui pour le coup est assez conséquent.

D’autres méthodes de scan existent, pour les connaître rendez-vous dans la documentation : https://www.clamav.net/documents/scanning#clamdscan. Pour ma part je n’ai pas besoin d’avoir un démon qui vérifie chaque fichier / mail en temps réel, ce serveur me servant essentiellement pour de la sauvegarde ou du test.

Conclusion : Dois-je installer un antivirus sur mon serveur Linux ?

Tout dépend de l’utilisation que vous en faites. Il peut être d’une grande aide d’avoir un antivirus sur son serveur Linux pour scanner directement les boîtes e-mail et détecter les virus en amont avant qu’ils n’arrivent dans votre boîte de réception. Chez nos anciens clients, nous avions testés une passerelle sécurisée chez Cubis-Helios  qui nous servait à filtrer le trafic. Nous avions installé la solution ESET Gateway Security.

Pour l’utilisation d’un application en production ou d’un site web, cela n’a pas vraiment d’intérêt. L’utilité d’un antivirus sous Linux résulte avant tout d’un besoin de détection des menaces pour les ordinateurs Windows. Enfin, c’est ce que je pense.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.