notes-techniques/notes/webapps/clamav-avec-nextcloud.md

2.7 KiB

Rendre accessible Clamav à NextCloud

Cédrix - 2024-07-22

Introduction

Vous avez raison de vous préoccuper de la sécurité en ouvrant open_basedir pour inclure /usr/bin. Permettre l'accès à ce répertoire peut exposer votre serveur à des risques potentiels, car cela donne à PHP l'accès à tous les exécutables de ce répertoire.

Voici quelques suggestions pour atténuer les risques de sécurité tout en permettant à votre programme PHP d'utiliser clamscan :

  1. Utiliser clamscan via un wrapper : Au lieu d'ouvrir /usr/bin en entier, vous pourriez créer un script wrapper qui appelle clamscan et placer ce script dans un répertoire déjà inclus dans open_basedir. Par exemple, créez un script shell /var/www/clients/client1/web8/web/clamscan_wrapper.sh :

    #!/bin/bash
    /usr/bin/clamscan "$@"
    

    Assurez-vous que ce script est exécutable :

    chmod +x /var/www/clients/client1/web8/web/clamscan_wrapper.sh
    

    Vous pouvez ensuite appeler ce script depuis PHP :

    <?php
    $output = shell_exec('/var/www/clients/client1/web8/web/clamscan_wrapper.sh /path/to/file');
    echo $output;
    ?>
    
  2. Configurer les permissions de fichier : Assurez-vous que seuls les utilisateurs nécessaires ont accès au script wrapper et aux fichiers qu'il scanne. Limitez les permissions autant que possible.

  3. Utiliser suexec ou php-fpm : Si vous utilisez Apache, vous pouvez envisager de configurer suexec pour exécuter des scripts en tant qu'utilisateur spécifique, ce qui peut aider à limiter l'impact potentiel des failles de sécurité. Pour php-fpm, configurez des pools de processus avec des utilisateurs spécifiques pour chaque site ou application.

  4. Auditer et surveiller : Mettez en place des mécanismes d'audit et de surveillance pour détecter toute activité suspecte. Les logs peuvent être très utiles pour repérer des comportements anormaux.

  5. Limiter l'accès réseau : Assurez-vous que le serveur ne permet pas d'accès non autorisé depuis l'extérieur et utilisez un pare-feu pour limiter les connexions entrantes et sortantes.

Voici un exemple de script wrapper et de configuration PHP pour appeler clamscan :

Script Wrapper (/var/www/clients/client1/web8/web/clamscan_wrapper.sh)

#!/bin/bash
/usr/bin/clamscan "$@"

Code PHP

<?php
$file_to_scan = '/path/to/file';
$clamscan_output = shell_exec('/var/www/clients/client1/web8/web/clamscan_wrapper.sh ' . escapeshellarg($file_to_scan));
echo $clamscan_output;
?>

En suivant ces pratiques, vous pouvez réduire les risques de sécurité associés à l'ouverture de open_basedir tout en permettant à votre programme PHP d'utiliser clamscan.