为什么在互联网上留下密码 SSH 如此糟糕?

信息安全 SSH 互联网
2021-08-21 10:52:21

我多次听说过永远不要在互联网上打开密码的情况下离开 SSH。为什么这么糟糕?

我知道密码可以被暴力破解,但是如果它是一个非常强大的密码,需要花费大量时间才能破解呢?

除了暴力破解之外,还有更多的事情需要考虑,还是我错过了其他任何事情?

4个回答

为什么这么糟糕?

因为有大量的机器人只是在网上扫描开放端口并尝试登录,一旦扫描机器人发现一个开放的 SSH 端口,它可能会排队等待另一个机器人(或僵尸网络)尝试暴力破解密码。这里的风险之一是,他们最终可能会成功找出密码并控制服务器。

我知道密码可以被暴力破解,但是如果它是一个非常强大的密码,需要花费大量时间才能破解呢?

拥有长密码是一种缓解技术,但是蛮力攻击的资源(例如带宽、用于日志的磁盘空间和 CPU)消耗也可能造成破坏。

减轻

减轻对 SSH 的暴力攻击的一些技术:

主要风险是初始连接可能被中间人拦截,因此攻击者可以检索密码。

用户第一次连接到 SSH 服务器时,会显示类似于以下内容:

$ ssh scanme.nmap.org
The authenticity of host 'scanme.nmap.org (45.33.32.156)' can't be established.
ECDSA key fingerprint is SHA256:8iz5L6iZxKJ6YONmad4oMbC+m/+vI9vx5C5f+qTTGDc.
Are you sure you want to continue connecting (yes/no)?

现在,除非每个用户都将验证该指纹以确保它是您的服务器,否则存在他们的连接被拦截的风险(例如,他们网络上的 MITM 直接拦截流量,或某种类型的 DNS 劫持)。

这是因为 SSH 是“首次使用时信任”。如果您之前已连接到该主机并且密钥突然更改,则会显示以下消息,警告用户。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.

对于已经从该特定客户端连接的用户,该警告将减轻这种攻击。

在互联网上打开 SSH 的其他不太重要的风险是,那里有许多机器人寻找并尝试登录此类服务器。如果您在所有帐户上都有一个强密码,那么泄露的风险非常低(强密码是指绝对不会出现在攻击者可能使用或创建的单词列表中的密码)。应用通常的规则——例如不重复使用密码、安全存储密码等。缺点是日志文件将随着收到的所有身份验证尝试而迅速建立。

关于任何身份验证模式下的 SSH 本身,由于这是另一项服务,因此有可能发现漏洞,这些漏洞可能会被此类机器人自动利用。但是,这种风险并不比 Web 服务器或 Web 应用程序被利用的风险大。与任何具有公共服务的服务器一样,建议采用良好的漏洞管理策略。

另请参阅此答案,与 SSH 警告消息和继续风险相关的部分,即使使用公钥身份验证也是如此。

我多次听说过永远不要在互联网上打开密码的情况下离开 SSH。为什么这么糟糕?

我知道密码可以被暴力破解,但是如果它是一个非常强大的密码,需要花费大量时间才能破解呢?

禁用密码 SSH 登录的最大好处实际上是防止使用弱密码的默认帐户或选择弱密码的用户被暴力破解。现在您可能只有几个没有弱密码的帐户,但将来可能会安装一些东西,但情况并非如此。随着时间的推移,您拥有的系统越多或复杂性越高,风险就越高。

轶事案例:我的一个熟人丢失了他的服务器和上面的所有东西,因为他给了一个朋友一个没有更改密码的changeme帐户。也没有创建远程备份,所以他失去了一切。

默认情况下,SSH 密钥更加安全。除非密钥生成被破坏,否则最低级别的妥协需要获取用户密钥。而对于密码,该级别只是在有人暴露弱密码时进行猜测。这是为了确保防止未来的人为失误。

要考虑的另一件事是 sshd 守护进程本身存在漏洞的可能性(尽管已知一段时间或零日),攻击者可能会利用这些漏洞。为了缓解这种情况,最好只向使用您信任的已知 IP 或通过 VPN(如果可能)工作的用户打开 sshd。