Actions

Installation security hints/nl: Difference between revisions

From LimeSurvey Manual

No edit summary
No edit summary
Line 29: Line 29:
You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup. A possible strategy is to set the owner of the LimeSurvey files to your personal username, and the group of the LimeSurvey files to the web server group. Usually, this web server group only contains the web server account (and possibly another webmaster account). For instance, if your username is 'myaccount' and the webserver user is 'apache' in the 'apache' group, then, from a shell access, you can use the following command: <code>$ chown -R myaccount:apache limesurvey/</code>. Then set the file and sub-directories permissions.
You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup. A possible strategy is to set the owner of the LimeSurvey files to your personal username, and the group of the LimeSurvey files to the web server group. Usually, this web server group only contains the web server account (and possibly another webmaster account). For instance, if your username is 'myaccount' and the webserver user is 'apache' in the 'apache' group, then, from a shell access, you can use the following command: <code>$ chown -R myaccount:apache limesurvey/</code>. Then set the file and sub-directories permissions.


For the script to work properly, the write access to some directories is needed:
Om het script te laten werken heeft het schrijfrechten op de volgende mappen nodig:
*The /limesurvey/application/config directory requires ''Read & Write'' for saving the application configuration settings.
* De /limesurvey/application/config directory requires ''Read & Write'' voor opslaan van de applicatie configuratie.
*The '/limesurvey/tmp' directory and its sub-directories are used for imports/uploads and should be set to ''Read & Write'' for your web server.
* De ''/limesurvey/tmp'' directory en alle subdirectories er onder voor het importeren en uploaden
*The upload/directory and all its sub-directories must also have set ''Read & Write'' permissions in order to enable pictures and media files upload.
* de ''upload/'' directory en alle subdirectories om media te uploaden
* All other directories and files can be set to ''Read Only''.
 
Voor alle andere directories en bestanden volstaan leesrechten.


<div class="simplebox">[[File:help.png]] '''Hint:''' Als je het bovenstaand advies over het aanmaken van de eigenaar en groep hebt opgevolgd, stel dan met de volgende commando's de rechten in:
<div class="simplebox">[[File:help.png]] '''Hint:''' Als je het bovenstaand advies over het aanmaken van de eigenaar en groep hebt opgevolgd, stel dan met de volgende commando's de rechten in:

Revision as of 19:38, 6 September 2017

Algemeen

LimeSurvey vertrouwt op zijn eigen beveiliging, dat standaard geactiveerd is. Echter, de auteurs van de software accepteren geen verantwoordelijkheid voor, en maken geen claims over de veiligheid of geschiktheid van de software. Dat gezegd hebbende zijn we uiteraard zeer benieuwd naar veiligheidslekken. Kom je zoiets tegen, mail ons dan info@limesurvey.org , of open een foutrapport op onze bug tracker (zet deze dan wel graag op privé).

Linux bestandsrechten

Als je een Linux server gebruikt, bepalen de bestandsrechten mede de veiligheid van de LimeSurvey installatie.

