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