Pull to refresh

DDoS — как выжить от школьников?

Reading time3 min
Views5.4K
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.
Установка не сложная.

Скачиваем архив
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

Конечно же это далеко не все но вполне хватит от мелкого флуда.
Tags:
Hubs:
+18
Comments15

Articles

Change theme settings