Actions

Installation security hints/pl: Difference between revisions

From LimeSurvey Manual

(Created page with "=== Dostęp do pliku config.php ===")
(Created page with "'''ZASTRZEŻENIE — Podany tutaj CSP jest jedynie przykładem i nie należy go używać dosłownie. Jest to punkt wyjścia i MUSISZ dostosować go do swoich potrzeb i dokład...")
 
(10 intermediate revisions by the same user not shown)
Line 86: Line 86:
=== Dostęp do pliku config.php ===
=== Dostęp do pliku config.php ===


{{Alert| You must update application/config/'''config.php''' only after the first installation is done and it works.}}  
{{Alarm| Musisz zaktualizować aplikację/config/'''config.php''' dopiero po przeprowadzeniu pierwszej instalacji i zadziałaniu.}}  


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.
Plik /application/config/config.php zawiera nazwę użytkownika i hasło do serwera bazy danych. Stwarza to pewne problemy związane z bezpieczeństwem, szczególnie jeśli używasz loginu, który ma dostęp administracyjny na wysokim poziomie do Twojej bazy danych. W przypadku wystąpienia błędu podczas zwracania zawartości tego pliku PHP do przeglądarki użytkownika, hasło do bazy danych i inne szczegóły mogą zostać naruszone (jest to jednak bardzo mało prawdopodobny scenariusz). Najlepszym sposobem na zminimalizowanie ryzyka jest ustawienie specjalnego loginu, który ma określone uprawnienia tylko do Twojej bazy danych LimeSurvey.


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: <code><?php return include("/home/hostfolder/safedata/configreal.php"); ?></code>). 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.  
Innym sposobem zabezpieczenia tych informacji może być umieszczenie informacji z pliku /application/config/config.php w katalogu innym niż internetowy, tj. dla użytkowników Apache jest to katalog znajdujący się nad folderem htdocs (znanym również jako public_html lub www) . Zasadniczo użyjesz pliku config.php, ale będziesz miał w nim jedną linię - linię zawierającą plik z RZECZYWISTYMI informacjami konfiguracyjnymi (np.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Usuń wszystkie aktualne informacje konfiguracyjne z /application/config/config.php i wklej je do innego pliku (configreal.php), który jest wymieniony w pliku /application/config/'''config.php'''. Ten inny plik powinien znajdować się w katalogu innym niż internetowy. Wtedy /application/config/config.php nie będzie zawierał haseł do baz danych itp. - tylko nazwę pliku, który '''''''''''' zawiera informacje o bazie danych.  


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:
Pozwala to uniknąć konieczności zmiany wszystkich innych plików, które zawierają /application/config/config.php, ponieważ config.php „przekierowuje je” do pliku konfiguracyjnego znajdującego się w katalogu innym niż internetowy, który zawiera wszystkie rzeczywiste informacje konfiguracyjne . Będziesz jednak musiał edytować plik configreal.php i zmienić następujące parametry, aby używać bezwzględnych ścieżek katalogów do prawidłowego działania:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">


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


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


Example:
Przykład:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
Line 115: Line 115:


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


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.
Ponadto „nie używaj „admin” jako domyślnego użytkownika”. Przejdź do swojej bazy danych MySQL (lub tej, w której zainstalowałeś LimeSurvey) i zmień domyślną nazwę użytkownika „admin” na dowolną (np. „admin_xyz”). Odgadnięcie nowej nazwy użytkownika administratora będzie teraz znacznie trudniejsze. Pamiętaj, że jest to jedna z dwóch zmiennych, których intruzi mogą użyć, aby uzyskać dostęp. Hasło administratora to druga zmienna. Dlatego wybieraj oba z dużą ostrożnością.




=== Content Security Policy (CSP) ===
=== Polityka bezpieczeństwa treści (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.'''
'''ZASTRZEŻENIE — Podany tutaj CSP jest jedynie przykładem i nie należy go używać dosłownie. Jest to punkt wyjścia i MUSISZ dostosować go do swoich potrzeb i dokładnie przetestować.'''
<nowiki><IfModule mod_headers.c>
<nowiki><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"
Nagłówek zawsze ustawiony na Politykę bezpieczeństwa treści „default-src „self”; script-src „self” „unsafe-inline” „unsafe-eval”; style-src „self” „unsafe-inline”; base-uri „none” '; form-action 'self'; przodkowie ramek 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i "
</IfModule></nowiki>
</IfModule></nowiki>

Latest revision as of 07:51, 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.

Możesz najpierw ustawić właściciela i grupę plików LimeSurvey, co ułatwi konfigurację uprawnień do plików. Możliwą strategią jest ustawienie właściciela plików LimeSurvey na swoją osobistą nazwę użytkownika, a grupy plików LimeSurvey na grupę serwera WWW. Zwykle ta grupa serwerów WWW zawiera tylko konto serwera WWW (i ewentualnie inne konto webmastera). Na przykład, jeśli Twoja nazwa użytkownika to „moje konto”, a użytkownikiem serwera WWW jest „Apache” w grupie „Apache”, wówczas z poziomu powłoki możesz użyć następującego polecenia: $ chown -R myaccount:apache limesurvey/ . Następnie ustaw uprawnienia do plików i podkatalogów.

Aby skrypt działał poprawnie, potrzebne są uprawnienia do zapisu w niektórych katalogach:

  • Katalog /limesurvey/application/config wymaga opcji „Odczyt i zapis” w celu zapisania ustawień konfiguracyjnych aplikacji
  • Katalog /limesurvey/ Katalog tmp i jego podkatalogi są używane do importowania/przesyłania i powinny być ustawione na „Odczyt i zapis” dla Twojego serwera WWW
  • Katalog/przesyłania i wszystkie jego podkatalogi muszą mieć także ustawioną opcję „Odczyt” & Zapis”, aby umożliwić przesyłanie zdjęć i plików multimedialnych
  • Wszystkie pozostałe katalogi i pliki można ustawić jako „Tylko do odczytu”
Wskazówka: zakładając, że zastosowałeś się do powyższych zaleceń dotyczących właściciela/grupy, ustawienia te można zastosować za pomocą następujących poleceń:

$ 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

Ustawianie uprawnień do plików na hostowanym serwerze internetowym

Biorąc pod uwagę trudność standardowej procedury zabezpieczania aplikacji internetowej w środowisku hostowanym, jest to raczej trudne, ponieważ środowiska hostowane różnią się pod wieloma względami.

W przypadku serwera zarządzanego serwer potrzebuje dostępu do zapisu w niektórych katalogach, aby skrypt działał poprawnie:

  • Katalog /limesurvey/tmp jest używany do importowania/przesyłania i powinien być ustawiony na „Odczyt i zapis” ' dla Twojego serwera WWW
  • Katalog przesyłania/i wszystkie jego podkatalogi muszą także mieć opcję „Odczyt i zapis” dla Twojego serwera WWW, aby umożliwić przesyłanie zdjęć i plików multimedialnych
  • Pozostałe katalogi i pliki powinny być ustawione na „Tylko do odczytu”
Wskazówka:
  • W zależności od konfiguracji serwera WWW, będziesz musiał zmienić uprawnienia do zapisywalnych folderów na 755 lub 777, aby umożliwić zapis dla Internetu serwer. Spróbuj najpierw 755, jeśli to nie zadziała, „uaktualnij” do 777
  • Możesz także spróbować usunąć dostęp innych użytkowników do odczytu config.php, ustawiając uprawnienia tego pliku na 750 - jeśli to nie zadziała, „uaktualnij” „do 755

Uprawnienia do plików systemu Windows

Jeśli używasz serwera Windows, powinieneś upewnić się, że folder admin umożliwia właścicielowi procesu serwera WWW zapisywanie plików w tym katalogu. Pozostałe pliki można ustawić jako tylko do odczytu i wykonywać.

Inne problemy bezpieczeństwa

Poniżej znajdują się jedynie zalecenia. Ogólnie rzecz biorąc, LimeSurvey jest bardzo bezpieczny bez tych dodatkowych środków. Jeśli jednak zbierasz wyjątkowo wrażliwe dane, pomocne może być dodatkowe zabezpieczenie:

Użycie protokołu SSL

Generalnie zalecamy korzystanie z protokołu SSL w przypadku wrażliwych danych ankietowych. Zwykle włączasz SSL, poprawnie konfigurując serwer WWW i używając certyfikatu SSQL. Jeśli włączyłeś SSL, powinieneś cały czas wymuszać SSL w ustawienia globalne LimeSurvey. Dodatkowo, możesz ustawić używanie „bezpiecznych” plików cookie jedynie poprzez edycję odpowiednia opcja w config.php.

Dostęp do pliku config.php

Template:Alarm

Plik /application/config/config.php zawiera nazwę użytkownika i hasło do serwera bazy danych. Stwarza to pewne problemy związane z bezpieczeństwem, szczególnie jeśli używasz loginu, który ma dostęp administracyjny na wysokim poziomie do Twojej bazy danych. W przypadku wystąpienia błędu podczas zwracania zawartości tego pliku PHP do przeglądarki użytkownika, hasło do bazy danych i inne szczegóły mogą zostać naruszone (jest to jednak bardzo mało prawdopodobny scenariusz). Najlepszym sposobem na zminimalizowanie ryzyka jest ustawienie specjalnego loginu, który ma określone uprawnienia tylko do Twojej bazy danych LimeSurvey.

Innym sposobem zabezpieczenia tych informacji może być umieszczenie informacji z pliku /application/config/config.php w katalogu innym niż internetowy, tj. dla użytkowników Apache jest to katalog znajdujący się nad folderem htdocs (znanym również jako public_html lub www) . Zasadniczo użyjesz pliku config.php, ale będziesz miał w nim jedną linię - linię zawierającą plik z RZECZYWISTYMI informacjami konfiguracyjnymi (np.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Usuń wszystkie aktualne informacje konfiguracyjne z /application/config/config.php i wklej je do innego pliku (configreal.php), który jest wymieniony w pliku /application/config/'config.php. Ten inny plik powinien znajdować się w katalogu innym niż internetowy. Wtedy /application/config/config.php nie będzie zawierał haseł do baz danych itp. - tylko nazwę pliku, który ''''''' zawiera informacje o bazie danych.

Pozwala to uniknąć konieczności zmiany wszystkich innych plików, które zawierają /application/config/config.php, ponieważ config.php „przekierowuje je” do pliku konfiguracyjnego znajdującego się w katalogu innym niż internetowy, który zawiera wszystkie rzeczywiste informacje konfiguracyjne . Będziesz jednak musiał edytować plik configreal.php i zmienić następujące parametry, aby używać bezwzględnych ścieżek katalogów do prawidłowego działania:

'basePath' => nazwakatalogu(nazwakatalogu('''PLIK'')),
'runtimePath' => nazwakatalogu(nazwakatalogu(nazwakatalogu('''PLIK''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]

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

Przykład:

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

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

Ponadto „nie używaj „admin” jako domyślnego użytkownika”. Przejdź do swojej bazy danych MySQL (lub tej, w której zainstalowałeś LimeSurvey) i zmień domyślną nazwę użytkownika „admin” na dowolną (np. „admin_xyz”). Odgadnięcie nowej nazwy użytkownika administratora będzie teraz znacznie trudniejsze. Pamiętaj, że jest to jedna z dwóch zmiennych, których intruzi mogą użyć, aby uzyskać dostęp. Hasło administratora to druga zmienna. Dlatego wybieraj oba z dużą ostrożnością.


Polityka bezpieczeństwa treści (CSP)

ZASTRZEŻENIE — Podany tutaj CSP jest jedynie przykładem i nie należy go używać dosłownie. Jest to punkt wyjścia i MUSISZ dostosować go do swoich potrzeb i dokładnie przetestować. <IfModule mod_headers.c> Nagłówek zawsze ustawiony na Politykę bezpieczeństwa treści „default-src „self”; script-src „self” „unsafe-inline” „unsafe-eval”; style-src „self” „unsafe-inline”; base-uri „none” '; form-action 'self'; przodkowie ramek 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i " </IfModule>