Назад | Перейти на главную страницу

Считается ли использование iptables для ограничения скорости порта 80 расточительным?

Я подумывал добавить к своим IP-таблицам следующее правило:

-A INPUT -p tcp -m state --state NEW -m recent --update --dport 80 --seconds 5 --hitcount 10 -j DROP
-A INPUT -p tcp -m state --state NEW -m recent --set --dport 80 -j ACCEPT

чтобы избежать случайного злоупотребления (слишком много запросов) моего веб-API на основе Ajax.

Считается ли такая фильтрация с отслеживанием состояния ресурсоемкой или иным образом расточительной из-за общности запросов порта 80 (по сравнению с чем-то вроде порта с ограничением скорости 22, который приведет к гораздо меньшему количеству состояний)? Я понимаю, что делать это в выделенном брандмауэре было бы идеально, но я пытаюсь понять, что я могу сделать на своем сервере.

Я не знаю о производительности использования модуля состояния по сравнению с фильтрацией SYN-пакетов (которая эффективно использовала бы тот же трюк).

Возможно, вы сможете протестировать это ... попробуйте добавить свое правило - а затем используйте Apache Bench или аналогичный для генерации как можно большего количества запросов, отслеживая использование процессора и памяти вашего сервера. Затем попробуйте добавить следующее правило:

-N tcpsyn
-A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j tcpsyn

-A tcpsyn -p tcp --dport 80 -m limit --limit 5/second --limit-burst 20 -j RETURN
-A tcpsyn -p tcp --dport 80 -j DROP

... и сравнительный анализ этого.