我有一台服务器充当直接连接到互联网的反向代理。我通过非标准端口上的 ssh 访问这台计算机。它似乎不太安全。如果有人找到了 ssh 端口,他们可以暴力破解它并获得对计算机的访问权限。
有没有更安全的方法来配置它?
按照设计,暴力破解 SSH 非常缓慢且耗时。使用 OpenSSH(大多数实现类似)在提交错误密码后会有几秒钟的延迟。三次失败后,连接断开。这使得暴力破解即使是中等熵的密码也慢得令人难以置信。通常,只要您的服务器没有大量线程接受连接并且您的密码足够复杂,那么暴力破解 SSH 就不是问题。
不过@demure 建议使用denyhosts 或sshguard 不仅可以让您放心,还可以帮助您检测攻击并在必要时采取行动。@Steve 建议使用公钥认证也是一个很好的预防措施。如果您真的偏执,请考虑添加密码和公钥身份验证以实现双因素身份验证。你拥有的东西和你知道的东西。
我使用fail2ban并自己用C#编写了一个实用程序,使用mono添加任何攻击我的SSHD的IP,并将它们也添加到/etc/hosts.deny。现在我看到有一些顽固的黑客,他们的 IP 地址不断被拒绝。不过,他们总是第二天回来。Digital Ocean 在这里有一个很好的设置fail2ban 的教程。
编辑:我将日志记录从用户名密码更改为基于证书的身份验证,这似乎减少了大部分攻击,但有些人甚至使用暴力破解证书。我现在根据新日志更改了我的代码。这似乎工作正常。
暴力 SSH 攻击可以从服务器中吸取资源。在处理器 (CPU) 和内存 (RAM) 数量最少的低功率服务器上,这个问题尤其令人恼火。
我们开发了一种解决方案,可以下载已知 SSH 攻击者的 IP 地址黑名单并将其添加到/etc/hosts.deny
文件中。
该解决方案在 GitHub 上作为名为am-deny-hosts的开源项目发布。该项目由一组 shell 脚本组成,这些脚本可以在不占用大量时间、CPU 或内存的情况下完成这项工作。