Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #41, АПРЕЛЬ 2004 г.

Защити свой WWW-сервер

Докучаев Дмитрий aka Forb

Спецвыпуск Xakep, номер #041, стр. 041-088-5


Абсолютной безопасности не существует

Тем не менее, это так. Поэтому, даже если ты написал могучие скрипты с динамическими изображениями, поставил себе SSL, грамотно настроил httpd, тебя все равно могут поиметь. Чтобы этого не случилось, регулярно следи за системой, самим сервером и заглядывай в системные журналы. Как показывает практика, истина где-то в логах ;).

Установка модулей

Я уже говорил, что ставить модули из rpm не рекомендуется. Чтобы установить их из исходников, тебе потребуется скомпилить Apache с конфигурационным флагом --enable-module=so. Теперь ты разрешил доставлять внешние модули. Далее ставь PHP с флагом –-with-apxs=/path/to/apache/bin/apxs. Затем перезапусти Апач, и mod_php будет установлен.

С SSL все немного сложнее. Сперва установи сам OpenSSL, его ты можешь взять с www.openssl.org. Установка стандартная и состоит из трех команд (./configure, make, make install). Когда пакет установлен, сливай модуль (http://ftp.cvut.cz/mod_ssl/source/mod_ssl-2.8.15-1.3.28.tar.gz) и распаковывай. Чтобы привязать его к Апачу, используй подобные параметры конфигурации:

./configure --with-apache=../apache_1.3.28 --with-ssl=../openssl-0.9.6k --prefix=/usr/apache

Затем выполним make certificate. У тебя спросят пароль, который будет требоваться каждый раз при запуске Web-сервера. Не забудь его :). Заверши установку make install'ом и перезапуском httpd.

Конфигурим и оттачиваем

После установки необходимых модулей нужно их грамотно отконфигурить. Начнем с mod_php. Этот язык программирования имеет свой конфиг php.ini. Парсить его я не буду, лишь скажу, что в инете ты можешь найти множество статей по настройке PHP.

Одна из важных переменных называется register_globals (по умолчанию отключена). Именно из-за нее все беды: все переполнения выполняются через внешние параметры. Ты, наверное, знаешь, что включение данной директивы ведет к автоматическому преобразованию всех опций скрипта в переменные php. В свежих версиях php довольно сложно переполнить буфер через подбор длины параметра, поэтому для удобства можно включить эту опцию.

Хорошая статья по настройке PHP была в журнале Хакер (02.2003) и называлась "Песнь о багах в PHP или админ в шкуре скрипт-кидди".

Напоследок, чтобы сервер понимал расширение php, добавь в httpd.conf строку AddType application/x-httpd-php .php .php3 .phps .phtml.

После запуска Apache, mod_ssl каждый раз просит пароль. Если старт происходит при загрузке сервера, вводить его интерактивно не представляется возможным. Решение проблемы и переход на автоматический старт лежит в httpd.conf. Добавляем в конфиг следующую строку:

SSLPassPhraseDialog exec:/usr/apache/bin/password.pl

А затем создадим скрипт password.pl со следующим содержанием:

Назад на стр. 041-088-4  Содержание  Вперед на стр. 041-088-6