Боремся с DDOS при помощи (D)DoS Deflate


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Сегодня узнал про прикольную штуку, смысл в том, что крон дергает следующую
команду:
Код:
netstat -ntu 1 awk '{print $5}~ cut ~
-d: -fl 1 sort 1 uniq -с 1 sort -n
И айпи, число соединений с которых превышает заданное по конфигу, банятся файрволом.like it

Рассмотрим более подробно как юзать:

Принцип действия данного скрипта состоит в том, что им с некоторым интервалом (запуск осуществляется по cron) определяются IP, с которых превышен лимит на соединения к серверу.

Такие IP блокируются через iptables или apf на некоторое время и по истечению этого времени происходит их вынесение из запрещающих правил.

Разблокировка IP через некоторое время в таком случае дает два положительных момента:

1)При вынесении таблица правил не содержит очень большое количество записей, а только те, с которых недавно осуществлялась атака, это дает большую производительность фильтра пакетов (iptables или apf);

2)Снижается нагрузка на CPU путем предотвращения перебора большого количества правил для входящего пакета.

Установка (D)DoS Deflate:

Качаем установочный скрипт, даем ему права на выполнение и запускаем его
Код:
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

В ходе установки в директорию /usr/local/ddos/ вносится сам скрипт, конфигурационные файлы и добавляется задание в cron.

В debian-подобных системах задание, внесенное в cron установочным скриптом не всегда выполняется (в данном случае именно так и произошло), поэтому нужно самостоятельно добавить выполнение скрипта с помощью команды:
Код:
crontab -e

Внести в редакторе заданий следующую строку:
Код:
*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh

Где */1 * * * * — указывает на выполнение скрипта с интервалом в 1 минуту.
Проверить, выполняется ли скрипт по cron можно с помощью просмотра /var/log/syslog. В нем должны содержаться строки вида
Код:
May 10 20:07:02 astreus /USR/SBIN/CRON[30284]: (root) CMD (nice -n -5 /usr/local/ddos/ddos.sh)

Далее проверяем вывод команды iptables-save и удостоверяемся, что в ее выводе содержатся запрещающие правила:

Код:
-A INPUT -s 41.72.34.212/32 -j DROP
...
-A INPUT -s 85.159.201.54/32 -j DROP

Общее количество запрещающих правил можно посмотреть с помощью команды
Код:
iptables-save | grep -c DROP

Файл конфигурации скрипта /usr/local/ddos/ddos.conf имеет следующую структуру:

Код:
##### Путь к основным составляющим работы скрипта
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" # список игнорируемых IP
CRON="/etc/cron.d/ddos.cron"
APF="/etc/apf/apf"
IPT="/sbin/iptables"
 
##### Интервал запуска скрипта в минутах
FREQ=1
 
##### Количество максимальных соединений с одного IP
NO_OF_CONNECTIONS=90
 
##### Если используем iptables - ставим 0
##### Если используем apf - устанавливаем его и ставим 1
APF_BAN=0
 
##### При запуске задания через cron,
##### разработчики рекомендуют значение этой опции 1
KILL=1
 
##### E-mail, на который отправляется уведомление о бане
##### Если отправка не нужна, ставим значение ""
EMAIL_TO="root"
 
##### Время бана в секундах
BAN_PERIOD=3600

Для отправки уведомлений на e-mail используется команда mail -s «IP addresses banned on …» $EMAIL_TO.

Стоит проверить с командной строки отправку письма с помощью этой команды. Возможно, понадобится установка пакета mailx (если он не установлен).

Если нужно исключить блокировку скриптом определенных IP, они вносятся в /usr/local/ddos/ignore.ip.list по одному в строку.

Например:
Код:
10.10.10.1
10.10.10.100

При настройке (D)DoS Deflate в дистрибутивах на базе RedHat нужно учесть такие особенности:

Задание по cron добавляется и выполняется корректно, поэтому вручную добавлять его не нужно !

После смены интервала запуска скрипта (параметр FREQ) нужно единоразово выполнить скрипт с опцией —cron (/usr/local/ddos/ddos.sh —cron), в самом скрипте для корректной работы в связи с отличием вывода команды netstat в Debian и RedHat нужно часть:
Код:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

заменить на
Код:
netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -nr > $BAD_IP_LIST

Параметр NO_OF_CONNECTIONS конфигурационного файла стоит определять опытным путем с учетом специфики проекта, на который осуществляется атака.

Источники:


Журнал "Хакер"
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 082
Репутация
8 199
Поставил эту штуку, ибо какой-то бот или мудак, напрягает запросами...

Хочу прокомментировать эту статью, конфиг:

Нужно обязательно поставить APF_BAN=0 кто юзает Iptablets, у меня CentOS 6 и /usr/local/ddos/ddos.sh я ничего не правил вроде нормально отрабатывает, видно в статье про старые версии CentOS сказано...

В крон пришлось вручную вносить:

*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh

Это запуск с повышенным приорететом, смысл что если сервак зависнет, бОльшая вероятность что скрипт отработает !

И ещё нужно обязательно проверить /usr/local/ddos/ignore.ip.list что-бы там было в исключении айпишник сервера + должны-быть права на чтение этого файла, иначе будет как у меня файерволл забанит адрес сервака и в этоге ошибка 504...Отдыхай!!!

Пока тестирую, незнаю как будет работать, главное что-бы случайно никого не лочил и поисковых ботов тоже...

З.Ы. Никто нехочит поддидосить, попробовал прогу от Злодея.

В этоге поймал зараженную длл Win32.Rmnet который немного не мало крадёт акки к фтп, от сюда вывод АВ никогда неповредит...WinkSmile

А так только запустил, и IP-адрес сразу заблокировался, кстати если кто решит таким образом ддосить, то айпишник залочится на 24 часа, потом вроде должен автоматически разблокироваться...Не въехал!!!
 
Последнее редактирование:
Автор темы Похожие темы Форум Ответы Дата
virt Защита от DDOS своими силами 1
Антоха Защита от DDOS своими силами 2
X-Shar Защита от DDOS своими силами 0
X-Shar Защита от DDOS своими силами 7
X-Shar Защита от DDOS своими силами 0
X-Shar Защита от DDOS своими силами 1
X-Shar Защита от DDOS своими силами 5
X-Shar Защита от DDOS своими силами 7
X-Shar Защита от DDOS своими силами 8
X-Shar Защита от DDOS своими силами 2
X-Shar Защита от DDOS своими силами 3
Верх Низ