Ich dachte daran, meinen IP-Tabellen die folgende Regel hinzuzufügen:
-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
um einen versehentlichen Ajax-basierten Missbrauch (zu viele Anfragen) meiner Web-API zu vermeiden.
Wird diese Art der Statusfilterung aufgrund der Häufigkeit von Port-80-Anfragen als ressourcenintensiv oder anderweitig verschwenderisch angesehen (im Gegensatz zu etwas wie einer Ratenbegrenzung von Port 22, die zu viel weniger Status führen würde)? Mir ist klar, dass dies in einer dedizierten Firewall ideal wäre, aber ich versuche herauszufinden, was ich auf meinem Server erreichen kann.
Antwort1
Ich weiß nicht, wie die Leistung bei Verwendung des Statusmoduls im Vergleich zur Filterung von SYN-Paketen ist (was effektiv denselben Zweck erfüllen würde).
Vielleicht können Sie dies testen ... versuchen Sie, Ihre Regel hinzuzufügen - und verwenden Sie dann Apache Bench oder Ähnliches, um so viele Anfragen wie möglich zu generieren, während Sie die CPU- und Speichernutzung Ihres Servers überwachen. Versuchen Sie dann, die folgende Regel hinzuzufügen:
-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
... und das als Benchmark zu verwenden.