ClamAV (Français) - ArchWiki

Jump to content

# ClamAV (Français)

From ArchWiki
État de la traduction: Cet article est la version francophone de ClamAV. Date de la dernière traduction: 2022-04-30. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Clam AntiVirus est un kit d'outils antivirus open source (GPL) pour UNIX. Il fournit un certain nombre d'utilitaires, notamment un daemon multithread flexible et évolutif, un scanner en ligne de commande et un outil avancé de mise à jour automatique des bases de données. Comme ClamAV est principalement utilisé sur les serveurs de fichiers et de courrier électronique pour les ordinateurs de bureau Windows, il détecte principalement les virus et les logiciels malveillants Windows grâce à ses signatures intégrées.

## Installation

Installez le paquet clamav.

## Mise à jour de la base de données

Mettez à jour les définitions de virus avec :

    # freshclam

Si vous êtes derrière un proxy, éditez `/etc/clamav/freshclam.conf` et mettez à jour HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername et HTTPProxyPassword.

Les fichiers de la base de données sont enregistrés dans :

    /var/lib/clamav/daily.cvd
    /var/lib/clamav/main.cvd
    /var/lib/clamav/bytecode.cvd

Démarrez et activez `clamav-freshclam.service` pour que les définitions de virus restent récentes.

## Démarrage du daemon

Note:

- Vous devrez exécuter `freshclam` avant de démarrer le service pour la première fois ou vous rencontrerez des problèmes/erreurs qui empêcheront ClamAV de démarrer correctement.
- Le daemon n'est pas nécessaire si vous souhaitez uniquement effectuer des analyses autonomes. Consultez #Scanner les virus ci-dessous.

Le service s'appelle `clamav-daemon.service`. Démarrez et activez son exécution au démarrage.

## Tester le logiciel

Afin de vous assurer que ClamAV et les définitions sont correctement installés, analysez le fichier de test EICAR (une signature inoffensive sans code de virus) avec clamscan.

    $ curl https://secure.eicar.org/eicar.com.txt | clamscan -

La sortie doit inclure :

    stdin : Win.Test.EICAR_HDB-1 FOUND

Sinon, lisez la partie Dépannage ou demandez de l'aide sur le site Arch Forums.

## Ajouter d'autres dépôts de bases de données/signatures

ClamAV peut utiliser des bases de données/signatures provenant d'autres dépôts ou de fournisseurs de sécurité.

Pour ajouter les plus importants en une seule étape, installez soit clamav-unofficial-sigsAUR. (consultez description GitHub) ou python-fangfrischAUR. (consultez documentation en ligne). Les deux ajouteront des signatures/bases de données provenant de fournisseurs populaires, par exemple MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc.

Note: Vous devez toujours avoir le `clamav-freshclam.service` démarré pour avoir les mises à jour officielles des signatures des miroirs ClamAV.

### Option #1 : Configurer Fangfrisch

Fangfrisch a été conçu comme un remplacement plus sûr, plus flexible et plus pratique de clamav-unofficial-sigs, et nécessite très peu de configuration.

Plus important encore, Fangfrisch n'a jamais besoin d'être exécuté avec les droits root, contrairement à clamav-unofficial-sigs.

Créez la structure de la base de données en exécutant :

    # sudo -u clamav /usr/bin/fangfrisch --conf /etc/fangfrisch/fangfrisch.conf initdb

Activez `fangfrisch.timer`.

### Option #2 : Configurer clamav-unofficial-sigs

Activez `clamav-unofficial-sigs.timer`.

Cela mettra régulièrement à jour les signatures non officielles en fonction des fichiers de configuration du répertoire `/etc/clamav-unofficial-sigs`.

Pour mettre à jour les signatures manuellement, exécutez la commande suivante :

    # clamav-unofficial-sigs.sh

Pour changer les paramètres par défaut, consultez et modifiez `/etc/clamav-unofficial-sigs/user.conf`.

#### Base de données MalwarePatrol

Si vous souhaitez utiliser la base de données MalwarePatrol, créez un compte à l'adresse https://www.malwarepatrol.net/free-guard-upgrade-option.

