Защити свой 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. |