ЖУР.КОМ: крупнейший каталог электронных журналов компьютерной тематики
Защити свой 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.