OpenVPN 路由我的网络流量,但不路由出站 SSH 流量?

OpenVPN 路由我的网络流量,但不路由出站 SSH 流量?

我刚刚按照 Digital Ocean 的指南设置了一个新的 OpenVPN 服务器,到目前为止,大部分情况都很好。当我访问 ipchicken.com 或任何其他 IP 网站时,它会显示我所连接的 VPN 的 IP 地址。

但是,我想设置 ssh 防火墙规则,只允许在源 IP 地址为本身。我无法实现这一点,因为我仍然可以看到,当我启动 SSH 连接时,它显示最后一个 IP 地址来自我的家庭 IP 地址而不是 VPN 的 IP。

因此,本质上,我希望它对于我连接到 VPN 是必需的,然后 SSH 才可访问。似乎我可能不得不对路由做一些疯狂的事情才能实现这一点——不确定。当我在其他系统上设置防火墙规则以在允许 SSH 之前要求 VPN 网关的 IP 时,它工作得很好。无论出于什么原因,通过 SSH 进入 VPN 网关本身似乎总是能识别出我来自它自己的 IP 地址之外。

任何帮助将不胜感激。

答案1

我只是不想让 SSH 暴露在互联网上,特别是如果我有一个好的、安全的 VPN 解决方案。还有其他想法吗?

两个选择——更改 ssh 监听的位置,或者防火墙:

更改 sshd 的监听方式

是的。设置 ssh 不监听公网地址,只监听 VPN 地址。

如果你运行,sudo editor /etc/ssh/sshd_config你会看到两行定义:

# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0

它们被注释掉了,默认监听所有接口。要限制它,只需添加一行,如下所示:

ListenAddress 10.1.2.3

IP 应该是为 VPN 接口定义的 IP。使用以下命令重新启动 sshd:sudo systemctl restart sshd

防火墙

添加一条防火墙规则,删除公共接口上的 ssh:

sudo ufw deny in on eno0 to any port 22 proto tcp

这将删除接口上的 ssheno0

无论哪种情况,您都将无法再通过 ssh 连接到公共 IP,但您必须使用为 VPN 接口定义的 IP。

您看到此行为的原因是 VPN 客户端需要与 VPN 服务器通信。因此,它会通过您的网络网关添加针对该单个主机的路由,然后再替换路由。当然,SSH 将使用相同的路由。

请注意,我根本不会这样做。如果 VPN 停止工作,您将无法使用 ssh 访问。此外,ssh 是制成是安全的。它应该在公共互联网上使用。如果您使用基于密钥的身份验证进行设置,并禁止密码身份验证,那么它基本上与 VPN 解决方案一样好。

相关内容