Thank you for reading this post, don't forget to subscribe!
Оказывается можно попытаться защитить свой сервер от 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]
Перезапустить сервис:
Протестировать с удаленной машины: