UFW 不允许 ssh,尽管我已允许

UFW 不允许 ssh,尽管我已允许

在 ubuntu 上使用 UFW 有点困难,我有内部和外部适配器,在这个特定的服务器上,我只希望公共访问端口 22,即适配器“eno1”

为了实现这一点我首先阻止了一切:

ufw 拒绝任何用户进入 eno1

然后我允许 ssh 使用端口 22:

ufw 允许 eno1 进入任意端口 22

我的规则现在如下所示:

To                         Action      From
--                         ------      ----
Anywhere on eno1           DENY        Anywhere                  
22 on eno1                 ALLOW       Anywhere                  
Anywhere (v6) on eno1      DENY        Anywhere (v6)             
22 (v6) on eno1            ALLOW       Anywhere (v6) 

但是我现在无法从外部通过 ssh 进入服务器,即使它清楚地显示端口 22 允许。(我需要将服务器置于恢复模式并删除规则才能重新进入)

答案1

规则的顺序很重要,因为与数据包匹配的第一个终止规则决定了其命运。

在您的例子中,ssh 数据包到达并匹配第一条规则,导致 DROP。该数据包永远没有机会命中下一条 ALLOW 规则。

经验法则:规则越具体,它就应该越早出现在链中。不太具体的规则(如匹配所有数据包)应该最后指定。

相关内容