Как настроить защиту от DDoS для NGINX или Apache?
Периодически на сервере замечаются очень сильные задержки и access логи растут от большого кол-ва запросов к определенному или нескольким сайтам. Определяем, что это потенциальная атака по ответу сервера 499 и по повторяющимся частым запросом с одинаковых IP.
Идея защиты примерно такая: Если сервер отдает ответ 499, то блокировать этот IP на 10-20 секунд.
Какие есть инструменты/настройки для реализации такой блокировки? Или может быть другие способы и подходы?
Алексей Тен, Сейчас при атаке страдают все сайты и ждут загрузку страницы примерно 15-20 секунд. Если мы баним адрес на 10-15 сек, для этого человека разницы не будет, я думаю.
Fail2ban конечно костыль который подойдет на начальных этапах, но ваш вариант странный, как ваше приложение будет обрабатывать запросы если оно лежит под DDoS?
Алексей Андреев, Если атака идет на канал связи, то ничего не поможет кроме как сервисов типа cloudflare.
В других же случаях, атака идет на логику, что бы ваш сервер захлебнулся.
Поэтому вы ставите простую проверку перед обращением например к базе данных, и отсеиваете атакующих.
На примере поиска или новостной ленты.
Кто то с ip 1.1.1.1 отправляет со скорость 500 RPS запросы на вывод категорий. Логично внести этот IP в черный список на 1 секунду и отдать ему
HTTP/1.1 429 Too Many Requests
Content-Type: text/html
Retry-After: 1
Алексей Тен, С чего бы это?
Вы выносите часть логики приложения во внешнее приложение, дублируете логику приложения, добавляете внешние сущности, вместо того что бы сделать все в том месте где сосредоточена вся информация на основе которой можно принять решение.
С чем связано такое решение? Просто объясните вашу логику и причины по которым вы принимаете такое решение.
Алексей Тен, Именно я про это и говорю. Слишком много запросов это именно бизнес логика.
И не должен файрвол что то там думать. Его задача фильтровать пакеты, все! А правила фильтрации должно составлять ваше приложение, или оно должно просто плевать на кучу не валидных запросов.
Приложение должно само понимать кто там долбится и соответственно реагировать (создать правило для стенки или выставить счет на 100500 долларов или ответить мол постучись через 10 минут)
fail2ban это именно костыль для криворукого приложения, WAP это вообще костыль на все случаи жизни, поощряющий дырявый код (плата за это просто чудовищная мощность этих серверов, лопатящих все возможные потенциально опасные места )
Алексей Тен, Вот вам несколько примеров. Выкатили в прод вместо тестового контура и частота запросов увеличилась в 10 раз.
Человек опубликовал хайповую статью, и вместо 10 запросов к карте улетело 50 000.
Квартальный отчет. Пакетная обработка за какой то период.
Идея защиты примерно такая: Если сервер отдает ответ 499, то блокировать этот IP на 10-20 секунд.
Перестань жопиться и кроить, раскошелься, найди грамотного специалиста и пару грамотных специалистов. Либо стань под защиту (на отечественных защитников от атак не смотри, горе одно).