HTTP要求を1秒あたり最大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
。設定では常にそうです。)