mod_evasive - (mod_dosevasive) HTTP DoS or DDoS attack or brute force attack
Apache модуль для организации защиты от DDoS атак.
Преамбула
Не стоит думать, что слабый ddos не сможет нанести ущерба вашему серверу. Например, атакующих зомби-машин всего 50-150, все они с толстыми каналами, а вы уехали в командировку или у вас 10-ки серверов и вы не успеваете физически мониторить все. В таком случае, даже не большое количество машин, смогут зафлудить канал или заставить выйти из строя веб сервер apache, mysql, etc. Другое дело когда администратор 24 часа в сутки мониторит сервер и с легкостью обнаруживает атаки, далее с легкостью и в считанные секунды заносит несколько правил в таблицу фаервола при этом спокойно попивая кофе, продолжает заниматься своими делами. Но такое бывает редко, смотреть сутками и мониторить вывод комманд netstat, top, mtop убийственно для вашего мозга, и глаза устанут, будем непосебе :), поэтому нужно автоматизировать процесс блокировки атакующих зомби-машин.
Один из методов как защитить свой сервер от флуд атак и слабого ddos-a по http протоколу это установить модуль для веб-сервера Apache - mod_dosevasive.
Установка и настройка mod_dosevasive
Debian Linux (только для Apache 1.3.x):
apt-get install libapache-mod-dosevasive
Или же вы можете скачать архив с сайта:
http://www.zdziarski.com/projects/mod_evasive/
Распаковываете архив
tar zxvf mod_dosevasive_1.10.tar.gz
cd mod_dosevasive
Компилируем mod_dosevasive для Apache 2:
/usr/local/apache/bin/apxs2 -i -a -c mod_dosevasive20.c
Если у вас apache 1.3 тогда так:
/usr/local/apache/bin/apxs -i -a -c mod_dosevasive.c
(!) Замените /usr/local/apache на ваш путь к apache
Редактируем httpd.conf (Чаще всего он находится в /usr/local/apache/conf/httpd.conf):
Убедитесь, что нечто подобное присутствует в настройках:
LoadModule evasive20_module lib/apache2/modules/mod_evasive20.so
Добавляем в конец файла следующие строки:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 15
DOSEmailNotify email@for-notify.com
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
-- DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу.
-- DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени.
-- DOSSiteCount: число запросов ко всем страницам домена, т.е если поступило более 50-ти запросов с одного ай-пи на разные страницы домена - тогда такой ай-пи будет заблокирован.
-- DOSPageInterval: Интервал для директивы DOSPageCount (в секундах)
-- DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах)
-- DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах)
-- DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован.
-- DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется. Вы можете использовать это для добавления IP-адреса в таблицу фаервола.
(пример: "/sbin/iptables -A INPUT -p tcp --dport 80 -s %s -j REJECT" В %s передается от модуля IP)
-- DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)
Также этот модуль позволяет защитить ваши сайты от brute force атак.
5 комментариев:
спасибо за статью, пригодилась
Спасибо за пост
Комманда iptables -A INPUT -p tcp --dport 80 -s %s -j что то не работает
Не записывает в таблицу :(
phpforeva а ты запиши в таблицу :)
При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway.net, отлично справляются как с ддос атаками так и толково шарят в администрировании.
Отправить комментарий