Dans `/etc/clamav-unofficial-sigs/user.conf`, modifiez les éléments suivants pour activer cette fonctionnalité :

    malwarepatrol_receipt_code="YOUR-RECEIPT-NUMBER" # entrez votre numéro de reçu ici
    malwarepatrol_product_code="8" # Utilisez 8 si vous avez un compte gratuit ou 15 si vous êtes un client Premium.
    malwarepatrol_list="clamav_basic" # clamav_basic ou clamav_ext
    malwarepatrol_free="yes" # Définir à oui si vous avez un compte gratuit ou non si vous êtes un client Premium.

Source : https://www.malwarepatrol.net/clamav-configuration-guide/

## Scanner les virus

Il existe deux options pour l'analyse à la demande :

### utilisation de l'analyseur autonome

`clamscan` peut être utilisé pour analyser certains fichiers, répertoires personnels ou un système entier :

    $ clamscan monfichier
    $ clamscan --recursive --infected /home
    # clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /

Si vous souhaitez que `clamscan` supprime le fichier infecté, ajoutez à la commande l'option `--remove`, ou vous pouvez utiliser `--move=/dir` pour les mettre en quarantaine.

Vous pouvez également souhaiter que `clamscan` analyse des fichiers plus volumineux. Dans ce cas, ajoutez les options `--max-filesize=4000M` et `--max-scansize=4000M` à la commande. 4000M' est la plus grande valeur possible, et peut être réduite si nécessaire.

L'utilisation de l'option `-l /path/to/file` imprimera les journaux de `clamscan` dans un fichier texte pour localiser les infections signalées.

### utilisation du daemon

`clamdscan` est similaire à la commande ci-dessus mais utilise le daemon, qui doit être en cours d'exécution pour que la commande fonctionne. La plupart des options sont ignorées puisque le daemon lit les paramètres spécifiés dans `/etc/clamav/clamd.conf`.

## Utilisation de milter

Milter analysera votre serveur sendmail pour détecter les e-mails contenant des virus. Adaptez `/etc/clamav/clamav-milter.conf` à vos besoins. Par exemple :

    /etc/clamav/clamav-milter.conf

    MilterSocket /tmp/clamav-milter.socket
    MilterSocketMode 660
    FixStaleSocket yes
    User clamav
    MilterSocketGroup clamav
    PidFile /run/clamav/clamav-milter.pid
    TemporaryDirectory /tmp
    ClamdSocket unix:/run/clamav/clamd.ctl
    LogSyslog yes
    LogInfected Basic

Créer `/etc/systemd/system/clamav-milter.service` :

    /etc/systemd/system/clamav-milter.service

    [Unit]
    Description='ClamAV Milter'
    After=clamav-daemon.service

    [Service]
    Type=forking
    ExecStart=/usr/bin/clamav-milter --config-file /etc/clamav/clamav-milter.conf

    [Install]
    WantedBy=multi-user.target

Activez et démarrez `clamav-milter.service`.

Pour Postfix, ajoutez les lignes suivantes à `/etc/postfix/main.cf` :

    etc/postfix/main.cf

    smtpd_milters = unix:/tmp/clamav-milter.socket
    milter_default_action = tempfail

Vérifiez journalctl si la permission d'accéder à `clamav-milter.socket` pour postfix est définie en conséquence, si non, ajoutez l'utilisateur postfix au groupe `clamav`.

## OnAccessScan

  (Source originale : https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html)

L'analyse à l'accès analyse le fichier pendant sa lecture, son écriture ou son exécution.

Attention: A ce jour (novembre 2021), l'analyse à l'accès dans ClamAV est encore immature, vous pouvez consulter des plantages inexpliqués de clamd, et les processus conteneurisés ne sont pas protégés. Par conséquent, on peut se demander s'il s'agit d'une amélioration de la sécurité ou non. Ne l'activez pas à moins que des réglementations, des contrats ou votre propre curiosité ne vous y obligent.

L'analyse à l'accès nécessite que le noyau soit compilé avec le module de noyau fanotify (noyau >= 3.8), ce qui est vrai pour les paquets officiels du noyau d'Arch Linux. Vérifiez si fanotify a été activé avant d'activer l'analyse sur accès.

    $ zgrep FANOTIFY /proc/config.gz

