60 lines
2.7 KiB
Markdown
60 lines
2.7 KiB
Markdown
|
# 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` :
|
||
|
|
||
|
```bash
|
||
|
#!/bin/bash
|
||
|
/usr/bin/clamscan "$@"
|
||
|
```
|
||
|
|
||
|
Assurez-vous que ce script est exécutable :
|
||
|
|
||
|
```bash
|
||
|
chmod +x /var/www/clients/client1/web8/web/clamscan_wrapper.sh
|
||
|
```
|
||
|
|
||
|
Vous pouvez ensuite appeler ce script depuis PHP :
|
||
|
|
||
|
```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`)
|
||
|
|
||
|
```bash
|
||
|
#!/bin/bash
|
||
|
/usr/bin/clamscan "$@"
|
||
|
```
|
||
|
|
||
|
### Code PHP
|
||
|
|
||
|
```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`.
|