ЗАЩИТА ОТ ЛЕГКОЙ FLOOD И DDOS АТАКИ ПО HTTP-ПРОТОКОЛУ ИСПОЛЬЗУЯ MOD_DOSEVASIVE


Защита от ddos 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

Debian Linux и Ubuntu 8.04 (для Apache 2.x):
apt-get install libapache2-mod-evasive

Или же вы можете скачать архив с сайта:
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

в Debian 5 модуль включается автоматически при установке
отключить его можно командой:
a2dismod mod-evasive
и перезагрузив apache2:
/etc/init.d/apache2 restart
Добавляем в конец файла следующие строки:

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 атак.