ufw似乎阻止所有传入连接时,默认阻止传出

我目前正在尝试在Ubuntu 12.04上configurationufw,但据我了解,它的行为很奇怪。 我试图允许在远程机器上的一些服务,否认一切。 我想 – 无论如何,我可能已经弄错了 – 拒绝所有的默认,然后允许一些服务将服务于我的目的,因此我发出了以下命令

ufw allow ssh ufw default deny incoming ufw default deny outgoing 

据我了解,最后的命令只会阻止我想从远程计算机到其他计算机build立的每个连接,但是它导致了我想要build立到远程计算机的所有连接,最终被拒绝。 我很确定,这个命令,而不是拒绝传入引起这种行为。 对我来说,这是非常直观的。 我build议,如果我明确地允许SSH,我将能够build立一个连接到远程机器,独立于默认设置。 更令人感到奇怪的是阻塞传出连接打破了我的SSH。

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

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

所以在服务器上连接被允许,因为在22端口上的传入连接是允许的,但是当你的ssh服务器响应它发送一个响应数据包从22端口到serverB 3252端口和传出连接,由于ufw default deny outgoing被阻止。

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

所以你必须在输出链中添加一个允许规则,对于源端口为22的数据包或者在local_port_range内的目的端口 – 通常是32768-61000,但是可以改变如此更好的使用源端口基本过滤。