我们每周都会收到我们网站的安全报告。它说我们的 SSH 版本已经过时(我们有 OpenSSH_6.7p1,他们推荐 7.5 或更高版本)。
由于我们的发行版还没有稳定的版本,我们认为我们只需关闭所有面向互联网的机器上的端口 22(无论如何都是好的做法,不是吗?)。
今天来了新的报道。它仍然陈述了关于 SSH 版本的 10 个问题。
所以我的问题是:
- 如果端口关闭,他们如何找出 SSH 版本?
- 无论版本如何,关闭端口都不会成功缓解所有 SSH 安全问题?
我们每周都会收到我们网站的安全报告。它说我们的 SSH 版本已经过时(我们有 OpenSSH_6.7p1,他们推荐 7.5 或更高版本)。
由于我们的发行版还没有稳定的版本,我们认为我们只需关闭所有面向互联网的机器上的端口 22(无论如何都是好的做法,不是吗?)。
今天来了新的报道。它仍然陈述了关于 SSH 版本的 10 个问题。
所以我的问题是:
“SSH 版本过时”不一定是安全问题。他们的建议是安装最新版本,但除非您想要最新的功能,否则运行最新版本没有任何好处。对于安全性,重要的是您已应用所有安全修复程序。许多发行版对他们发布的版本应用了安全修复。例如,CentOS 6 仍然提供 OpenSSH 5.3p1,并且会在 2020 年之前收到安全更新;当前版本 CentOS 7 附带 OpenSSH 6.6.1p1。Debian jessie 发布了 OpenSSH 6.7p1,并且还将在 2020 年之前收到安全更新,而最新版本的延伸发布了 OpenSSH7.4p1。
通常,您不应该在您的发行版之外安装关键基础设施组件(如 OpenSSH)的软件包。如果这样做,请务必订阅安全公告并尽快应用安全更新。如果您现在只安装 OpenSSH 7.5 并在以后忘记它,那么您将大大削弱您的安全性。
如果您收到的报告仅显示“版本已过时”,甚至没有尝试确定是否已应用适当的安全补丁,那么这是一份糟糕的报告。
无论如何,关闭不需要它们的服务器上的外部 SSH 访问是一个好主意。一台安全更新落后的机器,或者一台用户密码或密钥被泄露的机器,都可能让攻击者进入您的网络。限制对单个网关机器(或用于冗余的一小组机器)的外部访问通常是一个好主意,其中更新和帐户受到更密切的监控。关闭防火墙中的端口将缓解直接访问的问题。间接访问(攻击者在没有做任何重要事情的机器上进入网络,并将其用作中继进入更重要的机器)仍然是一个问题。
您可以通过ssh -v MACHINENAME从外部运行自行检查 SSH 访问。如果 MACHINENAME 正在运行 SSH 服务器并且防火墙没有阻止您,您会看到类似
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1 Debian-5+deb8u3
正如我所写,这是 Debian jessie 上的当前版本,非常好。
您可以尝试运行 nmap -sV IP -p 22 来检查端口是否仍然打开。也许这是报告中的问题?他们一直报告版本,直到他们可以验证它已经改变?
关闭端口确实可以缓解 SSH 中的问题。如果 SSH 在内部网络上仍然可用,如果您不能信任内部网络,这可能仍然是一个问题。SSH 应该在机器上可用吗?如果没有,请禁用它。如果它应该可用,您应该将它放在一个单独的 VLAN 中进行管理。