为什么通过 SSH 对服务器的外部访问被认为是不安全的?

信息安全 网络 SSH
2021-09-07 18:23:15

我最近与我的老板和他们使用的 IT 承包商进行了交谈。我允许外部通过 SSH 访问网络上的机器的请求被拒绝,理由是 SSH 不安全。我要求解释,但遗憾的是不明白 - 承包商说 SSH 不安全,但不知道为什么。

为什么 SSH 不安全?在我们的谈话中,我似乎遗漏了一些我非常想了解的东西。

我对 SSH 的建议包括使用基于密钥的访问和 fail2ban。

更新:为了解释讨论,当我问承包商为什么他认为 SSH 不安全时,他一字不差地说,“我不知道”,然后在接下来的谈话中以更高的语气愤怒地继续进行。我试图自拔,但不得不抵挡一些稻草人,以免因为他的纠缠而显得完全无能。我提出了这个问题的大多数好的答案都在下面提出的论点,但它们很快被忽略了。

如果以怀疑的眼光来看,这些相同的答案是极不令人信服的。我不确定我的(这是 IT 承包商的)问题是否会为任何一个方向设置一个永远无法满足的不合理的高举证责任。如果是这种情况,那么谈论它是明智的。

4个回答

SSH 本身通常不被认为是不安全的,但它是一种管理协议,一些组织需要两层或多层控制才能访问管理控制台例如,首先通过 VPN 连接,然后打开通过该 VPN 连接的 SSH 会话。这只是提供了多层深度防御,并防止您的系统直接受到最新 SSH 漏洞的影响。

注意:这不是 SSH 本身的弱点,许多组织仍然会在高 TCP 端口上公开 SSH 以用作 SFTP 服务器,然后让脚本将数据移入和移出该系统(不允许外部 SSH/SFTP 服务器连接到他们网络的其余部分)。

所有协议最终都存在漏洞,因此如果您可以要求使用两个不同的协议(即 IPSEC VPN 和 SSH),并在发现漏洞时对补救工作保持纪律性,那么两个协议中同时存在已知漏洞的时间窗口您的网络应该非常小。从统计上讲,使用两种协议的要求应该会减少您将单个协议暴露在已知漏洞中的时间(假设您实际上修补/修复了漏洞)。

作为一个糟糕的文本图形,如下所示:

Time ---> 

IPSEC ------------------------     ----------------

SSH   ---------       -----------------------------

与只有 SSH 或 VPN 本身相比:

SSH   ---------       -----------------------------

在第一个示例中,当出现 SSH 漏洞时,没有针对 IPSEC 的漏洞,反之亦然,因此在这个粗略的示例中,您的系统从来没有在两层都存在漏洞的情况。这种深度防御是保护这些协议背后的系统的原因,这些协议有时可能存在漏洞。

在第二个示例中,SSH 本身,一旦出现漏洞、密码泄露或任何其他问题,攻击者可以在暴露窗口期间直接访问您的易受攻击的系统。

我会问是否有任何其他管理协议被公开,如果是,那么您可以质疑技术偏见,但很可能您所在的组织不允许直接从 Internet 访问任何管理协议。

我要求解释,但遗憾的是不明白 - 承包商说 SSH 不安全,但不知道为什么。

为什么 SSH 不安全?在我们的谈话中,我似乎遗漏了一些我非常想了解的东西。

将安全视为二元“安全”或“不安全”反映了对安全的理解不足;安全始终是一个连续体,没有什么是绝对安全的。

如果他/她甚至无法说明 SSH 不安全的原因,但他/她坚决认为它是不安全的,那么有问题的承包商似乎非常缺乏关于 SSH 的信息。无知会滋生恐惧,我猜承包商是对恐惧做出反应,而不是对知识做出反应。

SSH 的安全性不亚于主要供应商的 VPN。VPN 也有安全漏洞,而且不是“由魔法制成的”。我们从 NSA 的各种泄密中知道这一点,并且没有理由相信这些漏洞仅在 NSA 手中。

真正的问题归结为访问需求与安全需求,而不是一种协议优于另一种协议。远程访问可能会在一定程度上降低您的安全性。两种远程访问方法将进一步降低您的安全方法。是否启用一种或多种远程访问方法应根据所涉及的权衡来判断,而不是通过将“安全性”视为二元概念的错误感觉来判断。

首先,任何说“这不安全,但我不知道为什么”的人完全否定了在此事上的权威发言权。

一些人谈到了为什么通常不鼓励打开攻击向量,但如果使用得当,这里有一些事情可以消除恐惧的必要性:

  • VPN 进入网络,然后通过 SSH 连接到设备
  • 使用非标准端口
  • 使用私钥对
  • 实施诸如fail2ban之类的工具
  • 拒绝 root 用户登录

老实说,这些选项之一会使黑客攻击变得更加困难。实施至少两个意味着您可以无忧无虑地使用 SSH。

那个 IT 承包商真的应该考虑一个新的行业。

究竟什么是不安全的?

简而言之,“为什么对 SSH 的外部访问被认为是不安全的?” :这不是不安全的“SSH” ,而是您问题的“外部访问”部分。

SSH 只是将内部网络向外部世界开放的一种技术手段(风险很高)。它可以单独使用或与其他技术相关联,以实施您的远程访问策略。

远程访问策略是正式定义,说明谁可以访问什么,何时何地,它定义了所有规则,然后将使用各种技术控制来实施这些规则,这些技术控制将依次提供适当的身份验证、授权和审计服务。当然,所有这些都需要正确记录和维护。

当然,您可以在没有所有这些管理和维护负担的情况下继续前进,但重点是:走这样的捷径恰恰是您的问题不安全的地方。

那么,为什么对 SSH 的外部访问被认为是不安全的呢?因为就公司预期的投资回报而言,正确实施它会花费太多。

成本问题

这里的成本与购买软件无关,而仅仅是先支付人们时间来设计和设置此服务,然后随着时间的推移对其进行维护(虽然这些人忙于这个,但他们不会做其他任务) . 因此,实际成本将在很大程度上取决于薪水、当前能力和当前基础设施的复杂性。

从技术的角度来看,基于密钥的身份验证和 fail2ban 是一个很好的且有据可查的解决方案。在高端口上运行它也会使其脱离大多数机器人的视线。但这并不能阻止例如一个真正的员工从他的家庭计算机连接到内部网络,该计算机充满了各种蠕虫、病毒和后门,从而在不知不觉中构成了公司的网络。这是您可能必须解决的风险之一。

从管理的角度来看,“老板”可能更感兴趣的是(货币)权衡各种风险与预期的投资回报:建立和维护这将花费多少?这将使公司赚取或节省多少?万一发生灾难会付出什么代价?

风险始终存在,无处不在。如果您设法从业务角度表明,开放内部网络(或者可能是其中一些明确定义的部分,这将是降低风险的有效方法)对公司来说是一个有利可图的举措,那么您将完成一半如果不是大部分旅程。那么如何做将只是一个技术选择问题,具体取决于您计划做什么。但在深入研究技术细节之前,您当然必须从业务和功能的角度解决问题。