Введение
Эта глава не отменяет Вам необходимость самостоятельного увеличения знаний сетевой безопасности. Она лишь описывают минимально необходимые действия для обеспечения защиты сервера, но не сможет предусмотреть всего, что может произойти. Проявите предусмотрительность и обеспечьте комарносонеподточительность вашего сервера. И помните, — небольшая паранойя может оказаться в вопросе безопасности будет весьма кстати.
Важно обеспечить некоторые аспекты безопасности вокруг вашего сервера. Иначе злоумышленники могут внести изменения в ваш сервер, получить доступ к конфиденциальной информации, сломать или даже удалить полностью.
Обычно основная проблема — это то, что скрипты обычно запускаются на UNIX машинах под пользователем nobody, но серверу необходимо, чтобы веб-сервер имел доступ к файлам конфигурации. Тем не менее, файлы вашего сервера обычно принадлежат реальному пользователю. Единственный способ — это запускать скрипты как nobody, с правами на доступ и запись, только если пользователь дал read-write права на это.
Как Вы можете себе представить, это создает массу дыр в безопасности, которые еще предстоит залатать. Есть различные методы действий, зависящие от того, запущен ли ваш сервер на выделенном или коллективном сервере (то есть, другие пользователи могут получить доступ к вашим файлам через telnet или ftp)
Другая потенциальная дыра в безопасности — то, что кто-то может отгадать ваш пароль на admin.php3. Ограничить доступ к вашим административным функциям — это то, что нужно сделать независимо от того, с каким типом сервера Вы имеете дело.
Когда стоит вопрос о безопасности, Вы всегда должны быть готовы к самому худшему. (Валидол в кармане?) Если возможно, используйте таблицы сервера в отдельной базе, созданной исключительно для него и сделайте ей логин и пароль, который бы отличался от других логинов и паролей на других базах данных. Если Вы это сделаете, то самое страшно, что может произойти — это то, что Вы потеряете форум (но ведь Вы же регулярно делаете резервные копии, не так ли?). В противном случае, Вы можете потерять ценную коммерческую информацию, или же — вообще весь сайт полностью, если он у Вас создается автоматически, на основе информации из базы данных.
Все примеры, которые указаны ниже, ориентированы на то, что у вас используется Apache в качестве веб-сервера. Если же у Вас какая-то другая версия веб-сервера, то Вам придется использовать эти данные как отправную точку, чтобы обеспечить аналогичные меры безопасности. большинство примеров подразумевает, что Вы имеет возможность управлять доступом через .htaccess на уровне каталогов. Если нет, то Вам придется воспользоваться другим провайдером.
Выделенный сервер
Если Вы доверяете пользователям, которые имеют логины для доступа через telnet/ftp и т.д., то задача защиты Phorum значительно упрощается. Все, что нужно сделать — запретить доступ к файлам конфигурации через браузер. Если пользователь наберет в браузере что-то вроде «http://yourserver.com/include/hosting.php3», он не должен увидеть содержимое файла. Есть как минимум 3 способа осуществления этого:
Способ 1.
Переименовать расширение файла на какое-то другое, которые парсится PHP. Это может быть .php3, .php, .phtml или какой-то еще нестандартный тип, который прописан у Вас на сервере. Если только в какой-то момент PHP прекратит обрабатывать это расширение, то этот файл можно будет прочитать. Правда, форум тоже не будет в это время, скорее всего, работать. Если Вы выбираете этот вариант, то Вам нужно поменять строки в common.inc:
$inf_file=»$inf_path».»forums.inf»;
$inf_back=»$inf_path».»forums.bak.inf»;
на:
$inf_file=»$inf_path».»forums.inf.php3″;
$inf_back=»$inf_path».»forums.bak.php3″;
где «forums.inf.php3» и «forums.bak.php3» включают то расширение, которые нормально парсится PHP
Способ 2.
Запретите доступ к файлам, используя директивы apache в файле «.htaccess» (или в другом, если у Вас другой web-сервер), размещенном в той же директории, где установлен Phorum . Вам нужно будет добавить следующие строки:
Order Deny,Allow
Deny From All
Order Deny,Allow
Deny From All
Вы должны поместить примерно такие же строки в файле для всех других файлов конфигурации, или файлов, содержащих секретную информацию.
Этот метод имеет примерно такие же минусы, как и первый. Если Вы когда-то потеряете привилегии использования .htaccess, то ваши файлы можно будет прочитать через браузер, но в то же время Phorum будет работать нормально и ничего особенно страшного произойти не должно.
Способ 3.
Перенесите файлы за пределы папки, достижимой через http://. Это можно сделать в 2 действия:
a) Создайте директорию вне дерева достижимого через http:// и дайте ей права на чтение-запись. (chmod 707). Если Вы не знаете, как это сделать, то советую прочитать руководство по Unix, лишнем не будет.
Выглядеть это будет примерно так:
cd ~
mkdir .Phorum
chmod 707 .Phorum
b) изменитее файл common.inc в подкаталоге, где установлен Phorum,изменив переменную $inf_path (в самом конце файла):
$inf_path=»/your/home/directory/.Phorum/»;
Shared Server Security. Сервер с коллективным доступом.
Если Вы хотите запускать Phorum на общественном сервере, то Вам совершенно точно нужно подумать над тем, как спрятать ваши скрипты (если конечно злобный провайдер Вам позволит). В таком случае проигнорируйте этот шаг и просто выполните chmod 700 все файлы вашего форума. (Чтобы быть уверенным, что inf файлы записываются с маской 700, Вы можете добавить строку «umask(0077);» в admin.php3 скрипт около начала функции writefile().)
Это означает, что все php3 скрипты должны запускаться под вашим ID, а не под используемым по умолчанию apache (nobody).
Дело в том, что, независимо от того, насколько хорошо Вы спрячете скрипт (например, в директории, которая chmod 711), любой пользователь на сервере может создать скрипт, который будет запускаться под «nobody», который в свою очередь сможет изменить или удалить ваши файлы конфигурации.
Доступ к файлам конфигурации также страшен тем, что они могут дать пользователю доступ к вашей базе данных, а это может оказаться несколько больше, чем просто файлы Phorum.
На сервере виртуального хостинга Вы должны договориться, чтобы он разрешил запуск wrapper для PHP-скриптов. Если у Вас не получится договориться, то есть шанс, что какой-то умник сможет прочитать ваши файлы, особенно, если Вы используете стандартные имена файлов и каталогов.
Защита скрипта.
Если Вы используете apache, это не сложно. Вам нужно скопировать cgi версию php3 в cgi-bin подкаталог для вашего сервера. Далее нужно добавить строку Addtype в .htaccess, который Вы разместите там, где установлен Phorum
AddType application/x-httpd-wphp php3
и установить обработку этого нового типа данных.
Action application/x-httpd-wphp /cgi-sys/php-cgiwrap/username/php3.cgi
В этом случае php-cgiwrap является wrapper скриптом, и он запускает PHP парсер с правами пользователя в соответствующей директории cgi-bin.
Установите соответствующие права:
Все файлы, кроме .htaccess и папки с картинками (которую веб-серверу необходимо читать напрямую) должным быть обработаны chmod 600. .htaccess файл должен иметь права chmod 604, и, наконец, подкаталог с картинками chmod 705. Файлы в подкаталоге с картинками могут быть chmod 604.
Красота этого метода в том, что к вашим файлам нельзя будет обращаться, а форум будет работать как часы.
Защита скрипта администратора
По умолчанию запуск скрипт администрирования не возможен, так как у него расширение стоит не то. Вы должны защитить этот файл. Для начала, чтобы он заработал, его нужно переименовать. Вам нужно действительно немного уделить внимания, потому что авторы Phorum и никто другой не будет нести ответственность, если кто-то получит доступ к файлу администратора и навредит Вам.
Доступ к admin.php3 можно запретить 2 способами. Оба примерно одинаковы в надежности, так что Вы можете выбрать тот, который Вам приглянется. В данном примере подразумевается, что Вы храните имена юзеров в папке webaccess, отличной от домашней директории. Самое простое — воспользоваться утилитой htpasswd
Файлы passwd и passwd.group должны быть доступны на чтение анонимусу (chmod 604), чтобы можно было прочитать файл. Пароли в файлах криптованы, но все же не стоит выкладывать их в папку, доступную через http://, чтобы злобные хакеры не проводили над ними свои грязные эксперименты.
Действие 1
Ограничьте доступ по имени файла. Добавьте следующие строки в вашем .htaccess файле.
AuthUserFile /usr/users/yourname/webaccess/passwd
AuthGroupFile /usr/users/yourname/webaccess/passwd.group
AuthName «Phorum administration»
AuthType Basic
require group admin
Действие 2
Перенесите административный скрипт в защищенный паролем каталог.
1) Замените следующие строки в новом файле .htaccess каталога:
AuthUserFile /usr/users/yourname/webaccess/passwd
AuthGroupFile /usr/users/yourname/webaccess/passwd.group
AuthName «Phorum administration»
AuthType Basic
2) изменитее путь к конфигурационным файлами в admin.php3:
Поменяйте:
include «./common.inc»;
на:
include «/path/to/Phorum/install/common.inc»;
3) Будьте, уверены, что Вы указали правильный адрес форума «forum URL»
в административном скрипте
Выводы
Я надеюсь, что этот документ Вам даст некоторое понимание того, как нужно защитить скрипты Phorum’a. После чтения этого документа и осуществления всех описанных действий, ваш Phorum будет защищен так же, как это сделано у меня. Тем не менее, может быть что-то, что Я пропускаю. Вы должны приложить усилия, чтобы усвоить вопросы сетевой безопасности и, если у Вас есть что-то, чтобы дополнить, — пожалуйста, сообщите мне, чтобы я мог внести дополнения в этот текст.