Firewall

限制每秒全域連接數

  • April 10, 2012

我想限制埠上所有傳入新連接的數量,而不僅僅是來自一個 IP,例如:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/s -j DROP

但我不明白出了什麼問題。它工作了一次/兩次,嘗試了不同的限制,之後它現在丟棄了所有新連接。(是的,在以各種形式添加規則之前,我每次都刷新了 iptables)。

EDIT1:我試過了

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 5 --hitcount 5 --name SSH -j DROP

似乎工作。這會影響所有連接還是僅影響來自同一 IP 的連接?

如果要將新連接的數量限制為3/s,則必須將規則目標更改ACCEPTDROP

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/s -j ACCEPT

您可以閱讀man iptables

limit
  This module matches at a limited rate using a token bucket filter.
  A rule using this extension will match until this limit is reached

因此,您的規則將丟棄所有新連接,直到達到限制!!!

引用自:https://serverfault.com/questions/378124