Tout d'abord, modifiez le fichier de configuration `/etc/clamav/clamd.conf` en ajoutant ce qui suit à la fin du fichier (vous pouvez également modifier les options individuelles).

Attention: Veuillez tenir compte de l'avertissement suivant concernant la sécurité du port clamd si vous modifiez d'autres parties du fichier. Utilisez généralement un socket unix local mais notez que ce port n'est ni authentifié ni protégé. Consultez https://docs.clamav.net/manual/Usage/Scanning.html#clamd-v0101 pour plus de détails dans la section Daemon puis ClamD.

    /etc/clamav/clamd.conf

    # Set the mount point where to recursively perform the scan,
    # this could be every path or multiple path (one line for path)
    OnAccessMountPath /
    OnAccessExcludePath /proc
    OnAccessExcludePath /run
    OnAccessExcludePath /sys

    # Alternatively, add some directories instead of mount points
    # OnAccessIncludePath /home

    # Prevention doesn't work with OnAccessMountPath.
    # It works with OnAccessIncludePath, as long as /usr and /etc are not included.
    # Including /var while activating prevention is also not recommended, because
    # this would slow down package installation by a factor of 1000.
    OnAccessPrevention false

    # Perform scans on newly created, moved, or renamed files
    OnAccessExtraScanning true

    # Exclude the UID of the scanner itself from checking, to prevent loops
    OnAccessExcludeUname clamav

    # Optionally, also exclude root-owned processes
    # OnAccessExcludeRootUID true

    # Specify an action to perform when clamav detects a malicious file
    # it is possible to specify an inline command too
    VirusEvent /etc/clamav/virus-event.bash

    # WARNING: for security reasons, clamd should NEVER run as root.
    # Previous instructions in this wiki included this line, remove it:
    # User root    # REMOVE THIS
    # Add this instead:
    User clamav

Ensuite, autorisez l'utilisateur clamav à exécuter notify-send en tant qu'utilisateur avec des variables d'environnement personnalisées via sudo :

    /etc/sudoers.d/clamav

    clamav ALL = (ALL) NOPASSWD : SETENV : /usr/bin/notify-send

