Actions

Conseils de sécurité à l’installation

From LimeSurvey Manual

This page is a translated version of the page Installation security hints and the translation is 100% complete.

Généralités

LimeSurvey s'appuie sur sa propre sécurité, activée par défaut. Les auteurs de ce logiciel n'assument aucune responsabilité et ne font aucune réclamation quant à l'adéquation ou au niveau de sécurité de ce logiciel. Cependant, nous prenons les questions de sécurité très au sérieux et réagissons rapidement. Par conséquent, si vous avez connaissance de problèmes de sécurité au sein de LimeSurvey, veuillez nous en informer soit en nous envoyant un e-mail à info@limesurvey.org, soit en ouvrant un rapport de bug dans notre [http:// bug tracker bugs.limesurvey.org] (veuillez le marquer comme privé).

Restriction du serveur Web

Si vous utilisez Apache, LimeSurvey inclut différents fichiers htaccess à des fins de restriction. vérifiez que vous autorisez le htaccess inclus avec AllowOverride .

Avec un autre serveur web ou si vous souhaitez utiliser AllowOverride None : vous devez

  • (option) désactiver l'accès à tous les fichiers de l'application, protégés, framework et thèmes/*/views
  • désactiver l'accès au téléchargement de fichiers par l'utilisateur /upload/surveys/.*/fu_[a-z0-9]
  • (option) désactiver l'accès au fichier exécutable dans le répertoire de téléchargement

Vous pouvez trouver un exemple pour nginx sur notre General Faq

Permissions de fichiers sous Linux

Si vous utilisez un serveur Linux, il est nécessaire de définir les autorisations de fichiers en conséquence pour sécuriser votre installation de LimeSurey.

