为什么我不能使用这些防火墙规则来使用 SSH?

为什么我不能使用这些防火墙规则来使用 SSH?

我目前正在尝试通过 Windows 10 主机上的 SSH 连接到我的 Linux Mint 客户机。更确切地说,我正在尝试在考虑特定防火墙规则的情况下成功连接到客户机。

使用 Virtual Box,我为 Linux Mint 虚拟机启用了仅主机适配器。

当使用该特定的允许所有规则通过防火墙允许任何和所有通过端口 22 的流量时,我能够从我的 Windows 主机使用 SSH 成功连接到客户机。

但是,我希望 Linux 客户机仅有的接受我的SSH 的 IP。换句话说,我希望它只接受我的 22 端口 IP(如果这有意义的话)。

我使用这些规则配置了 Linux 防火墙,不能连接成功后:

GUEST IP 22/tcp ALLOW IN HOST IP 22/tcp

HOST IP 22/tcp ALLOW OUT GUEST IP 22/tcp

注意:术语“GUEST IP”和“HOST IP”是上下文中关联 IP 地址的简单占位符。在本例中,GUEST IP 是来自 eth1 接口的主机专用适配器的 IP 地址。不用说,HOST IP 代表在我的 Windows 10 主机上找到的主机 IP 地址。

我已尽我所能使其发挥作用,但老实说,我现在不知道如何得到我想要的东西。

我当前的设置:

  • 带有 MobaXtrem SSH 客户端和 FreeSSHd SSH 服务器的 Windows 10(主机)
  • Linux Mint 17(Guest)带 openSSH 客户端和服务器
  • 根本没有触碰 Windows 防火墙
  • 目前已将 Linux 防火墙设置为删除,但已在提及的规则中添加

我想让大家知道,我对基于 Linux/Unix 的系统的经验是非常由于使用 shell、SSH 和配置防火墙而受到限制。

我实际上是一天前才安装了上述 SSH 软件。

总结我想将我的 Linux 客户机配置为仅接受来自主机的 SSH 流量。我假设这是通过 IP 完成的,但我不确定如何操作。将上述防火墙规则添加到 Linux 客户机后,连接不再成功,每次尝试都会超时。

附加信息: - 我见过一些当地人提到端口转发;我试过了,没用。考虑到我能够让它与仅主机适配器一起工作,我想即使没有那个解决方案也行。

作为旁白,是否可以使用 SSH 通过 Linux 客户机连接到 Windows 主机?我尝试从 Linux 终端执行此操作,但它一直说我没有权限这样做。

如果您需要澄清或补充信息,请随时询问。

提前致谢!

— TRG

答案1

TCP 连接有两个端口,源端口和目标端口。对于传出的 SSH 连接,目标端口为 22,但源端口为随机选择(只有极少数协议,例如 BGP,使用相同的源端口和目标端口。)

因此你需要放宽规则以:

allow incoming from hostIP (any)/tcp to guestIP 22/tcp
allow outgoing from guestIP 22/tcp to hostIP (any)/tcp

如果你担心客人重新连接到主机时,只要使用有状态的防火墙(允许属于现有连接的传出数据包)。

在 iptables 中,工作规则集如下所示:

-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT

# (Well, *I think* this should work.)
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j REJECT

(包括“允许 ICMP”,因为诚实地

相关内容