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
Web API の Ajax ベースの誤用 (リクエストが多すぎる) を回避するためです。
この種のステートフル フィルタリングは、ポート 80 リクエストの一般的さのために、リソースを大量に消費したり、無駄になったりすると考えられますか (ポート 22 のレート制限など、状態が大幅に少なくなるものと比較して)? これを専用のファイアウォールで実行するのが理想的であることは理解していますが、自分のサーバーで何ができるかを確認しようとしています。
答え1
状態モジュールを使用する場合と SYN パケットをフィルタリングする場合 (実質的に同じトリックを実行します) のパフォーマンスについてはわかりません。
これをテストしてみるといいかもしれません... ルールを追加して、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
...そしてそれをベンチマークします。