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

Тема в разделе "Защита от DDOS своими силами", создана пользователем X-Shar, 4 июн 2014.

↑ ↓
  1. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.800
    Симпатии:
    425
    Пол:
    Мужской
    Репа:
    +957 / 152 / -29
    Jabber:
    Skype:
    ICQ:

    638294628

    Сегодня узнал про прикольную штуку, смысл в том, что крон дергает следующую
    команду:
    Код:
    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
    Внести в редакторе заданий следующую строку:
    Код:
    */* * * * nice --/usr/local/ddos/ddos.sh
    Где */1 * * * * — указывает на выполнение скрипта с интервалом в 1 минуту.
    Проверить, выполняется ли скрипт по cron можно с помощью просмотра /var/log/syslog. В нем должны содержаться строки вида
    Код:
    May 10 20:07:02 astreus /USR/SBIN/CRON[30284]: (rootCMD (nice --/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 -sort -nr $BAD_IP_LIST
    заменить на
    Код:
    netstat -ntu grep ':' awk '{print $5}' sed 's/::ffff://' cut -f1 -':' sort uniq -sort -nr $BAD_IP_LIST
    Параметр NO_OF_CONNECTIONS конфигурационного файла стоит определять опытным путем с учетом специфики проекта, на который осуществляется атака.

    Источники:

    http://10serv.com/borba-s-ddos-atakoy-s-pomoshhyu-d-dos-deflate/
    Журнал "Хакер"
     
    • Мне нравится Мне нравится x 5
  2. X-Shar :)
    X-Shar
    Ответить в чате

    Администрация

    Регистрация:
    03.06.2012
    Сообщения:
    5.800
    Симпатии:
    425
    Пол:
    Мужской
    Репа:
    +957 / 152 / -29
    Jabber:
    Skype:
    ICQ:

    638294628

    Поставил эту штуку, ибо какой-то бот или мудак, напрягает запросами...

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

    Нужно обязательно поставить 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...Отдыхай!!!

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

    З.Ы. Никто нехочит поддидосить, попробовал прогу от Злодея с HH:http://happy-hack.ru/ddos/12612-site-killer-20-by-zodey-_.html

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

    А так только запустил, и IP-адрес сразу заблокировался, кстати если кто решит таким образом ддосить, то айпишник залочится на 24 часа, потом вроде должен автоматически разблокироваться...Не въехал!!!
     
    • Мне нравится Мне нравится x 2

Поделиться этой страницей