Actions

Installation security hints/ru: Difference between revisions

From LimeSurvey Manual

(Created page with "'urlManager' => array( [...] 'rules' => require('/var/www/htdocs/limesurvey/config/routes.php'), [...] ); </syntaxhighlight>")
(Created page with "Также не используйте "admin" пользователем по-умолчанию. Отправляйтесь в Вашу MySQL базу данных (или...")
Line 110: Line 110:
</syntaxhighlight>
</syntaxhighlight>


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.
Также не используйте "admin" пользователем по-умолчанию. Отправляйтесь в Вашу MySQL базу данных (или другую, если Вы развернули LimeSurvey на какой либо другой базе) и измените имя пользователя по-умолчанию "admin" на какое угодно (например "admin_xyz"). Теперь подобрать имя пользователя администратора будет гораздо сложнее. Пароль администратора - это другая переменная. Выбирайте его с особой тщательностью.

Revision as of 06:31, 17 May 2015

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

Общее

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

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

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

Ниже были приведены только рекомендации. Сама по себе LimeSurvey и так довольно безопасная система, даже без применения указанных мер. Однако, если Вы обрабатываете исключительно конфиденциальные данные, то безопасности никогда не бывает мало и следующее должно Вам помочь:

Доступ к config.php

  Вы должны обновить application/config/config.php только когда все установлено и работает. Вы должны обновить следующие config.php файлы.


/application/config/config.php - файл содержит имя пользователя и пароль к базе данных Вашего сервера. Вы рискуете заполучить определенные проблемы безопасности, если в данном файле указан пользователь с высоким уровнем административных прав к Вашей базе. В случае возникновения каких либо ошибок, содержимое данного файла может быть отображено на экране браузера, и конфиденциальные данные могут быть скомпрометированы(хотя, это маловероятный сценарий). Лучшим вариантом будет указать в данном файле пользователя, который имеет полномочия лишь внутри базы данных limesurvey.

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