Съвети за сигурност при инсталиране
From LimeSurvey Manual
Общи
Моля, имайте предвид, че приемаме проблемите със сигурността много сериозно и реагираме бързо. Затова, ако знаете за някакви проблеми със сигурността в LimeSurvey, моля, уведомете ни, като отворите доклад за грешка в нашия инструмент за проследяване на грешки (моля, маркирайте грешката със степен на сериозност или категория „security“).
За повече подробности вижте нашата Политика за сигурност относно докладването на проблеми/уязвимости в сигурността.
Ограничение на уеб сървъра
LimeSurvey се предлага с .htaccess файлове, които блокират уеб достъпа до файлове и директории, използвани само на сървъра. Ако използвате Apache, уверете се, че тези файлове са разрешени чрез AllowOverride All и че mod_rewrite е включен.
Други уеб сървъри, като nginx или IIS, игнорират .htaccess файловете, както и Apache с AllowOverride None. В такъв случай забранете уеб достъпа до следните елементи в конфигурацията на уеб сървъра:
- директориите application, vendor, docs, locale, modules и tmp/runtime
- директориите conf, core, doc, integration, lang, lib и tpl в assets/packages/kcfinder
- файловете setdebug.php и open-api-gen.php
- файловете за разработка в основната директория на LimeSurvey: composer.json, composer.lock, package.json, yarn.lock, gulpfile.js, phpunit.xml, psalm*.xml, phpci.yml, phpcs.ruleset.xml, publiccode.yml, manifest.yml, CONTRIBUTING.md, README.md и SECURITY.md
- скритите файлове и директории (името им започва с точка), с изключение на .well-known
- лог файловете (*.log)
- файловете, качени от респондентите: файловете, започващи с fu_ в upload/surveys и нейните поддиректории
Също така се уверете, че скриптове в директорията upload никога не могат да бъдат изпълнени, например PHP, Perl, Python или shell скриптове.
Пакетът на LimeSurvey съдържа също документация, примери и тестове на включените библиотеки, например в директориите vendor и docs. Не изтривайте тези файлове: следващото обновяване ги връща. Вместо това забранете уеб достъпа до директориите, както е описано по-горе.
Пример за nginx можете да намерите на страницата Примерна конфигурация на LimeSurvey за nginx.
Разрешения за файлове в Linux
Ако използвате Linux сървър, за да защитите вашата инсталация на LimeSurey, се изисква съответно задаване на разрешения за файлове.
Основни факти за разрешенията за файлове в Linux/*nix
Операционната система Linux/*nix е многопотребителска. Това означава, че освен вашия личен акаунт, други потребителски акаунти може да съществуват в системата и трябва да внимавате какви разрешения давате на други потребители.
Имайте предвид, че 'root' акаунтът винаги ще получава разрешение за достъп до вашите файлове (без значение какви разрешения за файлове сте задали), тъй като той е потребител със супер администратор.
Уеб сървърът (който изпълнява LimeSurvey) също работи под дадена самоличност (потребител). В Linux това обикновено е „www“, „www-data“ (в Debian/Ubuntu), „apache“ или „никой“ потребител. Въпреки това, някои хостинг компании използват системи (като suexec), които правят възможно стартирането на LimeSurvey скриптове с вашия личен потребител. Разбира се, потребителят на уеб сървъра трябва да има право да чете файлове на LimeSurvey. Въпреки това, само малка част от поддиректориите на LimeSurvey трябва да могат да се записват от потребителя на уеб сървъра.
Задаване на разрешения за файлове на самоуправляваща се Linux система
Ако управлявате вашия уеб сървър и конфигурация на операционната система (вие сте собственик на физическия сървър или наемате виртуален сървър, на който имате root достъп), можете да вземете предвид следните препоръки по-долу.
Можете първо да зададете собственика и групата на вашите LimeSurvey файлове, така че това да улесни настройката на разрешенията за файлове. Възможна стратегия е да зададете собственика на файловете на LimeSurvey на вашето лично потребителско име, а групата на файловете на LimeSurvey на групата на уеб сървъра. Обикновено тази група уеб сървъри съдържа само акаунта на уеб сървъра (и евентуално друг акаунт на уеб администратора). Например, ако вашето потребителско име е „myaccount“ и потребителят на уеб сървъра е „apache“ в групата „apache“, тогава от достъп до обвивка можете да използвате следната команда: $ chown -R myaccount:apache limesurvey/ . След това задайте разрешения за файлове и поддиректории.
За да работи правилно скриптът, е необходим достъп за запис до някои директории:
- Директорията /limesurvey/application/config изисква „Четене и запис“ за запазване на настройките за конфигурация на приложението
- Директорията /limesurvey/ tmp директорията и нейните поддиректории се използват за импортиране/качване и трябва да бъдат настроени на „Четене и писане“ за вашия уеб сървър
- Директорията за качване/директории и всички нейни поддиректории също трябва да имат зададена „Четене“ & Write разрешения, за да се даде възможност за качване на снимки и медийни файлове
- Всички други директории и файлове могат да бъдат зададени на Read Only
Задаване на разрешения за файлове на хостван уеб сървър
Като се има предвид трудността на стандартна процедура за защита на уеб приложение в хоствана среда, това е доста трудно, защото хостваните среди се различават по много начини.
В случай на управляван сървър сървърът се нуждае от достъп за запис до някои директории, за да може скриптът да работи правилно:
- Директорията /limesurvey/tmp се използва за импортиране/качване и трябва да бъде настроена на „Четене и писане“ ' за вашия уеб сървър
- Директорията за качване/директориите и всички нейни поддиректории също трябва да имат „Четене и запис“ за вашия уеб сървър, за да се даде възможност за качване на снимки и медийни файлове
- Другите директории и файловете трябва да са настроени на „Само за четене“
- В зависимост от конфигурацията на вашия уеб сървър, ще трябва да chmod правата върху папките с възможност за запис на 755 или 777, за да направите запис в мрежата сървър. Първо опитайте 755, ако не работи, надстройте до 777
- Можете също да опитате да премахнете достъпа за четене на други потребители до config.php, като зададете разрешенията на този файл на 750 - ако не работи, надстройте до 755
Разрешения за файлове на Windows
Ако използвате Windows сървър, трябва да се уверите, че администраторската папка позволява на собственика на процеса на уеб сървъра да записва файлове в тази директория. Останалите файлове могат да бъдат настроени само за четене и изпълнение.
Други проблеми със сигурността
Следващите са само препоръки. Като цяло LimeSurvey е много безопасен без тези допълнителни мерки. Ако обаче събирате изключително чувствителни данни, малко допълнителна сигурност може да помогне:
Използване на SSL
Обикновено препоръчваме използването на SSL за чувствителни данни от проучвания. Обикновено активирате SSL, като конфигурирате правилно вашия уеб сървър и използвате SSQL сертификат. Ако сте активирали SSL, трябва да налагате SSL през цялото време от глобалните настройки на LimeSurvey. Освен това можете да зададете да използвате само „защитени“ бисквитки, като редактирате съответната опция в config.php.
Достъпът до файла config.php
Файлът /application/config/config.php съдържа потребителско име и парола за вашия сървър на база данни. Това създава определени проблеми със сигурността, особено ако използвате потребителско име, което има високо ниво на административен достъп до вашата база данни. В случай на някаква грешка при връщане на съдържанието на този PHP файл в браузъра на потребителя, паролата на вашата база данни и други подробности може да бъдат компрометирани (това обаче е много малко вероятен сценарий). Най-добрият начин да минимизирате риска е да настроите конкретно влизане, което има конкретни права само за вашата база данни LimeSurvey.
Друг начин за защита на тази информация може да бъде да поставите информацията от файла /application/config/config.php в не-уеб директория, т.е. за потребителите на Apache това е директорията над папката htdocs (известна също като public_html или www) . По принцип ще използвате config.php, но ще имате един ред в него - ред, който включва файла с ДЕЙСТВИТЕЛНА конфигурационна информация (напр.:<?php return include("/home/hostfolder/safedata/configreal.php"); ?> ). Премахнете цялата информация за действителната конфигурация от /application/config/config.php и я поставете в другия файл (configreal.php), който е споменат във файла /application/config/config.php''. Този друг файл трябва да се намира в директория, която не е уеб. След това /application/config/config.php няма да съдържа пароли за бази данни и т.н. - само името на файла, който НАПРАВЯВА съдържа информация за базата данни.
Това избягва необходимостта да променяте всички други файлове, които включват /application/config/config.php, тъй като config.php ги „пренасочва“ към конфигурационния файл, който се намира в не-уеб директория и съдържа цялата реална конфигурационна информация.
Също така не използвайте „admin“ или „administrator“ като потребител по подразбиране. Отидете в своята MySQL база данни (или в тази, в която сте инсталирали LimeSurvey) и променете потребителското име по подразбиране „admin“ на каквото предпочитате (напр. „admin_xyz“). Така ще бъде много по-трудно да се познае новото потребителско име на администратора. Не забравяйте, че това е една от двете променливи, които нарушителите могат да използват, за да получат достъп. Паролата на администратора е другата променлива. Затова избирайте и двете с изключително внимание.
Правила за сигурност на съдържанието (CSP)
ОТКАЗ ОТ ОТГОВОРНОСТ - Предоставеният тук CSP е само пример и не е предназначен да се използва дословно. Той е замислен като отправна точка и ТРЯБВА да го адаптирате към вашите нужди и да го тествате щателно. <IfModule mod_headers.c> Header винаги задава 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>