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

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

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

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


(forb@real.xakep.ru)

Введение в Web-безопасность

Опять поломали? Несчастные хакеры уже в третий раз атакуют твой Web-сервер и оставляют дефейс. Согласись, мало приятного, когда ты даже не знаешь причину атаки. Ничего страшного – сейчас я научу тебя грамотно защищать свою web-территорию.

В чем кроется опасность?

Ты будешь удивлен, но атаковать Web-сервер можно многими способами. Даже если у тебя стабильный Апач без ненужных модулей, тебя могут поиметь через легкодоступный пароль на авторизацию. Либо посредством дырявого скрипта. Чтобы оставаться в абсолютной безопасности, необходимо в полной мере рассмотреть каждый способ нападения.

Итак, прежде чем устанавливать софт на свою машину, необходимо четко выбрать его версию. В качестве демона рекомендую Apache – он хоть и подмочил свою репутацию в OpenBSD, но достаточно стабилен и безопасен. Что касается версии, ставь последний из ветки 1.3.28. Вторая ветка еще слишком сырая, поэтому лично я ей не доверяю.

Но поставить сервер еще полбеды, самый геморрой в его настройке и модулях. Именно через модули тебя могут поиметь, поэтому вот тебе ряд советов, к которым стоит прислушаться:

1. Ставь только проверенные модули и выбирай стабильные версии. Я бы рекомендовал устанавливать только две апачевых библиотеки – это mod_php и mod_ssl. Остальные не заслуживают доверия по разным причинам: дырявый код, возможность работы без них и т.п.

2. Внимательно читай руководство по установке. Так, например, перед тем как запустить mod_php и быть уверенным в безопасной работе, нужно грамотно настроить конфиг php.ini. Почти то же самое касается и mod_ssl. Короче говоря, RTFM ;).

3. Старайся компилировать модуль, а не ставить из rpm. Дело в том, что многие эксплойты содержат именно rpm-таргеты. Если ты соберешь библиотеку вручную, хакеру будет сложнее подобрать адрес возврата. Даже если модуль будет уязвим.

Крылья, ноги... главное – конф!

С этим разобрались. Теперь давай вплотную подойдем к настройке Apache. Я не собираюсь перелопачивать весь httpd.conf, а лишь дам ряд рекомендаций к некоторым его директивам.

Во-первых, старайся выносить каждый виртуалхост (даже если он один) в отдельную вкладку. Нет, даже в отдельный файл. Назовем его, к примеру, vhosts.conf. Впиши в конце httpd.conf строку include conf/vhosts.conf и приступай к редактированию своего виртуального хоста.

Особое внимание обрати на разрешения (директива Options). Посуди сам, зачем тебе SSI, если ты их в принципе не используешь (зато хакеры используют ;)), или ты не хочешь светить названия файлов. А быть может, ты совсем злой, и желаешь прикрыть пользователям возможность юзать любые скрипты? Не проблема, просто выполни следующую конструкцию:

NameVirtualHost "www.host.net"

<VirtualHost www.host.net>

AllowOverride none

Options –ExecSSI –ExecCGI –Indexes

</VirtualHost>

Вот и все. Теперь ты в относительной безопасности. Для тех, кто не знает, директива AllowOverride показывает, можно ли изменять какие-либо директивы в отдельных каталогах сервера при помощи файлов .htaccess.

Содержание  Вперед на стр. 041-088-2