Ensuite, créez le fichier `/etc/clamav/virus-event.bash` et ajoutez ce qui suit. Cela vous permet de modifier/spécifier le message lorsqu'un virus a été détecté par le service d'analyse à l'accès de clamd :

    /etc/clamav/virus-event.bash

    #!/bin/bash
    PATH=/usr/bin
    ALERT="Signature détectée par clamav : $CLAM_VIRUSEVENT_VIRUSNAME dans $CLAM_VIRUSEVENT_FILENAME"

    # Envoyer une alerte à tous les utilisateurs graphiques.
    for ADDRESS in /run/user/* ; do
        USERID=${ADDRESS#/run/user/}
        /usr/bin/sudo -u "#$USERID" DBUS_SESSION_BUS_ADDRESS="unix:path=$ADDRESS/bus" PATH=${PATH} \
            /usr/bin/notify-send -i dialog-warning "Virus trouvé !" "$ALERT"
    done

Redémarrez `clamav-daemon.service`.

Par défaut, clamonacc transmet à clamav les noms des fichiers qui viennent d'être accédés pour analyse. C'est un problème, car les fichiers inaccessibles à l'utilisateur de clamav ne peuvent pas être analysés de cette manière. À la place, il est possible de demander à clamonacc (qui s'exécute toujours en tant que root) d'utiliser le passage par les descripteurs de fichiers.

Éditez `clamav-clamonacc.service` avec le contenu suivant :

    [Service]
    ExecStart=
    ExecStart=/usr/sbin/clamonacc -F --fdpass --log=/var/log/clamav/clamonacc.log

Enfin, activez et démarrez `clamav-clamonacc.service`.

Si vous obtenez des refus de AppArmor concernant clamd, définissez le profil en mode plainte uniquement :

    # aa-complain clamd

## Dépannage

Note: Assurez-vous que l'utilisateur à partir duquel vous exécutez `clamscan` a les droits de lecture pour les fichiers de la base de données (`/var/lib/clamav/*.cvd`)

### Erreur : Clamd n'a PAS été notifié

Si vous obtenez les messages suivants après avoir exécuté freshclam :

    WARNING: Clamd was NOT notified: Cannot connect to clamd through
    /var/lib/clamav/clamd.sock connect(): No such file or directory

Ajoutez un fichier sock pour ClamAV :

Attention: Consultez l'avertissement dans #OnAccessScan sur la sécurité du port clamd:

    # touch /run/clamav/clamd.ctl
    # chown clamav:clamav /run/clamav/clamd.ctl

Ensuite, éditez `/etc/clamav/clamd.conf` - décommentez cette ligne :

    LocalSocket /run/clamav/clamd.ctl

Sauvegardez le fichier et redémarrez `clamav-daemon.service`.

### Erreur : Aucun fichier de base de données pris en charge n'a été trouvé

Si vous obtenez l'erreur suivante au démarrage du daemon :

    LibClamAV Error: cli_loaddb(): No supported database files found
    in /var/lib/clamav ERROR: Not supported data format

Cela se produit à cause d'un désaccord entre le paramètre `/etc/clamav/freshclam.conf` `DatabaseDirectory` et le paramètre `/etc/clamav/clamd.conf` `DatabaseDirectory`. `/etc/clamav/freshclam.conf` pointe vers `/var/lib/clamav`, mais `/etc/clamav/clamd.conf` (répertoire par défaut) pointe vers `/usr/share/clamav`, ou un autre répertoire. Modifiez `/etc/clamav/clamd.conf` et remplacez par le même `DatabaseDirectory` que dans `/etc/clamav/freshclam.conf`. Après cela, clamav démarrera avec succès.

### Erreur : Impossible de créer un répertoire temporaire

Si vous obtenez l'erreur suivante, accompagnée d'un 'HINT' (indice) contenant un numéro UID et un numéro GID :

    # can't create temporary directory (Impossible de créer un répertoire temporaire)

Corrigez les permissions comme suit :

    # chown UID:GID /var/lib/clamav && chmod 755 /var/lib/clamav

## Trucs et astuces

### Exécuter en plusieurs threads

#### Utilisation de clamscan

Lors de l'analyse d'un fichier ou d'un répertoire à partir de la ligne de commande en utilisant `clamscan`, un seul thread CPU est utilisé. Cela peut convenir dans les cas où le temps n'est pas critique ou si vous ne voulez pas que l'ordinateur devienne lent. S'il est nécessaire d'analyser rapidement un grand répertoire ou un lecteur USB, vous pouvez vouloir utiliser tous les processeurs disponibles pour accélérer le processus.

`clamscan` est conçu pour être monotâche, donc `xargs` peut être utilisé pour exécuter l'analyse en parallèle :

    $ find /home/archie -type f -print0 | xargs -0 -P $(nproc) clamscan

Dans cet exemple, le paramètre `-P` de `xargs` exécute `clamscan` dans autant de processus qu'il y a de CPU (signalés par `nproc`) en même temps. Les options `--max-lines` et `--max-args` permettent un contrôle encore plus fin de la répartition de la charge de travail entre les threads.

#### Utilisation de clamdscan

Si le daemon `clamd` fonctionne déjà, `clamdscan` peut être utilisé à la place (consultez #Démarrage du daemon) :

    $ clamdscan --multiscan --fdpass /home/archie

Ici, le paramètre `--multiscan` permet à `clamd` d'analyser le contenu du répertoire en parallèle en utilisant les threads disponibles. Le paramètre `--fdpass` est nécessaire pour transmettre les permissions du descripteur de fichier à `clamd` car le daemon est exécuté sous l'utilisateur et le groupe `clamav`.

Le nombre de threads disponibles pour `clamdscan` est déterminé dans `/etc/clamav/clamd.conf` via le paramètre `MaxThreads` (consultez clamd.conf(5)). Même si vous pouvez constater que le nombre de `MaxThreads` spécifié est supérieur à un (la valeur par défaut actuelle est 10), lorsque vous lancez l'analyse en utilisant `clamdscan` à partir de la ligne de commande et que vous ne spécifiez pas l'option `--multiscan`, un seul thread CPU réel sera utilisé pour l'analyse.

## Voir aussi

- Wikipedia:ClamAV

Category:

- Security (Français)