我遇到一个问题,我的服务器允许 sftp 进入,但我无法从服务器出去。
我已经修改了数据包过滤器以允许这样做。
我添加的规则如下
SFTP 传入
协议:TCP 源端口:任意 目标端口:22 源 IP 地址:任意 IP 地址 源掩码:0.0.0.0 目标 IP 地址:我的 IP 地址 目标掩码:255.255.255.255
SFTP 传出
协议:TCP 源端口:22 目标端口:任意 源 IP 地址:我的 IP 地址 源掩码:255.255.255.255 目标 IP 地址:任意 IP 地址 目标掩码:0.0.0.0
无论如何,我已经禁用允许端口 22 和 TCP 的思科盒。
我看不到是什么阻碍了它,但猜测它可能是目标掩码或源掩码。
答案1
您的防火墙规则在服务器部分看起来没问题。如果问题是,您从服务器计算机(您将以此为目的用作客户端)尝试连接到远程 SFTP (SSH) 服务器,则您的防火墙规则是错误的。
建立传出 SFTP 连接并不意味着源端口将是 22(事实上,这种情况非常罕见,如果已经有服务器在该端口上运行,情况就更是如此)。目标端口也将是 22,但源端口通常是随机的(或者不是太随机,但在不同的范围内,通常未被服务器端口使用,比如 > 10000)。对于传出连接,您的第一条规则仍然适用,但它需要不同的目标掩码。
问题是如果你允许这样的事情:
Protocol: TCP
Source Port: Any
Destination Port: 22
Source IP Add: Any
Ip Address Source Mask: 0.0.0.0
Desination IP Address: My IP Address
Destination Mask: 0.0.0.0
您将向所有能够调整其客户端以从端口 22 进入的人开放所有端口,这可不是什么好事。您需要的是仅允许新的和已建立的传入连接到端口 22。
说实话,我不确定这在 Windows 中是如何工作的,但这就是NEW
、 ESTABLISHED
和在Linux 上RELATED
的用途。iptables
答案2
如果您的意思是对于传出流量,服务器充当客户端,那么您的传出规则就是错误的,正如 Bruno 在他的回答中所述。当充当客户端时,服务器将在其一端使用临时端口并通过远程服务器的端口 22 连接到远程服务器。如果这是您的意思,那么您需要在出站规则中反转源端口和目标端口。源应该是任何端口,目标应该是端口 22。