DDoS-атака — сокращение от Distributed Denial Of Service Attack. Это когда куча зараженных компьютеров посылают на сервер множество запросов. В итоге сервер тратит все свои ресурсы на обслуживание этих запросов и становится практически недоступным для пользователей. Размер атак бывают разные, от крупных может спасти только специалист и Cisco Guard :) и такое решение стоит не менее 1000$/мес. Но такие атаки, слава богу, довольно редкое явление. Чаще всего мы видим простые атаки, которые делают как правило школьники (им же все интересно). Создать свой ботнет не сложно, можно даже купить готовый :). Но такие атаки тоже могут нанести вред нашему веб-проекту. Что же делать если атака маленькая и платить огромные деньги специалисту мы не хотим?
1. mod_evasive — (mod_dosevasive) HTTP DoS or DDoS attack or brute force attack (модуль для apache)
Модуль поможет от небольшого флуда и ddos атак по http.
Установка не сложная.
Скачиваем архив
Теперь нужно распаковать
Компилируем mod_dosevasive для Apache 2:
/usr/local/apache заменить на ваш путь к apache (где apache смотрите через whereis apache)
Редактируем httpd.conf
Добавляем (я думаю вы увидите куда)
Дальше в конце файла
— 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.*)
2. скрипт (D)DoS Deflate.
Просто скрипт для защиты от ddos атак. Работает он очень просто, по крону запускает:
После чего блокирует ip который превысили лимит по количеству коннектов (это можно задать в его конфигурации).
3. Несколько правил для iptables
Максимум 10 коннектов с одного IP
Блокировка более 10 SYN
Если атака идет одним «левым» запросом то его можно заблокировать
Конечно же это далеко не все но вполне хватит от мелкого флуда.
1. mod_evasive — (mod_dosevasive) HTTP DoS or DDoS attack or brute force attack (модуль для apache)
Модуль поможет от небольшого флуда и ddos атак по http.
Установка не сложная.
Скачиваем архив
wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
Теперь нужно распаковать
tar zxvf mod_dosevasive_1.10.1.tar.gz
cd mod_dosevasive
Компилируем mod_dosevasive для Apache 2:
/usr/local/apache/bin/apxs2 -i -a -c mod_dosevasive20.c
/usr/local/apache заменить на ваш путь к apache (где apache смотрите через whereis apache)
Редактируем 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 ""
— 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.*)
2. скрипт (D)DoS Deflate.
Просто скрипт для защиты от ddos атак. Работает он очень просто, по крону запускает:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
После чего блокирует ip который превысили лимит по количеству коннектов (это можно задать в его конфигурации).
3. Несколько правил для iptables
Максимум 10 коннектов с одного IP
iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT
Блокировка более 10 SYN
iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10
40 коннектов на сеть класса С
iptables -p tcp --dport 80 -m iplimit --iplimit-above 40 --iplimit-mask 24 -j REJECT
Если атака идет одним «левым» запросом то его можно заблокировать
iptables -I INPUT 1 -p tcp --dport 80 -m string --string "GET / HTTP/1.0" --algo kmp -j DROP
Конечно же это далеко не все но вполне хватит от мелкого флуда.