Ich möchte eine Ratenbegrenzung pro Quell-IP in iptables durchführen. Begrenzen Sie beispielsweise die Rate, mit der ein Host neue SSH-Verbindungen herstellen kann, auf 5 pro Minute. Meines Wissens gibt es zwei Möglichkeiten, dies zu tun:
Mit dem Hash-Limit-Modul
iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m hashlimit --hashlimit-name SSH --hashlimit-above 5/min \
--hashlimit-mode srcip -j REJECT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
Mit dem letzten Modul
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent \
--rcheck --seconds 60 --hitcount 5 --name SSH --rsource -j REJECT
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW \
-m recent --set --name SSH --rsource -j ACCEPT
Meine Fragen:
- Gibt es einen Unterschied im Verhalten dieser beiden?
- Welches ist mit Schwerpunkt auf Leistung vorzuziehen?
- Gibt es einen erheblichen Nachteil bei der Verwendung beider Module?
Antworten:
Nein, was Sie geschrieben haben, wird funktional dasselbe tun.
Wahrscheinlich hat die jüngste Version eine bessere Leistung, da sie eine Tabelle verwaltet, aber keine Hash-Buckets verwendet.
Ich bin mir nicht sicher, warum Sie beide verwenden würden. Sie würden die Leistung beeinträchtigen, wenn Sie beide Module verwenden, wenn Sie nur eines benötigen.
quelle
Hängt davon ab, wie viele Verbindungen Sie erwarten.
Bei den meisten Distributionen ist das aktuelle Modul so eingerichtet, dass nur eine kleine Anzahl von Adressen und Paketen pro Adresse gespeichert wird. 100 bzw. 20 . Wenn Sie also auf 21 Treffer beschränken möchten, wäre dies mit den Standardwerten der letzten Zeit nicht möglich.
Hashlimit scheint standardmäßig keine solchen Grenzwerte zu haben, obwohl die Anzahl der Buckets, die Anzahl der Einträge und der Ablauf angegeben werden können.
quelle