Analyse antivirus des fichiers
Introduction
Les fonctionnalités qui permettent aux utilisateurs d'envoyer des fichiers vers un serveur web présentent un risque pour la sécurité du serveur. Ce risque est aussi présent pour tous les utilisateurs ou administrateurs susceptibles de télécharger le contenu des fichiers envoyés. Afin de limiter les risques, déployer un logiciel antivirus sur le serveur Web est une bonne pratique de sécurité qui permet :
- De protéger les utilisateurs lors de l'utilisation des fonctionnalités de transfert de fichiers présentes sur l'application tel que le module bureautique.
- Limiter les risques d'envoi et d'exécution de code malveillant ainsi que l'exploitation d'une vulnérabilité publique sur le serveur web.
- De protéger le serveur NAS hébergeant les pièces jointes contre l'exécution d'un code malveillant si celles-ci sont externalisées (i.e. non stockées sous forme de blobs dans la base de données).
Deux modes de stockage des pièces jointes sont paramétrables dans l'application :
- en base de données (mode par défaut)
- externalisé sur un NAS
Principe de fonctionnement
L'antivirus mis en place dans notre solution de sécurisation est Clam.AV.
Celui-ci est interrogé lors du chargement d'un fichier au niveau du module bureautique et des champs fichiers.
Cet antivirus doit être installé manuellement par le chef de projet sur le serveur applicatif et lancé comme un service ou une tâche pour fonctionner en environnement de production.
De plus, des modifications sont nécessaires dans le fichier de configuration programs.ini.
Installation manuelle
Actions manuelles
- Avec les droits administrateur, installer l'antivirus Clam.AV en tant que service ou obtenir le hostname et le port de celui utilisé dans l'entreprise.
- Vérifier que le port est bien accessible depuis le serveur hébergeant IIS.
- Ajouter ou modifier les trois clés ci-dessous dans le
programs.ini:
# Sécurité
Security.ScanUploadedFiles=enable
Security.VirusScanner.Hostname=localhost
Security.VirusScanner.Port=3310
Installation de Clam.AV
Voici les étapes d'installation résumées :
- Télécharger la dernière version de l'exécutable ou le zip : Clam.AV download.
- Aller dans le répertoire d'installation avec PowerShell en mode Administrateur et lancer les commandes suivantes :
copy .\conf_examples\freshclam.conf.sample .\freshclam.conf
copy .\conf_examples\clamd.conf.sample .\clamd.conf
- Modifier les fichiers créés par la commande précédente
freshclam.confetclamd.confavec un éditeur de texte (bloc-notes) en supprimant la ligneExample. - Mettre à jour la base de signatures en lançant l'exécutable
.\freshclam.exe
Une fois ces tâches réalisées, il est nécessaire d'exécuter le programme clamd.exe en tâche de fond pour que celui-ci puisse analyser les éléments bureautiques.
Mise en place du service
Plusieurs options sont disponibles pour exécuter le service Clam.AV :
Option 1 : [Dev-Rec] - Mise en place du service sous forme de daemon
Pour les environnements de développement ou de test, lancez simplement le daemon :
.\clamd.exe
Option 2 : [Prod] - Exécution en tant que service Windows à l'aide de NSSM
- Télécharger NSSM
- Extraire
nssm.exeet l'installer avec la commande :
nssm install ClamAV
- Paramétrer le service dans l'interface qui s'ouvre.
- Lancer le service ClamAV depuis le gestionnaire de services Windows.

Option 3 : [Prod] - Exécution via une tâche planifiée
- Ouvrir le Planificateur de tâches de Windows.
- Créer une tâche nommée Clam.AV.
- Créer le déclencheur Au démarrage.
- Créer l'action Démarrer un programme pointant vers
clamd.exe. - Valider et exécuter la tâche.

Option 4 : Utilisation d'un container Docker
Clam.AV est aussi disponible sous forme de container Docker.
Fichiers dépassant les 25Mo
Pour prendre en compte les fichiers dépassant la taille de 25Mo, modifiez les paramètres suivants dans le fichier clamd.conf :
MaxScanSize
Définit la quantité maximale de données à analyser pour chaque fichier d'entrée.
La désactivation de cette limite ou sa définition trop élevée peut entraîner de graves dommages au système.
Par défaut : 100M.
MaxFileSize
Les fichiers dont la taille dépasse cette limite ne seront pas analysés.
La désactivation de cette limite ou sa définition trop élevée peut entraîner de graves dommages au système.
Par défaut : 25M.
StreamMaxLength
Spécifie la limite supérieure de la taille des données qui seront transférées vers le démon distant lors de l'analyse d'un seul fichier.
Par défaut : 10M.
Vérifier le fonctionnement de l'antivirus
Deux messages d'erreur informent l'utilisateur du résultat de l'analyse :
- Lorsque le fichier n'a pas pu être traité par l'antivirus
- Lorsque le fichier contient un virus
Pour vérifier le bon fonctionnement, vous pouvez utiliser le test Eicar :
- Créez un fichier texte contenant la chaîne de caractère Eicar
- Tentez de le charger dans votre module bureautique
Si tout fonctionne correctement, vous devriez voir un message d'alerte indiquant que le fichier est infecté.