Faits de base sur les autorisations de fichiers Linux/*nix

Un système d'exploitation Linux/*nix est multi-utilisateur. Cela signifie qu'outre votre compte personnel, d'autres comptes d'utilisateurs peuvent exister sur le système et vous devez faire attention aux autorisations que vous accordez aux autres utilisateurs.

Astuce : la définition des autorisations de fichiers est particulièrement importante afin de sécuriser les fichiers de configuration contenant des données critiques telles que les mots de passe.

Gardez à l'esprit que le compte 'root' aura toujours l'autorisation d'accéder à vos fichiers (quelles que soient les autorisations de fichiers que vous définissez) car il s'agit de l'utilisateur super-administrateur.

Le serveur Web (qui exécute LimeSurvey) fonctionne également sous une identité donnée (utilisateur). Sous Linux, il s'agit généralement de l'utilisateur « www », « www-data » (sur Debian/Ubuntu), « apache » ou « personne ». Cependant, certaines sociétés d'hébergement utilisent des systèmes (tels que suexec) qui permettent d'exécuter des scripts LimeSurvey avec votre utilisateur personnel. Bien entendu, l'utilisateur du serveur Web doit avoir le droit de lire les fichiers LimeSurvey. Cependant, seul un petit sous-ensemble de sous-répertoires LimeSurvey doit être accessible en écriture par l'utilisateur du serveur Web.

Astuce : il est très utile de révoquer l'autorisation d'écriture de l'utilisateur du serveur Web sur ces sous-répertoires LimeSurvey qui n'en ont pas besoin. En effet, même si une vulnérabilité LimeSurvey était découverte, les fichiers principaux seront toujours protégés d'une modification illicite grâce aux permissions du système de fichiers.

Définition des autorisations de fichiers sur un système Linux autogéré

Si vous gérez la configuration de votre serveur Web et de votre système d'exploitation (vous êtes propriétaire du serveur physique ou louez un serveur virtuel sur lequel vous disposez d'un accès root), vous pouvez prendre en compte les recommandations suivantes ci-dessous.

Vous pouvez d'abord définir le propriétaire et le groupe de vos fichiers LimeSurvey afin de faciliter la configuration des autorisations de fichiers. Une stratégie possible consiste à définir le propriétaire des fichiers LimeSurvey sur votre nom d'utilisateur personnel et le groupe de fichiers LimeSurvey sur le groupe du serveur Web. Habituellement, ce groupe de serveurs Web contient uniquement le compte du serveur Web (et éventuellement un autre compte webmaster). Par exemple, si votre nom d'utilisateur est « mon compte » et que l'utilisateur du serveur Web est « apache » dans le groupe « apache », alors, depuis un accès shell, vous pouvez utiliser la commande suivante : $ chown -R myaccount:apache limesurvey/ . Ensuite, définissez les autorisations des fichiers et des sous-répertoires.

Pour que le script fonctionne correctement, l'accès en écriture à certains répertoires est nécessaire :

  • Le répertoire /limesurvey/application/config nécessite "Lecture et écriture" pour enregistrer les paramètres de configuration de l'application
  • Le /limesurvey/ Le répertoire tmp et ses sous-répertoires sont utilisés pour les importations/téléchargements et doivent être définis sur « Lecture et écriture » pour votre serveur Web 
  • Le répertoire/téléchargement et tous ses sous-répertoires doivent également avoir la valeur « Lecture » & Autorisations d'écriture afin de permettre le téléchargement d'images et de fichiers multimédias
  • Tous les autres répertoires et fichiers peuvent être définis en « Lecture seule »
Astuce : en supposant que vous ayez suivi les recommandations ci-dessus sur le propriétaire/groupe, ces paramètres peuvent être appliqués par les commandes suivantes :

$ chmod -R o-r-w-x limesurvey/

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/application/config

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Définition des autorisations de fichiers sur un serveur Web hébergé

Compte tenu de la difficulté d'une procédure standard pour sécuriser une application Web sur un environnement hébergé, elle est plutôt difficile car les environnements hébergés diffèrent à bien des égards.

Dans le cas du serveur géré, le serveur a besoin d'un accès en écriture à certains répertoires pour que le script fonctionne correctement :

  • Le répertoire /limesurvey/tmp est utilisé pour les importations/téléchargements et doit être défini sur « Lecture et écriture ». ' pour votre serveur Web
  • Le répertoire upload/et tous ses sous-répertoires doivent également avoir « Read & Write » pour votre serveur Web afin de permettre le téléchargement d'images et de fichiers multimédias
  • Les autres répertoires et les fichiers doivent être définis sur « Lecture seule »
Astuce :
  • Selon la configuration de votre serveur web, vous devrez modifier les droits sur les dossiers inscriptibles en 755 ou 777 pour les rendre accessibles en écriture pour le web serveur. Essayez d'abord 755, si cela ne fonctionne pas, « mettez à niveau » vers 777
  • Vous pouvez également essayer de supprimer l'accès en lecture d'autres utilisateurs à config.php en définissant les autorisations de ce fichier sur 750 - si cela ne fonctionne pas, « mettez à niveau ' au 755

Autorisations de fichiers Windows

Si vous utilisez un serveur Windows, vous devez vous assurer que le dossier admin permet au propriétaire du processus du serveur Web d'écrire des fichiers dans ce répertoire. Le reste des fichiers peut être défini en lecture seule et exécuté.

Autres problèmes de sécurité

Ce qui suit ne sont que des recommandations. LimeSurvey en général est très sûr sans ces mesures supplémentaires. Si vous collectez toutefois des données extrêmement sensibles, un peu de sécurité supplémentaire peut vous aider :

Utilisation de SSL

Nous recommandons généralement l'utilisation de SSL pour les données d'enquête sensibles. Vous activez généralement SSL en configurant correctement votre serveur Web et en utilisant un certificat SSQL. Si vous avez activé SSL, vous devez appliquer SSL à tout moment à partir des global settings de LimeSurvey. De plus, vous ne pouvez configurer l'utilisation de cookies « sécurisés » qu'en modifiant les option respective dans config.php.

L'accès au fichier config.php

Template:Alerte

Le fichier /application/config/config.php contient un nom d'utilisateur et un mot de passe pour votre serveur de base de données. Cela pose certains problèmes de sécurité, en particulier si vous utilisez une connexion disposant d'un accès administratif de haut niveau à votre base de données. Dans le cas d'une erreur renvoyant le contenu de ce fichier PHP au navigateur d'un utilisateur, le mot de passe de votre base de données et d'autres détails pourraient être compromis (cependant, il s'agit d'un scénario très improbable). La meilleure façon de minimiser les risques est de configurer une connexion spécifique qui dispose de droits spécifiques uniquement sur votre base de données LimeSurvey.

Une autre façon de sécuriser ces informations peut être de placer les informations du fichier /application/config/config.php dans un répertoire non-web, c'est-à-dire pour les utilisateurs Apache, il s'agit du répertoire au-dessus du dossier htdocs (également connu sous le nom de public_html ou www). . Fondamentalement, vous utiliserez config.php, mais vous n'aurez qu'une seule ligne - une ligne qui inclut le fichier avec les informations de configuration RÉELLES (ex :<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Supprimez toutes les informations de configuration réelles de /application/config/config.php et collez-les dans l'autre fichier (configreal.php) mentionné dans le fichier /application/config/config.php. Cet autre fichier doit être situé dans un répertoire non Web. Ensuite, /application/config/config.php ne contiendra pas les mots de passe de la base de données, etc. - juste le nom du fichier qui CONTIENT les informations de la base de données.

Cela évite d'avoir à modifier tous les autres fichiers qui incluent /application/config/config.php, puisque config.php les "redirige" vers le fichier de configuration qui se trouve dans un répertoire non-web qui comprend toutes les informations réelles de configuration. . Cependant, vous devrez modifier configreal.php et modifier les paramètres suivants pour utiliser les chemins de répertoire absolus pour fonctionner correctement :

'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]

'urlManager' => array(
 [...]
 'rules' => require('routes.php'),
 [...]
);

Exemple:

'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
[...]

'urlManager' => array(
 [...]
 'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
 [... ]
);

De plus, n'utilisez pas "admin" comme utilisateur par défaut. Accédez à votre base de données MySQL (ou celle dans laquelle vous avez installé LimeSurvey) et remplacez le nom d'utilisateur par défaut "admin" par celui de votre choix (par exemple "admin_xyz"). Il sera désormais beaucoup plus difficile de deviner le nouveau nom d'utilisateur de l'administrateur. N'oubliez pas qu'il s'agit de l'une des deux variables que les intrus peuvent utiliser pour accéder. Le mot de passe administrateur est l'autre variable. Choisissez donc les deux avec une extrême prudence.


Politique de sécurité du contenu (CSP)

AVERTISSEMENT - Le CSP fourni ici est uniquement un exemple et n'est pas destiné à être utilisé textuellement. Il s'agit d'un point de départ et vous DEVEZ l'adapter à vos besoins et le tester minutieusement. <IfModule mod_headers.c> L'en-tête est toujours défini sur Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'aucun '; formulaire-action 'soi'; cadre-ancêtres 'soi'; mises à niveau-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i " </IfModule>