Защита от DDoS атак с помощю DDoS Deflate

Оказывается можно попытаться защитить свой сервер от DoS посредством (D)DOS DEFLATE, это сценарий, который на периодичной основе проверяет количетсво используемых подключений с одного IP адреса.

Проверить наличие таких подключений можно командой:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
При наличии подключений более чем обозначили Вы, данный IP блокируется, благодаря созданному автоматически скриптом правилу в iptables.

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

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

Удаление (D)DoS Deflate

Происходит в аналогичном порядке, за исключением загружаемого скрипта:
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos

Настройка (D)DoS Deflate

Конфиг расположен в каталоге — /usr/local/ddos/, имя конфига — ddos.conf, основные настройки:

  • указание возможного количества соединений — NO_OF_CONNECTIONS=64
  • указание блокировки посредством iptables — APF_BAN=0
  • период блокирования в секундах — BAN_PERIOD=600
  • настрйоку — KILL=1 оставляем по умолчанию
  • указать email для отправки почтовых уведомлений — EMAIL_TO=»user@server.domain«
  • так же можно создать список «белых» IP в файле — IGNORE_IP_LIST=»/usr/local/ddos/ignore.ip.list»

Запуск самого скрипта можно можно осуществить так:

# /usr/local/ddos/ddos.sh
Но я предпочел добавить в крон от рута запись:
*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh
А в скрипте закомментить функцию add_to_cron {}

 Дополнительно

Просмотр общего количества соединений:

netstat -n -p | awk '{print $6}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10

Далее можно просмотреть рейтинг количества подключений:

netstat -n -p | awk '{print $5}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10

 И далее можно просмотреть по каким портам:

netstat -nput | awk '{print $4}'|awk -F: '{print $2}' | sort -n | uniq -c | sort -nr | head -n10

По материалам: Источник1 Источник2


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!