À partir de la version 5.0.0, le serveur auto-hébergé d'ActivityInfo peut analyser les fichiers que les utilisateurs téléversent dans les champs de pièces jointes à la recherche de virus et autres logiciels malveillants en utilisant ClamAV, un moteur antivirus open-source largement utilisé. Cet article explique comment fonctionne l'analyse et comment installer et configurer ClamAV avec ActivityInfo.
Comment fonctionne l'analyse
ActivityInfo n'inclut pas ClamAV. À la place, il se connecte à un démon ClamAV (clamd) que vous installez séparément — soit sur la même machine, soit sur un autre hôte accessible via le réseau. ActivityInfo communique avec clamd via son socket de domaine Unix local (l'option par défaut) ou via une connexion TCP.
Lorsqu'un utilisateur téléverse un fichier, ActivityInfo le stocke puis l'analyse en arrière-plan. Chaque pièce jointe a l'un des statuts suivants :
| Statut | Signification | Servi aux utilisateurs ? |
|---|---|---|
| En attente | Pas encore analysé, ou en file d'attente pour une nouvelle analyse. | Oui |
| Sain | Analysé sans qu'aucune menace n'ait été trouvée. | Oui |
| Infecté | ClamAV a trouvé une correspondance avec une signature de logiciel malveillant connue. | Non |
| Erreur | ClamAV a refusé de traiter le fichier (par exemple, un fichier malformé ou corrompu). | Non |
Comme l'analyse a lieu juste après la fin du téléversement, il y a une brève période pendant laquelle un fichier fraîchement téléversé est En attente et toujours téléchargeable. Si l'analyseur est temporairement inaccessible lors du téléversement d'un fichier, le fichier reste En attente ; un balayage périodique en arrière-plan analyse à nouveau automatiquement les pièces jointes en attente une fois que l'analyseur redevient disponible, de sorte qu'aucun fichier n'est perdu et que vous n'avez pas besoin de les téléverser à nouveau.
L'analyse des logiciels malveillants est activée par défaut. Si vous n'installez pas ClamAV, les téléversements réussissent et sont servis, mais ils restent En attente (non analysés) jusqu'à ce qu'un analyseur devienne accessible. Pour désactiver complètement l'analyse, définissez Enabled = False dans la section [Malware] de config.ini.
Installer ClamAV sur Debian / Ubuntu
Installez le démon ClamAV depuis le dépôt de paquets de la distribution :
apt install -y clamav-daemon
Ensuite, démarrez les deux services :
systemctl enable --now clamav-freshclam
systemctl enable --now clamav-daemon
Sur Debian et Ubuntu, le démon écoute sur le socket Unix local /var/run/clamav/clamd.ctl, ce qui correspond exactement à la configuration par défaut d'ActivityInfo. Aucune configuration [Malware] n'est obligatoire — une fois le démon en cours d'exécution, redémarrez ActivityInfo et l'analyse est active.
Installer ClamAV sur Red Hat / RHEL
ClamAV est fourni dans le dépôt EPEL sur RHEL 9 et ses dérivés (AlmaLinux, Rocky Linux). Installez EPEL et les paquets ClamAV :
yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
yum -y install clamav clamd clamav-update
Les fichiers /etc/freshclam.conf et /etc/clamd.d/scan.conf sont tous deux fournis avec une ligne sentinelle Example qui empêche le démarrage des services jusqu'à ce qu'elle soit supprimée (ou commentée).
De plus, ActivityInfo doit pouvoir atteindre clamd via un socket TCP local. Modifiez /etc/clamd.d/scan.conf pour que la ligne Example soit supprimée et que les deux directives TCP soient décommentées et définies comme suit :
# /etc/clamd.d/scan.conf
# Supprimez (ou commentez) la ligne "Example" fournie avec le paquet.
# Écoutez sur un socket TCP local pour qu'ActivityInfo puisse se connecter.
TCPSocket 3310
TCPAddr 127.0.0.1
Ensuite, téléchargez la base de données de signatures et démarrez les deux services :
freshclam
systemctl enable --now clamav-freshclam
systemctl enable --now clamd@scan
Puis, dirigez ActivityInfo vers le socket TCP en ajoutant une section [Malware] à /opt/activityinfo/config.ini et en redémarrant le service activityinfo :
[Malware]
Host=127.0.0.1
Port=3310
Exécuter ClamAV en tant que sidecar Docker
Si vous exécutez ActivityInfo en tant que conteneur Docker, l'approche la plus simple est d'exécuter l'image officielle clamav/clamav en tant que service sidecar sur le même réseau Docker et de faire pointer ActivityInfo vers celui-ci par son nom de service. Consultez le guide Configuration de Traefik pour un exemple complet de Docker Compose qui exécute ActivityInfo et ClamAV ensemble. Les variables d'environnement pertinentes sont :
ACTIVITYINFO_MALWARE_ENABLED=true
ACTIVITYINFO_MALWARE_HOST=clamav
ACTIVITYINFO_MALWARE_PORT=3310
L'image clamav/clamav exécute freshclam au premier démarrage, ce qui télécharge la base de données de signatures et peut prendre quelques minutes. Pendant le téléchargement, l'analyseur est signalé comme inaccessible et ActivityInfo conserve les pièces jointes nouvellement téléversées avec le statut En attente ; le balayage en arrière-plan les analyse une fois que ClamAV est prêt, donc aucun ordre de démarrage conditionné par l'état de santé n'est requis.
Options de configuration
L'analyse est configurée dans la section [Malware] de config.ini, et chaque option peut également être fournie en tant que variable d'environnement. Consultez la section [Malware] de la Référence du fichier de configuration pour la liste complète des options et leurs valeurs par défaut.
Vérifier que l'analyse est active
ActivityInfo expose un point de terminaison de santé non authentifié qui indique si l'analyseur est accessible. La réponse ne contient aucune information sur des fichiers ou des utilisateurs spécifiques — seulement si l'analyseur est en cours d'exécution :
curl https://activityinfo.example.gov/resources/malware/status
Le point de terminaison renvoie l'un des trois états suivants :
| État | Signification |
|---|---|
| AVAILABLE | L'analyseur est accessible et a répondu à un ping. |
| UNREACHABLE | L'analyse est activée mais l'analyseur n'a pas répondu. Vérifiez que clamd est en cours d'exécution et que le socket ou l'hôte et le port configurés sont corrects. |
| DISABLED | L'analyse est désactivée dans la configuration ([Malware] Enabled = False). |
Pour confirmer que la détection fonctionne de bout en bout, vous pouvez téléverser le fichier de test EICAR inoffensif dans un champ de pièce jointe. ClamAV le reconnaît comme un logiciel malveillant, donc en quelques instants, la pièce jointe devrait être marquée comme Infectée et ne plus être téléchargeable.
Désactiver l'analyse
Pour désactiver complètement l'analyse des logiciels malveillants, définissez ce qui suit dans config.ini et redémarrez ActivityInfo :
[Malware]
Enabled=False
Lorsque l'analyse est désactivée, les pièces jointes sont acceptées et servies sans être analysées.