x

Основные главы

  1. LimeSurvey Cloud и LimeSurvey CE: сравнение
  2. LimeSurvey Cloud - Краткое руководство по началу работы
  3. Установка - LimeSurvey CE
  4. Как разработать хороший опрос (руководство)
  5. Начиная
  6. Администрирование LimeSurvey
  7. Опросы - Вступление
  8. Настройки опроса
  9. Меню опроса
  10. Структура опроса
  11. Вопросы — введение
  12. Группы вопросов - введение
  13. Опросы - управление
  14. Параметры панели инструментов опроса
  15. Многоязычный опрос
  16. Движок ExpressionScript — краткое руководство
  17. Не классифицированы и расширенные функции
  18. ЧаВо
  19. Устранение неполадок
  20. Обходные пути
  21. Лицензия
  22. Журнал изменений версий
  23. Плагины
 Actions

Руководство по безопасной установке

From LimeSurvey Manual

Эта страница, возможно, переведена машинным способом и может содержать ошибки. Показать английский оригинал · Улучшить этот перевод
This page is a translated version of the page Installation security hints and the translation is 100% complete.

__ОГЛАВЛЕНИЕ__

Общее

Обратите внимание: мы очень серьёзно относимся к вопросам безопасности и быстро на них реагируем. Поэтому, если вам известны какие-либо проблемы безопасности в 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, для защиты установки LimeSurvey необходимо соответствующим образом настроить права доступа к файлам.

Основные сведения о правах на файлы в Linux/*nix

Операционная система Linux/*nix - многопользовательская. Это означает, что кроме Вашей учетной записи другие пользователи могут параллельно с Вами находиться в системе и Вам необходимо позаботиться о правах которые Вы даете на файлы для других пользователей.

Подсказка: настройка прав доступа к файлам особенно важна для защиты конфигурационных файлов, содержащих критичные данные, например пароли.

Помните, что учётной записи «root» всегда будет предоставлен доступ к вашим файлам (независимо от установленных прав), так как это суперадминистратор.

Веб-сервер, на котором работает LimeSurvey, также запускается от имени определённого пользователя. В Linux это обычно пользователь «www», «www-data» (в Debian/Ubuntu), «apache» или «nobody». Однако некоторые хостинг-компании используют системы (например, suexec), позволяющие запускать скрипты LimeSurvey от имени вашего личного пользователя. Разумеется, пользователь веб-сервера должен иметь право читать файлы LimeSurvey. При этом лишь небольшая часть подкаталогов LimeSurvey должна быть доступна для записи пользователю веб-сервера.

Подсказка: очень полезно отозвать у пользователя веб-сервера право записи в те подкаталоги LimeSurvey, где оно не требуется. Даже если в LimeSurvey будет обнаружена уязвимость, основные файлы останутся защищены от несанкционированного изменения благодаря правам доступа файловой системы.

Установка прав в управляемой системе Linux

Если вы сами управляете конфигурацией веб-сервера и операционной системы (вы владелец физического сервера или арендуете виртуальный сервер с доступом root), воспользуйтесь рекомендациями ниже.

Сначала можно задать владельца и группу файлов LimeSurvey, чтобы упростить настройку прав доступа. Один из возможных вариантов — назначить владельцем файлов LimeSurvey ваше личное имя пользователя, а группой — группу веб-сервера. Обычно эта группа содержит только учётную запись веб-сервера (и, возможно, ещё одну учётную запись веб-мастера). Например, если ваше имя пользователя — «myaccount», а пользователь веб-сервера — «apache» из группы «apache», то в командной оболочке можно выполнить следующую команду: $ chown -R myaccount:apache limesurvey/. После этого настройте права доступа к файлам и подкаталогам.

Для корректной работы скрипта необходим доступ на запись в некоторые каталоги:

  • каталогу /limesurvey/application/config требуются права Чтение и запись для сохранения настроек конфигурации приложения;
  • каталог /limesurvey/tmp и его подкаталоги используются для импорта и загрузки файлов, поэтому для вашего веб-сервера им следует задать права Чтение и запись;
  • каталог upload/ и все его подкаталоги также должны иметь права Чтение и запись, чтобы можно было загружать изображения и медиафайлы;
  • всем остальным каталогам и файлам можно задать права Только чтение.

Настройка прав доступа к файлам на хостинге

Единую процедуру защиты веб-приложения в среде хостинга описать сложно, так как такие среды существенно различаются.

В случае управляемого сервера для корректной работы скрипта серверу нужен доступ на запись в некоторые каталоги:

  • каталог /limesurvey/tmp используется для импорта и загрузки файлов, поэтому для вашего веб-сервера ему следует задать права Чтение и запись;
  • каталог upload/ и все его подкаталоги также должны иметь для вашего веб-сервера права Чтение и запись, чтобы можно было загружать изображения и медиафайлы;
  • остальным каталогам и файлам следует задать права Только чтение.
Подсказка:
  • В зависимости от конфигурации веб-сервера для каталогов, доступных для записи, потребуется выполнить chmod с правами 755 или 777, чтобы веб-сервер мог в них писать. Сначала попробуйте 755, если не сработает — «повысьте» до 777.
  • Вы также можете попробовать закрыть чтение файла config.php для других пользователей, задав для него права 750; если не сработает — «повысьте» до 755.

Права доступа к файлам в Windows

Если вы используете сервер на Windows, убедитесь, что каталог admin позволяет владельцу процесса веб-сервера записывать в него файлы. Остальным файлам можно задать права только на чтение и выполнение.

Прочие вопросы безопасности

Всё перечисленное ниже носит лишь рекомендательный характер. В целом LimeSurvey очень безопасна и без этих дополнительных мер. Однако если вы собираете крайне конфиденциальные данные, небольшая дополнительная защита не помешает:

Использование SSL

Мы рекомендуем использовать SSL для защиты конфиденциальных данных опросов. Обычно SSL включается путём правильной настройки веб-сервера и использования SSL-сертификата. Если SSL включён, следует принудительно использовать SSL во всех случаях в общих настройках LimeSurvey. Кроме того, можно включить использование только «защищённых» (secure) cookie, изменив соответствующий параметр в config.php.

Доступ к файлу config.php

  Обновлять application/config/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»). Теперь угадать новое имя пользователя администратора будет гораздо сложнее. Помните, это одна из двух переменных, которые злоумышленники могут использовать для получения доступа. Пароль администратора — вторая переменная. Поэтому выбирайте их обе с максимальной осторожностью.

Content Security Policy (CSP)

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ — приведённая здесь политика CSP является лишь примером и не предназначена для использования без изменений. Это отправная точка: вы ОБЯЗАНЫ адаптировать её под свои потребности и тщательно протестировать.

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