将 ufw 规则映射到 iptables

将 ufw 规则映射到 iptables

我正在从 ufw 迁移到 iptables。

ufw 中有一个默认的“限制”规则,如果某个 IP 地址在 30 秒内发起 6 个以上连接,该规则就会生效 ( sudo ufw limit ssh)。我对 SSH 流量(端口 22)使用该限制规则。

我在 iptables 中读过很多不同的方法来做到这一点,这真是令人困惑。我不确定是否使用connlimitlimit或其他一些模块。

将这条规则 1:1 映射到 iptables 的最简单方法是什么?

答案1

ufw操作 iptables,所以既然你从 ufw 转移过来,我想你可以捕获你的 iptables 并看看 ufw 在那里做了什么。

答案2

使用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扩展

...也许其他人可以添加这一点。 :)

相关内容