Инструменты пользователя

Инструменты сайта


ru:security-old

Устаревшие материалы по безопасности «ДокуВики»

Сюда сброшены материалы, бывшие на странице security до приведения её в соответствие с security. Они всё ещё могут оказаться полезными.

Угрозы безопасности

Чтобы быть в курсе выявленных проблем с безопасностью в «ДокуВики», пожалуйста, подпишитесь на рассылку проекта «ДокуВики» на freshmeat.net (для подписки нужен работающий адрес электронной почты).

Все выявленные проблемы с безопасностью можно найти в системе отслеживания ошибок.

Как сообщить о проблеме с безопасностью

Если вы нашли ошибку, связанную с безопасностью в «ДокуВики», пожалуйста, сообщите в первую очередь ведущему разработчику проекта (AndiAndreas Gohr
Andi

) через его личный электронный адрес, он указан на этой странице.

Если ошибка некритическая, вы так же можете создать заявку об ошибке, но она будет общедоступной!

Обеспечение безопасности «ДокуВики» во время установки

По умолчанию, при установке «ДокуВики» открыта всем для чтения и изменения. Как только вы установили «ДокуВики», возможно кто-то уже получил к ней доступ. Поэтому во время самой установки желательно ограничить доступ другим посетителям.

Если вы используете веб-сервер Apache, вы можете организовать такой доступ добавлением нижеследующих строк в начало файла .htaccess, находящегося в корне установки «ДокуВики»:

Deny from all
Allow from 192.168.1.1

Замените «192.168.1.1» на свой IP-адрес (с которого будете выполнять установки и настройку). Если вы не знаете своего IP-адреса, то его можно посмотреть, зайдя на WhatsMyIP.org

:!: Если ваш адрес используется и другими людьми (единый прокси школ или провайдеров типа AOL, локальная сеть и т. п.), то все компьютеры, использующие этот адрес, будут иметь доступ к «ДокуВики».

Не забудьте убрать добавленные в файл .htaccess строки прежде, чем вы запустите для всех свою вики.

Обеспечение безопасности при настройке «ДокуВики»

На следующие параметры конфигурационного файла следует обратить особое внимание при настройке «ДокуВики»:

fmode / dmode

(То есть разрешения создания файлов и папок.) Установите их как можно более закрытыми. Это важное условие обеспечения безопасности установки «ДокуВики»! Пожалуйста, прочитайте страницу о разрешениях.

Отключение вывода отладочных сообщений

(Требуется — слишком важная и потенциально опасная информация, чтобы разрешить её видеть всем)

В папке config «ДокуВики» исправьте файл conf/local.php (создайте, если его там нет) и добавьте строку:

$conf['allowdebug']  = 0;

Предотвращение копирования удалённого содержимого

Ссылки в вики на внешнее содержимое, например, на внешние картинки, заставляют ваш веб-сервер копировать эти картинки на ваш веб-сервер через специальный скрипт lib/exe/fetch.php в целях обеспечения нормальной производительности и возможности «на лету» менять размеры таких картинок. Существует возможность ограничить закачку из внешних источников по размеру файлов с помощью опции $conf['fetchsize'] (задаётся в байтах). Установка этой опции в 0 позволит не закачивать ничего извне, т. е. отключить кэширование.

Установка некоторых страниц вики в режим «только чтение»

Посмотрите этот раздел ЧаВО.

Другие настройки

В добавление к настройкам, перечисленным на этой странице, нижеперечисленные настройки также могут нарушить безопасность и/или конфиденциальность. Однако это неисчерпывающий список.

Общие настройки PHP

FIXME это должно быть объединено в config:php и ссылаться отсюда.

Нижеследующие является «хорошим тоном». Хорошее описание по общей защите PHP можно найти в Главе 3 Apache Security, также главу 3 можно бесплатно скачать в формате PDF отсюда.

Если вы запускаете «ДокуВики» и PHP на сервере, которым вы полностью управляете, то можно рассмотреть вариант использования т. н. chroot-«тюрьмы». Имеется много разрозненных руководств в сети, как это сделано, однако наиболее полным (точным) и эффективным, скорее всего, является Apache + Chroot + FastCGI + PHP FAQ.

Вы можете включить это в своём главном файле .htaccess, находящемся в корне — /home/yourname/www/.htaccess.

Отдельный файл ошибок

(Опционально это хорошая идея — чем больше информации вы получите об атакующем, тем лучше.)

Добавьте следующее в файл .htaccess, находящийся в корневой папке вашего сайта (т. е. /home/yourname/www/.htaccess – папка, которая отвечает на HTTP-запросы и содержит файлы index.php и doku.php).

