Оказывается можно попытаться защитить свой сервер от DoS посредством (D)DOS DEFLATE, это сценарий, который на периодичной основе проверяет количетсво используемых подключений с одного IP адреса, проверить наличие таких подключений можно командой:
При наличии подключений более чем обозначили Вы, данный IP блокируется, благодаря созданному автоматически скриптом правилу в iptables.
Установка (D)DoS Deflate
Происходит посредством загрузки установочного скрипта, указанием разрешений на запуск и собственно запуск установки:
chmod 0700 install.sh
./install.sh
Удаление (D)DoS Deflate
Происходит в аналогичном порядке, за исключением загружаемого скрипта:
chmod 0700 uninstall.ddos
./uninstall.ddos
Настройка (D)DoS Deflate
Конфиг расположен в каталоге - /usr/local/ddos/, имя конфига - ddos.conf, основные настройки:
- указание возможного количества соединений - NO_OF_CONNECTIONS=100
- указание блокировки посредством 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"
Запуск самого скрипта можно можно осуществить так:
Дополнительно
Просмотр общего количества соединений:
Далее можно просмотреть рейтинг количества подключений:
И далее можно просмотреть по каким портам:
Можно использовать несколько методов. Защита от множественных соединений может быть осуществлена при помощи DDOS DEFLATE, защита от множественных GET / POST запросов может осуществлена при помощи FAIL2BAN, ниже в краце расскажу как можно быстро задействовать оба метода.
Установка DDOS DEFLATE
Последний пакет можно "затянуть" из master ветки с GitHub:
Распаковать:
Установить:
./install.sh
Добавить в автозагрузку:
Настройка DDOS DEFLATE
Все настройки хранятся в файле /etc/ddos/ddos.conf
, их не много, в качестве ключевых настроек можно выделить множественные соединения:
Время бана (в секундах), например:
Перезапускаем сервис:
Теперь у DDOS DEFLATE появился "интерфейс" при помощи которого можно просмотреть соединения:
Или быстро обрубить из в соответствии с настройками:
Защита от множественных запросов GET / POST
Как установить fail2ban было описано ЗДЕСЬ и ЗДЕСЬ, ниже расскажу как добавить правило. Необходимо создать файл /etc/fail2ban/filter.d/http-get-dos.conf
с выражением:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*
ignoreregex =
В /etc/fail2ban/jail.local
необходимо добавить:
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
# путь к логам
logpath = /var/www/httpd-logs/*.access.log
# кол-во повторных запросов
maxretry = 300
# 300 секунд = 5 минут
findtime = 300
# бан на 5 минут
bantime = 300
action = iptables[name=HTTP, port=http, protocol=tcp]
Перезапустить сервис:
Протестировать с удаленной машины: