看来我的一台服务器正在遭受一次复杂的 ssh 字典攻击,因为我看到我的一台服务器上有人按字母顺序尝试输入一堆用户名,但密码却失败。
这件事不同寻常之处在于:
- 每 2 分钟仅可尝试一次
- 每次尝试都来自不同的 IP 地址
你能帮我理解吗如何做到这一点来自不同的 IP 地址,能否有效阻断? 攻击的缓慢持续性(可能需要几个月才能完成整个字母表)是否意味着什么具体的事情?
我还想知道是否有其他人目前在其公共 ssh 服务器上看到类似的活动(即,我们是特定目标吗,或者这个攻击者是否通过这次攻击覆盖了数千台 ssh 服务器?)
另外,我有什么办法可以透露正在尝试哪些密码(甚至是哈希值)?我注意到每个名字只被试过一次或两次。我认为他们正在尝试“密码”或用户的用户名 - 但我可以验证一下吗?
答案1
这个问题的简单答案是不要使用密码!
你可以:
如果必须使用密码,请仅允许来自您信任的子网的密码,而不是整个互联网。此外,在 22 以外的某个端口上运行 ssh 守护程序也会有所帮助。通常我不建议这样做,但如果它能减少您看到的攻击量,那就更好了。
针对您的具体疑虑,我们给出了以下答案:
- 我在运行的任何具有面向公众的 ssh 服务器的主机上都看到过此类攻击。
- 我怀疑他们正在使用根据过去的经验开发的用户名/密码词典。例如,我的日志中有
- 针对用户“ftp”的 18 次尝试
- 针对用户“论坛”的 23 次尝试
- 3 为用户“bernard”
- 1 代表用户“bret”
- 我也见过这种攻击,他们使用实际的特定于站点的登录信息,但这些信息可能是从该站点的开放式 ldap 服务器 (大学,一定会喜欢它们!) 中提取出来的。
- 这些攻击可能来自僵尸具有令人印象深刻的集中控制功能的计算机。
- 这些攻击每天每 1 到 5 分钟就会发生一次,每天全天发生
- 我刚刚尝试使用 sshd 来查看是否可以简单地收集攻击者正在尝试的密码,看起来你必须修补代码。
- 这些人们就是这样做的,发现密码通常是用户名或众所周知的密码(如 sql 或 admin)的排列。
答案2
以下是对 2008 年开始的“slow brutes”僵尸网络攻击的一些讨论和分析:Slow Brutes 最终综述
同一时期的其他讨论本网站建议
Fail2ban 只是提高服务器安全性的工具之一。当然,第一步是避免使用密码,而是使用 serverkey 身份验证。此外,限制允许的流量到某些 IP,禁止 IP 范围,使用 IP 表,使用黑名单(如 rsync-mirrors.uceprotect.net)来更新您的 iptables,以了解已知的 SSH 黑客来源和来源网络。有关上述 3 级黑名单的详细信息,请参阅 uceprotect.net。
我看到的与此类尝试相关的其他建议包括监控失败的尝试并阻止源 IP - 最终同一 IP 将用于另一次探测,因此通过检测并列入黑名单以尝试使用不存在的帐户登录,您可以逐渐减少威胁,但代价是增加防火墙规则处理。此外,最好不要在仅尝试一次连接后就阻止 - 确实会出现拼写错误。
答案3
最好的答案是,不要对此采取任何措施。只要您的用户拥有 8 个字符或以上的强密码,按照这个速度,暴力破解密码很可能需要大约 30 亿年!
答案4
安装denyhosts或fail2ban - 在一定数量的攻击后它将按IP进行阻止。denyhosts对/etc/hosts.deny进行操作,我相信fail2ban对iptables规则进行操作。