# Disable display of public PHP error messages
php_flag display_errors "off"

# Log all PHP errors to a file in private directory (and not in the DokuWiki data dir either!)
# here you'd need to create the directory and the file then make sure the file has world write
# permissions
php_flag error_log "/home/yourname/logs/errors.log"

# Don't keep reporting the same error again and again (keep log file smaller)
php_flag ignore_repeated_errors On

# DokuWiki generates a lot of notices... best prevent reporting them
# in .htaccess files E_ALL, E_NOTICE have no effect, you must use the
# values from http://www.php.net/manual/en/function.error-reporting.php
# E_ALL & ~E_NOTICE => 2047 - 8 => 2039 (Note: E_ALL is different for 5.2.x and above, see
# http://www.php.net/manual/en/ref.errorfunc.php#errorfunc.constants.errorlevels.e-all)
php_flag error_reporting 2039

Вам нужно создать папку и файл ошибок, указанных выше. Это можно сделать (зайдя в шелл) примерно так:

$ mkdir ~/logs
$ touch ~/logs/errors.log
$ chmod 662 ~/logs/errors.log

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

$ tail -100 ~/logs/errors.log > ~/logs/errors.log

Эта команда оставит в файле только последние 100 строк, удалив все остальное — вы можете добавить эту команду, к примеру, в еженедельную обработку cron.

Включение safe_mode и open_basedir

Инструкции для «ДокуВики», работающей под Linux/Unix и Apache. Тестировалось на CentOS 4.4

Два параметра очень важны для безопасности PHP: 1)

  • safe_mode — ограничивает выполнение системных команд из PHP (работает в PHP3, PHP4, PHP5);
  • open_basedir — ограничивает скрипты PHP открытием файлов только из определенной папки.

Добавьте следующие строки в свой httpd.conf, также иногда их надо добавить и в файл /wiki/.htaccess тоже:

# DokuWiki is installed in       : /var/www/html/wiki/
# your PHP pear packages are in  : /usr/share/pear/
# PHP is installed in            : /usr/lib/php4/
# use a new tmp directory in     : /var/www/html/wiki/tmp/
<Directory /var/www/html/wiki>
    php_admin_flag safe_mode On
    php_admin_value safe_mode_exec_dir "/usr/lib/php4"
    php_admin_value safe_mode_include_dir "/usr/share/pear/"
    php_admin_value open_basedir "/var/www/html/wiki/:/var/www/wiki/:/usr/share/pear/"
    php_admin_value upload_tmp_dir "/var/www/html/wiki/tmp/"
</Directory>

Затем вам нужно настроить все разрешение папок вики, например, следующей Linux/Unix-командой:

# chown apache:apache -R /var/www/html/wiki/

Если вы не имеете аккаунта с шеллом или используете ftp для заливки «ДокуВики», все разрешение должны быть настроены автоматически. В этих случаях не нужно запускать команду chown.

FIXME Is the above line something one has to do with telnet? My presence provider doesn't provide a command line… Over-all, all I got out of this page was to delete the .bin directory and moving the ./data directory. By the way, I've been unable to delete the old ./data on the server with FileZilla; it tells me «directory not empty» and when I go to the subdirectories, and to the files in them, all my attempts to delete seem to result in PWD commands. No apparent way to get rid of them. The rest of the stuff on this page either didn't work for me, or was too obscure to follow. Need to explain things with dummies in mind. We dummies are a majority ;-)

Don't know whether there are ftp-clients with the ability to change owner and group attributes as with chown on the command line, but probably your provider will not grant you the right to change owner and group attributes of your files. This also may be the reason why you can't get rid of 'your' files in the data dir (presumably they aren't yours ;-) ). If you set the fmode/dmode param too restrictive (lesser okt. values than 666/777, esp. in 3rd position) you won't be able to del files written and hence owned by the webserver (i.e. files created via DokuWiki) cf. permissions, fmode and hosted /Leif

Assuming your webserver is Apache and is running as the user Apache. This is needed because safe_mode runs the PHP script as the user that is the owner of the .php files.

1)
Примечание: использование safe_mode / open_basedir предмет дискуссий. Fundamentally it is not 100% secure (lots of workarounds such as DokuWiki's own safemode bypass) and it sometimes complicates configurations / installations of some applications, etc. See PHP's safe_mode or how not to implement security. Furthermore, safe mode has been dropped from PHP6, it's already gone from the PHP6 CVS branch, if general you're probably better of chrooting your PHP (see link in this page here)
ru/security-old.txt · Последние изменения: 2015-09-07 09:21 — 109.110.43.14