Ubuntu

將 ufw 規則映射到 iptables

  • September 13, 2019

我正在從 ufw 轉移到 iptables。

ufw 中有一個預設的“限制”規則,如果一個 IP 地址在 30 秒內啟動了 6 個以上的連接(sudo ufw limit ssh),該規則就會生效。我對 SSH 流量(埠 22)使用該限制規則。

我已經在 iptables 中閱讀了很多不同的方法來做到這一點,這只是令人困惑。我不確定是否使用connlimitorlimit或其他一些模組。

將此規則 1:1 映射到 iptables 的最簡單方法是什麼?

使用recent擴展

基於@Tomasz 的想法,我在 ufw 中創建了規則,並在 iptables 中檢查了結果。似乎 ufw 使用recent副檔名:

:LOG_REJECT - [0:0]

-A INPUT      -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
-A INPUT      -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 6 -j LOG_REJECT
-A INPUT      -p tcp -m tcp --dport 22                                                                         -j ACCEPT
-A LOG_REJECT                                                     -m limit --limit 3/min                       -j LOG --log-prefix "[LIMITED SSH]"
-A LOG_REJECT                                                                                                  -j REJECT --reject-with icmp-port-unreachable

使用limit擴展

哪個更整潔/更簡單:

:LOG_REJECT - [0:0]

-A INPUT      -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 12/minute -j ACCEPT
-A INPUT      -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW                            -j LOG_REJECT
-A LOG_REJECT                                                     -m limit --limit 3/minute  -j LOG --log-prefix "[LIMITED SSH]" --log-level 7
-A LOG_REJECT                                                                                -j REJECT --reject-with icmp-port-unreachable

(雖然我不確定icmp-port-unreachable在這種情況下是否是正確的拒絕消息。)

使用connlimit擴展

…也許其他人可以添加。:)

ufw在 iptables 上進行操作,所以既然你是從 ufw 搬來的,我想你可以擷取你的 iptables 並查看 ufw 在那裡做了什麼。

引用自:https://unix.stackexchange.com/questions/541534