Actions

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

From LimeSurvey Manual

Revision as of 06:07, 17 May 2015 by Nickdsl (talk | contribs) (Created page with "<div class="simplebox">File:help.png '''Подсказка:''' *В зависимости от конфигурации Вашего Web-сервера будет необ...")

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

Общее

LimeSurvey опирается на собственную систему безопасности, которая по-умолчанию активирована. Авторы данного программного обеспечения не несут никакой ответственности и не делают заявлений в отношении уместности или безопасности данной программы. Однако, мы подходим к вопросам безопасности довольно серьезно и быстро реагируем - если Вам известны проблемы в безопасности LimeSurvey, пожалуйста, дайте нам знать: info@limesurvey.org или заведите отчет об ошибке на нашем баг-трекере (пожалуйста, отметьте его как частный).

Права на файлы в Linux

Если вы пользуетесь Linux сервером, то требуется настройка прав файлов для обеспечения безопасной установки LimeSurvey.

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

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

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

При этом хочется отметить, что пользователь 'root' всегда сможет получить доступ к Вашим файлам (вне зависимости какие были выставлены права) т.к. это супер-администратор.

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

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

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

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

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

Возможная стратегия заключается в установке владельцем Вашей собственной учетной записи пользователя и группы владельца - учетной записи Web-сервера. Обычно группа Web-сервера содержит в себе только учетную запись Web-сервера (и, возможно, другую учетную запись Web-мастера).

Например, если Ваше имя пользователя 'myaccount' и имя пользователя Web-сервера 'apache' находящегося в группе 'apache', то в консоли Вы можете набрать следующую команду:

$ chown -R myaccount:apache limesurvey/

Затем настроим права для файлов и подкаталогов.

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

  • "/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для Чтения и Записи Вашим Web-сервером.
  • Директория upload/ и все подкаталоги также должны быть настроены для Чтения и Записи Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
  • Все остальные директории и файлы должны быть установлены в режим доступа Только чтение
Подсказка: для следования описанным рекомендациям можно выполнить следующие команды:

$ chmod -R o-r-w-x limesurvey/

$ chmod -R -w limesurvey/

$ chmod -R 770 limesurvey/tmp

$ chmod -R 770 limesurvey/upload

Настройка файловых разрешений на Web-сервере хостинга

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

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

  • "/limesurvey/tmp" директория и все подкаталоги используются для импорта/выгрузки файлов и должны быть настроены для Чтения и Записи Вашим Web-сервером.
  • Директория upload/ и все подкаталоги также должны быть настроены для Чтения и Записи Вашим Web-сервером, чтобы иметь возможность загружать картинки и media-файлы.
  • Все остальные директории и файлы должны быть установлены в режим доступа Только чтение
Подсказка:
  • В зависимости от конфигурации Вашего Web-сервера будет необходимо выдать права 755 или 777, чтобы сделать возможным запись туда сервером. Сначала попробуйте 755 - если не сработает, то обновите на 777.
  • Вы также можете убрать доступ на чтение с файла config.php для всех остальных установив на него права 750 - если ничего не работает, то попробуйте выставить 755.

Windows file permissions

If you are using a windows server your should ensure that the admin folder allows the owner of the webserver process to write files to this directory, however all other files can be set to read-only and execute.

Other security issues

The following are recommendations only. LimeSurvey in general is very safe without these additional measure. If you however collect extremely sensitive data a little additional security can help:

Access of config.php file

  You must update application/config/config.php only after first installation is done and work. You have to update existing config.php file.


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 (please note, that 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.

Another way to secure this information can be to put the certain 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 (aka public_html or www) folder. So you will use config.php, but have one line in it - a line that includes the file with ACTUAL configuration information (ex: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Remove all actual configuration information from /application/config/config.php, and paste it into the other file (configreal.php) that is included by /application/config/config.php. 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. This avoids having to change all the other files that include /application/config/config.php, since they can still include it, and it will include the real config information. However you will need to edit configreal.php and change the follow parameters

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

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

to use absolute directory paths to work properly. Example:

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

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

Also don't use "admin" as the default user. Go to your MySQL database (or other one if you installed LimeSurvey on different database) and change default user name "admin" to whatever you prefer (e.g. "admin_xyz"). It will be now much harder to guess 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 it with extreme care.