Aller au contenu principal

ClamAV (clamav)

Moteur antivirus (clamd) de la chaîne de sécurité des fichiers, avec des mises à jour de signatures depuis le miroir interne seulement et une passerelle HTTPS authentifiée devant clamd.

Généré depuis catalog/services/clamav.yaml : ne pas modifier à la main.

Résumé​

Version1.4.6
Usageinstaller et configurer
Couchefonctionnelle (catalogue IA)
CatégorieSécurité et politiques
Méthodes d'installationpodman
Connexion externenon
Réservé au bac à sablenon

Licence​

Identifiant SPDXGPL-2.0-only
Politique de licenceexception de licence
Exception de licenceLEX-022 (en attente de la décision du client)
Composant de la plateformeclamav

Paquets et artefacts​

Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.

TypePaquetVersionLicenceDétails
image de conteneurdocker.io/clamav/clamav1.4.6GPL-2.0-onlyclé d'image clamav, utilisée par freshclam, clamd, condensé sha256:8ad6197396974726c35d017e50aaaaf4b91745726a04faec8480c203edd98052
image de conteneurdocker.io/library/python3.12.12-alpine3.22PSF-2.0clé d'image gateway, utilisée par gateway, condensé sha256:848ba4413eb897e225159b8fc1b02094576cbae4aa73fc13142608ae2c8c0e32

Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.

Systèmes et architectures pris en charge​

MéthodeSystèmes d'exploitationArchitectures
podmanfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64, aarch64 (non restreintes par le descripteur)

Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.

Prérequis​

Hôte​

  • au moins 3072 Mo de mémoire (bloquant, memory).
  • au moins 2048 Mo libres pour /var/lib/navin (avertissement, disk).

Programmes que les commandes et les contrôles du service lancent sur l'hôte, hors des racines gérées : les ajouter à allowed_commands de l'agent (voir Sécurité de l'agent Navin), sinon l'agent les refuse avec command_not_allowed : /usr/bin/podman.

Réseau et ports​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
clamdclamd3310/tcpnon
gatewayapi3311/tcpoui

Services et connexions nécessaires​

Ce service n'a aucune dépendance.

Méthodes et modes d'installation​

MéthodeDéfautCe que la méthode utilise
podmanouiles images de conteneur du descripteur, exécutées par Podman sous systemd

Composants​

ComposantTypeMéthodes d'installationPorts
Mise à jour des signatures (freshclam)travailleurpodman-
Démon clamd (clamd)maîtrepodman3310/tcp
Passerelle d'analyse (gateway)maîtrepodman3311/tcp
  • clamd ne tourne que sur un hôte qui porte aussi freshclam.
  • gateway ne tourne que sur un hôte qui porte aussi clamd.

Analyseur unique (standalone) (par défaut)​

Un hôte d'analyse (clamd, freshclam et la passerelle).

Ce que le mode déploie :

ComposantPlacement
freshclammin 1, max 1
clamdmin 1, max 1
gatewaymin 1, max 1

Répliqué (replicated)​

Deux hôtes d'analyse indépendants ou plus ; la plateforme bascule entre toutes les passerelles.

Ce que le mode déploie :

ComposantPlacement
freshclammin 2, recommandé 2
clamdmin 2, recommandé 2
gatewaymin 2, recommandé 2

Installer ce service​

L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.

  1. Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.

  2. Choisissez le service. À l'étape Service, sélectionnez ClamAV. La carte affiche la licence GPL-2.0-only.

  3. Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : standalone (par défaut), replicated. Chaque mode déploie les composants listés dans Méthodes et modes d'installation. Avec plusieurs composants, placez chacun sur ses hôtes dans Répartition des composants (Proposer un placement propose un placement qui respecte les cardinalités).

  4. Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.

  5. Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration) ; les paramètres obligatoires sont mirror_url. Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.

  6. Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.

  7. Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services. Ouvrez le service et choisissez Lancer le test fonctionnel dans la carte Contrôles : Envoie le fichier de test EICAR à travers la passerelle (doit être FOUND), puis un fichier propre (doit être OK).

Haute disponibilité​

Clusterréplicas (replication)
Haute disponibilitéexterne (external)
Basculecôté client (client)
Réplicationaucun (none)
Quorumaucun (none)
Découvertestatique (static)
Point d'entréedécouverte par le client (client-discovery)
Documentation officiellehttps://docs.clamav.net/
Référenceshttps://docs.clamav.net/manual/Usage/Scanning.html, https://docs.clamav.net/manual/Usage/Configuration.html, https://docs.clamav.net/appendix/CvdPrivateMirror.html
Paramètre TLS entre pairstls_enabled
Authentification entre pairsLes clients s'authentifient auprès de chaque passerelle avec la clé porteuse ; clamd n'a aucun pair réseau.

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
standaloneautonome (standalone)unique (single)-1Un hôte d'analyse, sans tolérance aux pannes (les dépôts sont refusés en mode enforce tant qu'il est arrêté).
replicatedha (ha)actif-actif (active-active)-2Deux hôtes d'analyse indépendants ou plus, chacun avec clamd, freshclam et sa passerelle ; la plateforme reçoit toutes les passerelles et bascule sur la suivante.

Remarques​

  • Chaque hôte charge toute la base de signatures en mémoire (environ 3 Go pendant un rechargement) : prévoir la mémoire de chaque hôte d'analyse.
  • Chaque hôte se met à jour seul depuis le miroir interne : le miroir doit rester joignable, les dernières bases continuent de servir en attendant et un import hors ligne reste toujours possible.

Paramètres de configuration​

