ufw 似乎默认阻止传出连接,但却阻止了所有传入连接

ufw 似乎默认阻止传出连接,但却阻止了所有传入连接

我目前正在尝试在 Ubuntu 12.04 上配置 ufw,但据我所知,它的行为很奇怪。我尝试在远程计算机上仅允许某些服务,拒绝其他所有服务。我认为 - 无论如何,我可能弄错了 - 默认拒绝所有服务,然后允许某些服务可以达到我的目的,因此我发出了以下命令

ufw allow ssh
ufw default deny incoming
ufw default deny outgoing

据我所知,最后一个命令只会阻止我尝试从远程计算机建立到其他计算机的每个连接,但它导致我尝试建立到远程计算机的所有连接最终被拒绝。我很确定是这个命令而不是拒绝传入导致了这种行为。对我来说,这是相当违反直觉的。我建议,如果我明确允许 ssh,我将能够建立到远程计算机的连接,而不受默认设置的影响。更奇怪的是,阻止传出连接会破坏我的 ssh。

如果有人能向我解释这一点,我将非常感激。

答案1

假设您在服务器 A 的 22 端口上有一个 SSH。服务器 B 尝试连接它。它从 net.ipv4.ip_local_port_range 内的随机端口(例如 3252)向服务器 A 的 22 端口发送数据包。 serverB:3252 -> ufw incoming allow 22 -> serverA:22

因此,在服务器 A 上允许连接,因为允许 22 端口上的传入连接,但是当您的 ssh 服务器响应时,它会从 22 端口发送响应数据包到服务器 B 的 3252 端口,并且由于ufw default deny outgoing被阻止而导致的传出连接。

serverB:3252 <- ufw outgoing default deny <- serverA:22

因此,您必须在传出链中为源端口为 22 的数据包或目标端口在 local_port_range 内的数据包添加允许规则 - 通常为 32768-61000,但可能会有所不同,因此最好使用源端口基础过滤。

相关内容