Wskazówki dotyczące bezpieczeństwa instalacji
From LimeSurvey Manual
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.
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.
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”
$ 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”
- 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
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ą.
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>