使用 --string Debian 8 排除 iptables HTTP 速率限制

使用 --string Debian 8 排除 iptables HTTP 速率限制

我试图将 HTTP 请求限制为最大 20 个请求/秒(如果超过该数量则拒绝),但我想从此规则中排除对 (.png、.js、.css) 文件的请求,我使用了以下代码

iptables -N RATELIMITING
iptables -I INPUT -p tcp --dport 80 -m string --algo bm --string "/" -j RATELIMITING
iptables -A RATELIMITING -p tcp --dport 80 -m string --algo bm --string "\.(jpe?g|png|gif|js|css|woff)$" -j RETURN
iptables -A RATELIMITING -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -A RATELIMITING -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 1 --hitcount 20 -j REJECT --reject-with tcp-reset
iptables -A RATELIMITING -j RETURN

它确实会阻止超过 20 个请求,但不会从规则中排除 (.png、.js、.css) 文件,如果我向这些文件发送 20 个请求,您也会被阻止,我在这里做错了什么?

答案1

我的iptables-extensions手册页没有提到这里允许使用正则表达式,所以我想它们是不允许的。您必须为您的选择创建单独的规则。 (顺便说一句,您无需重复链-p tcp --dport 80中的部分RATELIMITING:在您的设置中始终如此。)

相关内容