В общем проба пера. Прошу строго не судить, так как на авторство этого
материала не претендую. На самом деле пришло время составить некое
подобие HOWTO по начальной защите веб-сервера после установки.
Итак приступим. Проблема веб-серверов делятся на две части: (D)DoS и XSS/XST.
1. Распределенная атака отказа в доступе (Distributed Denial of Servece Attack).
Подробно об этом стихийном бедствии вам расскажут на специализированных
сайтах, посвященным проблемам ИТ-безопасности. В общем итоге смысл
следующий: отказ в обслуживании вашего сервера вызывается массой
фальшивых запросов от контроллируемых злоумышленниками ботов. Боты
размещаются на взломанных машинах по всему миру и соединяются с
IRC-каналами для дальнейшего получения распоряжений. Когда поголовье
стада ботов (bot herd) достигает достаточного (по мнению хакера)
количества, злоумышленник выходит на канал и командует операцией. Как
правило подобные мероприятия призваны вынудить собственника порно-сайта
или интернет-магазина, действующего на грани закона, к выплате некой
суммы в СКВ. Но ведь и тренероваться им где-то нужно, правда? Так что
подготовимся к этому, даже если нам подобное явно не грозит.
Помогут нам два модуля: mod_security & mod_evasive.
1.1 mod_security
Этот пес живет по такому адресу: http://www.modsecurity.org/
Процедура установки не составит труда, но я ее прокомментирую.
# wget http://www.modsecurity.org/download/modsecurity-apache-1.9.2.tar.gz
# tar zxvf modsecurity-apache-1.9.2.tar.gz
# cd modsecurity-apache-1.9.2
# /usr/sbin/apxs2 -cia apache2/mod_security.c
Последняя строка соберет и установит модуль. Очевидно, делать это нужно
соответствеющим apxs/2 для програмных файлов в диреториях apache1 и
apache2 дерева исходников, модули разняться для разных веток сервера.
Теперь модуль нужно отконфигурировать. Это лучше сделать в отдельном
файле. Найдите где в вашей системе расположены файлы конфигурирования
модулей. В моей Gentoo 2006.0 это происходит здесь:
# vi /etc/apache2/modules.d/mod_security.conf
Примеры конфигурации модуля находятся здесь
После наполнения файла mod_security.conf его следует включить в
конфигурацию. Убедитесь в том, что он считывается сервером на старте, то
есть найдите соответствующую директиву Include в файле httpd.conf
1.2 mod_evasive
Проект расположен по адресу: http://www.nuclearelephant.com/projects/mod_evasive/
Устанавливаем модуль.
# wget http://www.nuclearelephant.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
# tar zxvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive_1.10.1
# /usr/sbin/apxs2 -iac mod_evasive20.c
Теперь можно перезапустить сервер как это принято в вашей системе.
Примечание: Процедура apsx2 -iac <mod_code.c> в конце исполнения
добавляет в файл конфигурации httpd.conf строку подключения модуля.
Убедитесь, что нечто подобное присутствует в настройках:
Примечание: Еще одно. Для того, чтобы быть точно уверенными в том, что
модули поднялись сервером и вступили в строй, нужно сделать следующее. В
основном файле конфигурации впишите фрагменты настройки модулей без
обрамляющих директив ... Если сервер загрузится без ругани -- значит эти
команды ему знакомы, а без модулей в памяти это невозможно. Ну разве что
вы собрали Apache со встроенными security & evasive.
2. Cross Site Tracing.
Информацию о том, что такое Cross Site Scripting можно почерпнуть
отсюда: http://httpd.apache.org/info/css-security/ В двух словах: это
явление, когда незалатаные нерадивыми программистами дыры в
веб-приложениях позволяют кому попало использовать неправильный ввод для
нарушения безопасности сайта. Но даже при начальной установке, когда
веб-приложения нашим сервером еще не обрабатываются, существуют
некоторые нюансы, способные скомпрометировать безопасность сайта в
будущем. Это Cross Site Tracing. Не путайте XSS и XST.
XST подробно описан в этом документе: http://www.kb.cert.org/vuls/id/867593
В общем это случается, когда после настройки веб-приложения
администратор сайта не отключает разрешенный по умолчанию метод HTTP
TRACE. Этот метод осуществляет ничто иное, как эхо-ответ вашего запроса,
отправленного серверу. В идеале ничего страшного в этом нет. Но
представьте себе картину, когда ответ на запрос, отправленный клиентом,
получает злоумышленник? Это возможно в комбинации с многочисленными
уязвимостями браузера. В таком случае в руках у хакера оказывается как
минимум информация из HTTP-заголовков, которая может содержать
чувствительные данные, например cookies.
Чтобы подобное было невозможно, сделаем следующее.
Добавим директиву
TraceEnable off
в корневую часть httpd.conf
Также, для пущей уверенности, можно установить и настроить модуль
mod_rewrite. Модуль как правило поставляется с Apache изначально, а
настраивается в нашем случае вот так:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
Добавьте этот код в главную настройку, или секции ваших виртуальных хостов.
Собственно, все. Буду рад фидбеку =)
PS Массу информации о состоянии защиты вашего сайта можно почерпнуть из
результатов сканирования утилитой nikto.
1221 Прочтений • [Начальная защита Apache (apache security mod_security dos flood)] [08.05.2012] [Комментариев: 0]