Здравствуйте. Недавно злоумышленники начали ддосить файловый хотинг. Благо, большую часть дыр закрыли, но у них все равно получается положить nginx большим кол-вом запросов get к файлу. Хоть и стоит ограничение на 9 скачиваний, ложится все равно при ответе в 206.
На каком уровне лучше от этого защититься? Скриптами, фаерволом или бэкэндом движка?
Похожая проблема с HTTP-сервером решена так:
- считаем статистику запросов по ip-адресам;
- при достижении критического порога программно добавляем правило фаервола о запрете обработки любых пакетов с этого адреса (чересчур активный клиент успевает поработать не более секунды);
- по прошествии месяца запрет автоматически снимаем, клиент может ддосить заново - еще одна секунда у него будет :)
В общем, банить как можно раньше - если на локальной машине, то на уровне IP-протокола. Чтобы до прикладного уровня дело даже не доходило. Тогда на ваш nginx нагрузки не будет.
Еще лучше, если в ближайший к вам коммутатор можно программно по сети добавить правило - то делать это надо там (до этого у меня пока руки не дошли).