Actions

Installation security hints/pl: Difference between revisions

From LimeSurvey Manual

(Created page with "===Ustawianie uprawnień do plików w samodzielnie zarządzanym systemie Linux===")
(Created page with "Jeśli zarządzasz konfiguracją swojego serwera WWW i systemu operacyjnego (jesteś właścicielem serwera fizycznego lub wynajmujesz serwer wirtualny, na którym masz dostę...")
Line 36: Line 36:
===Ustawianie uprawnień do plików w samodzielnie zarządzanym systemie Linux===
===Ustawianie uprawnień do plików w samodzielnie zarządzanym systemie Linux===


If you're managing your web server and operating system configuration (you are the owner of the physical server or are renting a virtual server on which you have root access), you may consider the following recommendations from below.
Jeśli zarządzasz konfiguracją swojego serwera WWW i systemu operacyjnego (jesteś właścicielem serwera fizycznego lub wynajmujesz serwer wirtualny, na którym masz dostęp do roota), możesz rozważyć poniższe zalecenia.


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>. Subsequently, 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>. Subsequently, set the file and sub-directories permissions.

Revision as of 07:49, 15 September 2023

Ogólne

LimeSurvey opiera się na własnych zabezpieczeniach, które są domyślnie aktywowane. Autorzy tego oprogramowania nie ponoszą żadnej odpowiedzialności i nie zgłaszają żadnych roszczeń dotyczących stosowności lub poziomu bezpieczeństwa tego oprogramowania. Jednakże kwestie bezpieczeństwa traktujemy bardzo poważnie i szybko reagujemy. Dlatego jeśli wiesz o jakichkolwiek problemach związanych z bezpieczeństwem w LimeSurvey, daj nam znać, wysyłając e-mail na adres info@limesurvey.org lub otwierając raport o błędzie w naszym [http:// bugs.limesurvey.org narzędzie do śledzenia błędów] (proszę oznaczyć jako prywatne).

Ograniczenia serwera WWW

Jeśli używasz Apache, LimeSurvey dołącza inny plik htaccess w celu ograniczenia. sprawdź, czy masz włączone htaccess AllowOverride .

Z innym serwerem WWW lub jeśli chcesz używać AllowOverride None : musisz

  • (opcja) wyłącz dostęp do wszystkich plików aplikacji, chronionych, frameworku i motywów/*/views
  • wyłącz dostęp do przesyłania plików przez użytkownika /upload/surveys/.*/fu_[a-z0-9]
  • (opcja) wyłącz dostęp do pliku wykonywalnego w katalogu przesyłania

Próbkę dla nginx można znaleźć w naszym Ogólne pytania

Uprawnienia do plików w systemie Linux

Jeśli korzystasz z serwera Linux, wymagane jest odpowiednie ustawienie uprawnień do plików, aby zabezpieczyć instalację LimeSurey.

Podstawowe fakty na temat uprawnień do plików Linux/*nix

System operacyjny Linux/*nix obsługuje wielu użytkowników. Oznacza to, że poza Twoim kontem osobistym w systemie mogą istnieć inne konta użytkowników i powinieneś zadbać o to, jakie uprawnienia nadajesz innym użytkownikom.

Wskazówka: ustawienie uprawnień do plików jest szczególnie ważne w celu zabezpieczenia plików konfiguracyjnych zawierających krytyczne dane, takie jak hasła.

Pamiętaj, że konto „root” zawsze otrzyma pozwolenie na dostęp do Twoich plików (bez względu na to, jakie uprawnienia do plików ustawisz), ponieważ jest to użytkownik superadministrator.

Serwer WWW (na którym działa LimeSurvey) również działa pod daną tożsamością (użytkownikiem). W systemie Linux jest to zwykle użytkownik „www”, „www-data” (w Debianie/Ubuntu), „apache” lub „nobody”. Jednak niektóre firmy hostingowe korzystają z systemów (takich jak suexec), które umożliwiają uruchamianie skryptów LimeSurvey z Twoim osobistym użytkownikiem. Oczywiście użytkownik serwera WWW musi mieć uprawnienia do odczytu plików LimeSurvey. Jednak tylko niewielki podzbiór podkatalogów LimeSurvey musi być możliwy do zapisu przez użytkownika serwera WWW.

'Wskazówka: bardzo cenne jest odebranie użytkownikowi serwera WWW uprawnień do zapisu w tych podkatalogach LimeSurvey, które tego nie wymagają. Rzeczywiście, nawet jeśli zostanie wykryta luka w LimeSurvey, główne pliki będą nadal chronione przed nielegalną modyfikacją dzięki uprawnieniom systemu plików.

Ustawianie uprawnień do plików w samodzielnie zarządzanym systemie Linux

Jeśli zarządzasz konfiguracją swojego serwera WWW i systemu operacyjnego (jesteś właścicielem serwera fizycznego lub wynajmujesz serwer wirtualny, na którym masz dostęp do roota), możesz rozważyć poniższe zalecenia.

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/. Subsequently, set the file and sub-directories permissions.

For the script to work properly, the write access to some directories is needed:

  • The /limesurvey/application/config directory requires Read & Write for saving the application configuration settings
  • The /limesurvey/tmp directory and its sub-directories are 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 set Read & Write permissions in order to enable pictures and media files upload
  • All other directories and files can be set to Read Only
Hint: supposing you've followed the recommendations above on owner/group, these settings can be applied by the following commands:

$ 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

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 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 file permissions

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.

Other security issues

The following are recommendations only. LimeSurvey in general is very safe without these additional measures. If you however collect extremely sensitive data, a little additional security can help:

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 (however, 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 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 which 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) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will now be much harder to guess the 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 caution.


Content Security Policy (CSP)

DISCLAIMER - The CSP provided here is an example only and is not meant to used verbatim. It is meant as a starting point and you MUST adapt it to your needs and test it thoroughly.

<IfModule mod_headers.c>
        Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
</IfModule>