Съвети за сигурност при инсталиране
From LimeSurvey Manual
Общи
LimeSurvey разчита на собствената си сигурност, която е активирана по подразбиране. Авторите на този софтуер не поемат отговорност и не предявяват претенции относно уместността или нивото на сигурност на този софтуер. Ние обаче приемаме проблемите със сигурността много сериозно и реагираме бързо. Ето защо, ако знаете за някакви проблеми със сигурността в LimeSurvey, моля, уведомете ни, като ни изпратите имейл на info@limesurvey.org или като отворите доклад за грешка в нашия [http:// bugs.limesurvey.org инструмент за проследяване на грешки] (моля, маркирайте го като частен).
Ограничение на уеб сървъра
Ако използвате apache, LimeSurvey включва различен htaccess файл за ограничение. проверете дали сте включили htaccess с AllowOverride
.
С друг уеб сървър или ако искате да използвате AllowOverride None
: трябва
- (опция) деактивиране на достъпа до всички файлове в приложение, защитени, рамка и теми/*/views
- деактивиране на достъпа до файлове, качени от потребител /upload/surveys/.*/fu_[a-z0-9]
- (опция) забранява достъпа до изпълнимия файл в директорията за качване
Можете да намерите пример за 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
$ 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
Задаване на разрешения за файлове на хостван уеб сървър
Като се има предвид трудността на стандартна процедура за защита на уеб приложение в хоствана среда, това е доста трудно, защото хостваните среди се различават по много начини.
В случай на управляван сървър сървърът се нуждае от достъп за запис до някои директории, за да може скриптът да работи правилно:
- Директорията /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 ги „пренасочва“ към конфигурационния файл, който се намира в не-уеб директория, която включва цялата реална конфигурационна информация . Въпреки това ще трябва да редактирате configreal.php и да промените следните параметри, за да използвате абсолютни пътища на директория, за да работят правилно:
'basePath' => dirname(dirname('''FILE''')),
'runtimePath' => dirname(dirname(dirname('''FILE'''))).DIRECTORY_SEPARATOR.'tmp'. DIRECTORY_SEPARATOR.'runtime',
[...]
'urlManager' => array(
[...]
'rules' => require('routes.php'),
[...]
);
Пример:
'basePath' => '/var/www/htdocs/limesurvey',
'runtimePath' => '/var/www/htdocs/limesurvey/tmp/runtime',
[...]
'urlManager' => array(
[...]
'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'),
[... ]
);
Също така, не използвайте "admin" като потребител по подразбиране. Отидете до вашата 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>