是使用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 

以避免意外的基于Ajax的滥用(太多请求)我的Web API。

这种有状态的过滤是否被认为是资源密集型的,或者由于端口80请求的共同性而造成浪费?(比如速率限制端口22会导致更less的状态)? 我意识到在专用的防火墙中这样做是理想的,但我试图看看我可以在我的服务器上完成什么。

我不知道在SYN数据包上使用状态模块和过滤的性能(这将有效地执行相同的技巧)。

也许你可以testing这个…尝试添加你的规则 – 然后使用Apache Bench或者类似的方法,在监视你的服务器的CPU和内存使用情况时,尽可能多地生成请求。 然后尝试添加以下规则:

 -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 

并以此为基准。