Linux/*nix bestandsrechten

Een Linux/*nix systeem is multiuser. Dat betekent dat er behalve jouw account mogelijk ook andere "gebruikers" actief zijn op het systeem. Deze "gebruikers" moeten de juiste rechten hebben.

Hint: Het instellen van bestandsrechten is bijzonder belangrijk bij configuratiebestanden, omdat hier gevoelige informatie, zoals wachtwoorden instaat.

Het 'root'-account geeft altijd toegang tot alle bestanden (ongeacht de toegekende rechten), omdat het de super-admin is,

De webserver (waar LimeSurvey op draait) is ook zo'n gebruiker. Op Linux is dit waarschijnlijk de 'www','www-data' (op Debian/Ubuntu), 'apache' of 'nobody'-gebruiker. Ook kan de webhost er voor kiezen om systemen zoals 'suexec' te gebruiken om LimeSurvey-scripts uit te voeren onder jouw account. De webserver moet uiteraard de LimeSurvey-bestanden kunnen lezen. Maar slechts een klein gedeelte van de mappen moet ook schrijfbaar zijn.

Hint: Het is zeer nuttig om de schrijfrechten voor de webservergebruiker in te trekken op bepaalde mappen. Mocht er dan een beveiligingslek in de software ontdekt worden, dan worden de bestanden nog steeds beschermd door de bestandsrechten van het systeem.

Instellen van bestandsrechten op een Linuxsysteem in eigen beheer

Als je zelf de webserver beheert (omdat je ofwel de hardware bezit of omdat je een (virtuele) server huurt met root-toegang), volg dan deze aanbevelingen:

You can first set the owner and group of your LimeSurvey files so that it will ease the file permissions setup. A possible strategy is to set the owner of the LimeSurvey files to your personal username, and the group of the LimeSurvey files to the web server group. Usually, this web server group only contains the web server account (and possibly another webmaster account). For instance, if your username is 'myaccount' and the webserver user is 'apache' in the 'apache' group, then, from a shell access, you can use the following command: $ chown -R myaccount:apache limesurvey/. Then set the file and sub-directories permissions.

Om het script te laten werken heeft het schrijfrechten op de volgende mappen nodig:

  • De /limesurvey/application/config directory requires Read & Write voor opslaan van de applicatie configuratie.
  • De /limesurvey/tmp directory en alle subdirectories er onder voor het importeren en uploaden
  • de upload/ directory en alle subdirectories om media te uploaden

Voor alle andere directories en bestanden volstaan leesrechten.

Hint: Als je het bovenstaand advies over het aanmaken van de eigenaar en groep hebt opgevolgd, stel dan met de volgende commando's de rechten in:

$ 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

</syntaxhighlight>

Setting file permissions on a hosted web server

Giving the difficulty of a standard procedure to secure a web application on a hosted environment, it is rather difficult because hosted environments differ in so many ways.

In the managed server case, the server needs write access to some directories in order for the script to work properly:

  • The "/limesurvey/tmp" directory is used for imports/uploads and should be set to Read & Write for your web server.
  • The upload/directory and all its sub-directories must also have Read & Write for your web server in order to enable pictures and media files upload.
  • The other directories and files should be set to Read Only.
Hint:
  • Depending on your web server configuration, you will have to chmod the rights on the writable folders to 755 or 777 to make it writable for the web server. Try 755 first, if it does not work, 'upgrade' to 777.
  • You can also try to remove other users' read access to config.php by setting this file's permissions to 750 - if it does not work, 'upgrade' to 755.

Windows bestandsrechten

If you are using a Windows server, your should ensure that the admin folder allows the owner of the web server process to write files to this directory, The rest of the files can be set to read-only and execute.

Andere beveiligingszaken

De volgende tips zijn adviezen: LimeSurvey zelf is in het algemeen best veilig zonder deze aanvullende maatregelen. Mocht je een enquête met zeer vertrouwelijke data hebben, dan kan deze aanvulling je helpen:

SSL usage

We generally recommend the usage of SSL for sensitive survey data. You usually enable SSL by configuring your web server correctly and using a SSQL certificate. If you have enabled SSL, you should enforce SSL all the time from the global settings of LimeSurvey. Additionally, you could only set to use 'secure' cookies by editing the respective option in config.php.

The access to the config.php file

  You must update application/config/config.php only after the first installation is done and it works.


The /application/config/config.php file contains a user name and password for your database server. This poses certain security issues, particularly if you are using a login that has high level administrative access to your database. In the event of some error returning the content of this PHP file to a user's browser, your database password and other details could be compromised (please note, that this is a very unlikely scenario). The best way to minimize risk is to set up a specific login that has specific rights only to your LimeSurvey database.

Another way to secure this information can be to put the certain information from the /application/config/config.php file in a non-web directory, i.e. for Apache users this is the directory above the htdocs (also known as public_html or www) folder. Basically, you will use config.php, but have one line in it - a line that includes the file with ACTUAL configuration information (ex: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Remove all actual configuration information from /application/config/config.php and paste it into the other file (configreal.php) that is mentioned in the /application/config/config.php file. This other file should be located in a non-web directory. Then /application/config/config.php will not contain database passwords, etc. - just the name of the file that DOES contain the database info.

This avoids having to change all the other files that include /application/config/config.php, since config.php 're-directs them' towards the configuration file that is located in a non-web directory that includes all the real configuration information. However, you will need to edit configreal.php and change the follow parameters to use absolute directory paths to work properly:

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

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

Example:

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

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

Also, don't use "admin" as the default user. Go to your MySQL database (or the one in which you installed LimeSurvey on different database) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will be now much harder to guess administrator's new user name. Remember, this is one of the two variables intruders can use to gain access. The admin password is the other variable. So choose both of them with extreme care.