connlimit
ermöglicht mir die Begrenzung der Anzahl von Verbindungen pro Client/Dienst. Wie kann ich eine solche Regel mit den IP-Sets kombinieren, die in neueren Versionen des Linux-Kernels und Netfilters verfügbar sind?
Antwort1
Nehmen wir an, wir haben ein IP-Set mit dem Namen MYTESTSET
und dieses IP-Set ist vom Typ hash:ip
. Es speichert nur IP-Adressen.
Gleichen Sie es dann mit Ihrem IPset ab und anschließend mit der connlimit
Match-Erweiterung mit den gewünschten Parametern.
iptables -A INPUT -p tcp -m set --match-set MYTESTSET src -m connlimit --connlimit-above 1 --connlimit-saddr --connlimit-mask 32 -j DROP
Dies bewirkt Folgendes: Für jede Quelle innerhalb des IP-Sets werden die Verbindungen gezählt und wenn mehr als eine vorhanden ist (--connlimit-above 1), wird sie gelöscht, wodurch die Anzahl der Verbindungen begrenzt wird.pro Quelle im IP-Setzu 1. (Sie können auch andersherum vorgehen, indem Sie --connlimit-upto xxx
und -j ACCEPT
anstelle von verwenden DROP
.)
Wenn Sie das gesamte Set berücksichtigen und 1 Verbindung zulassen möchtenfür alle Quellen im IP-SetStellen Sie dann den --connlimit-mask
Schalter auf 0.