服务器是否应该隐藏在 VPN 后面以进行 SSH 访问?

服务器是否应该隐藏在 VPN 后面以进行 SSH 访问?

我们有三个服务器实例,Nginx/PHP、PostgreSQL 和 ELK 堆栈。我的想法是,PHP 服务器将允许端口 22、80 和 443 的公共访问,ELK 服务器将开放端口 5601 供公共访问,但所有其他相互通信仅允许通过其私有 IP 地址进行。

我是否也需要将它们全部隐藏在 VPN 后面?这样做有什么好处?VPN 没有其他用途,它不是全公司范围的,它只是为了保护这些服务器。

答案1

视情况而定。通常这是有争议的。

BSD 家族有一个blacklistd,非常适合在应用层过滤暴力破解器/扫描器。Linux 很傲慢,所以他们只有一个特殊的 Python 框架失败2ban,在我看来,它应该在 alfatest 期间被拒绝,并且不允许进入任何生产级安装。

另一方面,如果您不允许 root 通过 ssh 登录(这是常见的安全选择),那么您就有额外的暴力破解障碍(再次,几个 Linux 发行版坚持认为 root 应该能够通过 SSH 登录)。

仍有争议。有些工程师喜欢将 sshd 绑定到其他端口,而不是传统的 tcp/22,有些工程师只允许通过 VPN 进行 ssh(看,这告诉我们一些关于失败2ban我已经关闭了。这有点像个人选择。我自己不会关闭服务器上的 tcp/22,但我使用密码策略,不允许 root 通过 SSH 登录。有人可能会说我在边缘行走。我说 - 在 tcp/2202 上使用 ssh 是一种自我折磨。

答案2

服务器是否应该隐藏在 VPN 后面以进行 SSH 访问?

也许吧。具有现代安全实践的应用程序不需要无缘无故地使用 VPN。意识到网络边界不会自动确保安全,一个流行的术语是“零信任”。

私有 IP 地址不是出于安全考虑的。如果所有主机都有公共地址 (IPv6),则需要考虑防火墙规则。允许从任何地方使用 tcp/22 进行 ssh 直接访问。并允许从任何地方使用 443/tcp 访问 Web 服务器。但只需要从需要数据库访问的主机允许 5432/tcp,而不是一般的互联网。ssh 和 http 历来更面向公众,因此请公开 Web 应用程序而不是数据库服务器。

当然,要维护这些主机以确保它们的安全。及时更新安全更新。使用强身份验证,如 ssh 密钥。审计访问,尤其是特权用户的访问。

相关内容