Я хочу уменьшить или смягчить последствия вредоносного трафика уровня 7 (целевые атаки, стандартное злонамеренное автоматическое сканирование), который достигает моего бэкэнда, что делает его очень медленным и даже недоступным. Это относится к атакам на основе нагрузки, как описано в https://serverfault.com/a/531942/1816
Предположим, что:
& _ foo = 1247895239
), всегда приводит к попаданию в серверную часть. / search? q = something
и / search? foo = bar & q = something
дадут 100% одинаковый результат, потому что foo = bar
- это не то, что я серверная часть использует, но я не могу очистить это на уровне CDN. Итак, что я могу сделать, чтобы справиться с этой ситуацией? Есть ли решение, которое я не учел в своих предположениях, которое могло бы помочь?
Я чувствую вашу боль - но перед вами стоит невыполнимая задача. Вы не можете съесть свой торт и съесть его.
Обычно я предлагаю fail2ban в качестве инструмента для решения этой проблемы (если ограничение скорости веб-сервера не является вариантом), однако вы не только прямо говорите, что не можете даже поддерживать временный запрет, поскольку ваш трафик идет через CDN, вам нужно будет создать множество функций, чтобы сообщить об адресе и применить блокировку.
У вас осталось только 2 варианта действий, которые я вижу:
1) превратить сайт в html-файлы и использовать их в качестве статического содержимого
2) найти работу где-нибудь еще
Я живу в похожей среде (я не управляю ею напрямую, но работаю с командой, которая этим занимается), и мы нашли два решения, которые хорошо работают вместе. В нашем случае мы сами размещаем приложение, поэтому у нас есть полный контроль над потоком трафика, но идея остается прежней.
Некоторые из ваших ограничений довольно сложны, и я бы сказал, что они противоречивы, но я думаю, что их можно обойти. Я не уверен, что такое ваш CDN, но я предполагаю, что это черный ящик, который вы на самом деле не контролируете.
Я бы предложил настроить перед вашим приложением еще один уровень (кэширующий) для контроля и изменения трафика, для этого мы используем Varnish — в основном для кэширования, но также и для смягчения вредоносного трафика. Я могу быть довольно маленьким, и мне не нужно кешировать так долго, как CDN, поскольку он должен видеть очень мало трафика.