升级后运行旧版 SSH 服务器

升级后运行旧版 SSH 服务器

我们有一台运行 16.04 的 Ubuntu 服务器,用于客户网站。客户最近进行了安全审核,其中一条建议是将我们的 OpenSSH 版本至少更新到 7.4 版,但 16.04 预装了 7.2 版。我尝试直接更新,但 7.2 是最新版本,所以我们现在尝试手动安装 7.6 版。

我已经下载并安装了 7.6,并且它似乎运行良好:

sshd 
OpenSSH_7.6p1, OpenSSL 1.0.2g  1 Mar 2016

但是,当远程连接或者只是运行时,ssh -v localhost它使用旧的 7.2 进行连接:

root@server-new:~# ssh -v localhost
...
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 
Ubuntu-4ubuntu2.2
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH* compat 0x04000000
...

这基本上是我经历过的过程,除了 7.6 包: https://gist.github.com/techgaun/df66d37379df37838482c4c3470bc48e

我注意到安装目录现在不同了,以前是,/usr/sbin/ssh但现在是/usr/local/sbin/ssh

root@server-new:~# which sshd
/usr/local/sbin/sshd
root@server-new:~# which ssh
/usr/local/bin/ssh

我确实更新了 /etc/init.d/ssh 和 /etc/init/ssh.conf 以使用新路径,但即使重新启动后似乎也没有太大区别。

我们做错了什么?我假设我们只需要指定在启动时使用 SSH 安装,但我不知道该怎么做。

我发现了很多其他的线索,但似乎没有什么帮助,例如

https://serverfault.com/questions/310384/problem-with-upgrading-openssh-to-the-latest-version

在 12.04 中更新 OpenSSH 服务器?

https://forums.cpanel.net/threads/whats-it-take-to-update-to-openssh-5-1-or-higher.170818/

谢谢

答案1

这是经典的“我想要 LTS 但是我不想要 LTS”逻辑陷阱。

Ubuntu LTS 的一个目的是为您提供稳定.Ubuntu 通过以下方式实现此目的不是增加软件版本。当您决定使用 LTS 时,您将自己锁定在这些版本中没有变化两年。

(如果这不是您想要的,那么就不要使用 LTS。)

有一个小例外:安全更新。Ubuntu 安全团队发布安全更新没有升级到下一个上游版本(这当然会违反 LTS)。相反,他们会修补源代码。

因此,当发现 OpenSSH 7.2 中的漏洞时,会发生两件事:

  1. OpenSSH 网站宣布每个人都应立即升级到新的 OpenSSH 7.3

  2. 但是,Ubuntu 安全团队向您推送了 OpenSSH 7.2p2-4ubuntu2.2。

从安全角度来看,它们是相同的 -全部两者中都修复了相同的漏洞。只是你的安全审计员没有意识到这一点。

您有三个选择:

  1. 坚持使用 LTS:您可以意识到审核员只是被误导了,对 Ubuntu 安全团队做了一些研究,但最终什么也没做……因为实际上不需要采取任何额外的安全措施。

  2. 关注审计员:您可以从 LTS 跳转到 Ubuntu 的正常 6 个月发布版本。如果发布升级改变了您的工作流程或生产系统,那么这可能意味着每六个月需要做大量额外工作。

  3. 建立一个Frankensystem:这是两全其美的,风险更大,维护起来也更困难。您可以尝试从 PPA 安装较新版本的 OpenSSH 或将较新版本的 Ubuntu 安装到较旧的 LTS 上。可能会破坏您的系统,也可能不会。可能会破坏未来的升级和安全更新,也可能不会。

相关内容