Ddos. Защищаемся от мелких ботнетов

В этой заметке опишу минимальную настройку сервера, для защиты от мелких ботнетов. Первое что нам необходимо, это установленый и настроеный APF. Ранее я уже описывал установку и настройку APF. Для выявления ботов будем использовать пакет(D)DoS-Deflate. Механизм его работы очень прост. Скрипт через определенные интервалы времени выполняет следующий код:

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

В результате работы скрипта вычисляется количесвто соединений к серверу с определенного IP адреса. Если количество соединений превышает допустимые в конфигурационном файле пределы, то ip адрес источника запросов передается в APF и там заносится в черный список на определенное время. То есть IP адрес банится, запросы с него перестают поступать.

Итак, устанавливаем и настраиваем DoS-Deflate.

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

Пакет устанваливается в каталог /usr/local/ddos. Открываем для редактирования конфигурационный файл ddos.conf

vi /usr/local/ddos/ddos.conf

Конфиг хорошо прокоментирован. Остановлюсь на одном параметре:
NO_OF_CONNECTIONS=150
Количество одновременных соединений. Тут нужно экспериментировать. Все зависит от вашего хостинга. Возможно есть такие сайты, которые совершенно нормально требуют 150 одновременных соединений с сервером. Лично я считаю что этот параметр необходимо уменьшить как минимум до 50.

Также было обнаружено, что на некоторых дистрибутивах Linux скрипт работает не так как нужно. Решение - замена в файле /usr/local/ddos/ddos.sh строки
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
на строку:
netstat -ntu | grep ffff | awk '{print $5}' | cut -d: -f4 | sort | uniq -c | sort -nr
Поправляем (по необходимости) конфиг и ждем нападения.

Хочу пожелать только, поменьше атак на ваши хосты 🙂