DDOS Deflate

DDOS Deflate — скрипт, который поможет администратору в защите сервера от простых атак. Серьёзный DDoS конечно же не отобьёт, но сделать так, что бы любители запускать HOIC или slowloris не беспокоили, сможет легко.

Установка и настройка DDOS Deflate.

Ставим скрипт следующим образом:

# cd /usr/local/src/
# wget http://www.inetbase.com/scripts/ddos/install.sh
# chmod +x install.sh 
# ./install.sh

Конфигурационный файл доступен здесь /usr/local/ddos/ddos.conf. Он очень простой. В конфиге мы можем указать пути до бинарников и скриптов, задать частоту проверки, количество соединений после которых IP будет заблокирован, время на которое система заблокирует его и почту, на которую будет уходить уведомление о блокировке. Там же мы можем указать, чем будет производиться блокировка — с помощью apf, или с помощью iptables. Задаём нужные параметры, сохраняем, закрываем.

Белый список IP, которые не будут попадать под ограничение задаётся в файле: /usr/local/ddos/ignore.ip.list В некоторых случаях, там где настроена схема двух веб-серверов (бекенд-фронтенд), имеет смысл в белый список добавить IP сервера.

Задание для cron’a расположено в файле: /etc/cron.d/ddos.cron Его можно создать командой:

# ddos --cron

Сам скрипт, с помощью которого происходит обработка и блокировка: /usr/local/ddos/ddos.sh С ним нам придётся поработать отдельно. Открываем его любимым текстовым редактором и находим там строку вида:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

Копируем её себе, выходим из редактора и выполняем команду в терминале:

# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
1 servers)
1 Address
10 46.65.23.10

Как видим, в вывод команды попала лишняя информация. Наша задача, скорректировать команду так, что бы ничего лишнего не выводилось. Например:

# netstat -ntu | grep ':' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
15 46.65.23.10

Либо один из вариантов ниже (в некоторых случаях вывод netstat может отличаться):

netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -nr
netstat -ntu | grep ffff | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -nr

В скрипте не забываем перенаправить вывод команды в > $BAD_IP_LIST. Прописываем изменённую строку:

netstat -ntu | grep ':' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST

Сохраняем файл, запускаем:

# ddos -c

Ежеминутно выполняясь по крону, скрипт будет проверять вывод команды netstat и блокировать IP, которые превысят заданный лимит. Не дожидаясь выполнения крон задания, заблокировать IP вышедшие за лимит можно командой:

# ddos -k

Удаление DDOS Deflate.

Удалить DDOS Deflate можно либо удалив файлы вручную, либо выполнив команды:

# cd /usr/local/src/
# wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
# chmod +x uninstall.ddos 
# ./uninstall.ddos

Проверка работы DDOS Deflate.

Проверить работу DDOS Deflate можно, например, с помощью slowloris.pl. Скачиваем скрипт на сервер (ip 23.32.9.14) с которого будем выполнять тестовую атаку и запускаем его. Как только нужное количество запросов будет сделано, на сервере, где запущена защита, проверяем iptables, там будет что-то такое:

Chain INPUT (policy ACCEPT)num  target     prot opt source               destination         
1    DROP       all  --  23.32.9.14          0.0.0.0/0

IP адрес, с которого шла атака был заблокирован на нашем сервере.

@SysadminNotes | https://sysadmin.pm

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

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