Réseau​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Port de la passerelle (gateway_port)port3311-nonnonouiPort HTTPS de la passerelle d'analyse (/v1/scan, /readyz, /metrics), seule entrée réseau de l'hôte d'analyse.
Port local de clamd (clamd_port)port3310-nonnonouiPort TCP de clamd, utilisé par la passerelle du même hôte seulement : sur 127.0.0.1, ou dans le conteneur Podman isolé un port jamais publié sur l'hôte et joint par le seul conteneur de la passerelle (jamais ouvert dans le pare-feu). (avancé)

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
TLS (tls_enabled)booltrue-nonnonouiServir la passerelle en HTTPS avec un certificat de l'autorité de la console (obligatoire en production).
Clé d'API (api_key)passwordgénéré-nonouinonClé porteuse des clients de la passerelle (EAI_CLAMAV_API_KEY de la plateforme).

Signatures​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Miroir interne des signatures (mirror_url)url-^https://ouinonnonAdresse HTTPS du miroir ClamAV interne qui sert main, daily et bytecode (PrivateMirror de freshclam). Aucun serveur public de mise à jour n'est jamais utilisé.
Vérifications par jour (checks_per_day)int12min 1, max 50nonnonnonNombre de vérifications du miroir interne par freshclam et par jour.

Limites d'analyse​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Plus gros fichier (stream_max_length_mb)int100min 1, max 4000, MBnonnonnonStreamMaxLength de clamd et limite du corps de la passerelle (413 au-delà) ; au moins la limite de la plateforme EAI_FILE_SCAN_MAX_BYTES.
Données analysées au maximum (max_scan_size_mb)int400min 1, max 4000, MBnonnonnonMaxScanSize : données analysées par fichier, archives comprises (au-delà Heuristics.Limits.Exceeded est signalé).
Fichier interne maximal (max_file_size_mb)int100min 1, max 4000, MBnonnonnonMaxFileSize : plus gros fichier analysé, membres d'archives compris.
Profondeur d'archives (max_recursion)int16min 1, max 64nonnonnonMaxRecursion : imbrication des archives et des objets intégrés.
Fichiers par archive (max_files)int10000min 1, max 1000000nonnonnonMaxFiles : fichiers analysés dans une archive.
Délai d'analyse (scan_timeout_s)int120min 5, max 900, snonnonnonAnalyse la plus longue d'un fichier (MaxScanTime et ReadTimeout de clamd, délai de la passerelle vers clamd).
Processus d'analyse (max_threads)int8min 1, max 64nonnonnonMaxThreads de clamd : analyses simultanées sur l'hôte. (recommandé clamp(host.cpu_count, 2, 16))

Points d'accès​

Point d'accèsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
apihttpgateway3311 (gateway_port)-tls_enabledmax_file_size, max_scan_size, max_files, max_recursion, stream_max_lengthapi_key-

Commandes​

CommandeComposantCibleDescription
État des signatures (signature_status)freshclamtous les hôtesVersion du moteur et chaque base de signatures de chaque hôte d'analyse, avec sa signature numérique vérifiée par sigtool.
Mettre à jour les signatures (update_signatures)freshclamtous les hôtesLance freshclam maintenant vers le miroir interne sur chaque hôte d'analyse ; clamd recharge les nouvelles bases.
Importer des signatures hors ligne (import_signatures)freshclamtous les hôtesInstalle les bases .cvd et .cld d'un répertoire de l'hôte : chacune est d'abord vérifiée par sigtool, puis installée de façon atomique et clamd recharge localement. Rien n'est installé quand une base échoue.
Journaux de clamd (logs)clamdhôte choisiDernières lignes du journal de clamd.

Paramètres des commandes​

CommandeParamètreTypeDéfautObligatoireDescription
import_signaturesRépertoire (directory)path-ouiRépertoire absolu de l'hôte qui contient main, daily et bytecode (.cvd ou .cld).

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
freshclam{{ paths.etc }}/signatures.sh has-db90 tentatives ; intervalle 10 s ; délai 10 s
clamd/usr/bin/podman exec navin-{{ service.name }}-clamd clamdscan --config-file=/etc/navin-clamav/clamd.conf --ping=160 tentatives ; intervalle 5 s ; délai 10 s
gatewayHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.ip or '127.0.0.1' }}:{{ config.gateway_port }}/healthzAttendu 200 ; 30 tentatives ; intervalle 2 s ; délai 5 s

Disponibilité (contrôle du service)​

ContrôleDétails
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.ip or '127.0.0.1' }}:{{ config.gateway_port }}/readyzAttendu 200 ; Attendu "status": "ready" ; 10 tentatives ; intervalle 5 s ; délai 10 s

Test fonctionnel​

Envoie le fichier de test EICAR à travers la passerelle (doit être FOUND), puis un fichier propre (doit être OK). (gateway: eicar_found, clean_ok)

Contrôles préalables​

ContrôleTypeSignificationSévéritéComposants
memorymemory_mb {"min": 3072}au moins 3072 Mo de mémoirebloquantclamd
diskdisk_free_mb {"path": "/var/lib/navin", "min": 2048}au moins 2048 Mo libres pour /var/lib/navinavertissementfreshclam
gateway_port_freeport_free {"param": "gateway_port"}port 3311 libre sur l'hôtebloquantgateway
clamd_port_freeport_free {"param": "clamd_port"}port 3310 libre sur l'hôtebloquantclamd

Désinstallation​

Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.

Liens rapides​

  • Métriques de la passerelle : {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.gateway_port }}/metrics

Documentation amont​