Grokking复杂的字典攻击

看来我的一台服务器正在经历一个复杂的ssh字典攻击,因为我看到一大堆用户名按字母顺序排列,并且密码失败。

关于这个不寻常的事情是:

  • 每2分钟只有一次尝试
  • 每一个尝试都来自不同的IP地址

你能帮我理解如何从不同的IP地址做到这一点吗, 它可以被有效地阻止吗? 而且攻击缓慢持续(可能需要几个月的时间才能通过字母表)意味着什么具体的?

我也有兴趣知道是否有其他人正在他们的公共ssh服务器上看到类似的活动(例如,我们是一个特定的目标,还是这个攻击者用这个攻击来掩盖成千上万的ssh服务器?)

另外,有什么方法可以让我揭示什么是密码(甚至哈希)正在尝试 ? 我注意到,每个名字只被尝试一次或两次。 我假设他们正在尝试“密码”或用户的用户名 – 但我可以validation这一点?

简单的答案是不要使用密码!

您可以:

  • 使用ssh密钥 。 encryption它们以获得额外的安全性
  • 使用一次性密码生成器,如Mobile-OTP
  • 使用Kerberos

如果你必须使用密码,只允许他们从你信任的子网,而不是整个互联网。 另外,它有助于在22以外的端口上运行你的ssh守护进程。通常我不build议这样的事情,但是如果它减less了你看到的攻击量,那就更好了。


在回答你的具体问题:

  • 我看到在我运行的任何主机上有这样的攻击,有一个公共的ssh服务器。
  • 我怀疑他们正在使用从过去的经验开发的用户名/密码字典,什么工作。 例如,我的日志有
    • 18次对用户“ftp”
    • 23次对用户“论坛”
    • 3为用户“bernard”
    • 1为用户“bret”
  • 我也看到过这种攻击,他们使用了实际的特定站点login,但是这些攻击可能是从该网站的广泛的ldap服务器(大学,要爱他们!
  • 这些攻击可能来自具有一些令人印象深刻的集中控制的僵尸电脑。
  • 这些攻击每天都以每1到5分钟一次的速度进行
  • 我只是试着拴住sshd来查看收集攻击者正在尝试的密码是否微不足道,看起来你需要修补代码。
    • 这些人就这样做了,发现密码通常是用户名或者一个众所周知的密码,如sql或admin的排列组合。

下面是对2008年开始的“慢蛮虎”僵尸networking攻击的一些讨论和分析: 慢蛮荒最终综述

在这个网站的同一时间的其他讨论build议

Fail2ban只是提高服务器安全性的一个工具。 当然,第一步是避免使用密码,而使用serverkeyauthentication。 此外,限制允许的stream量到某些IP,禁止IP范围,使用IP表,使用黑名单(如rsync-mirrors.uceprotect.net)更新已知的SSH黑客起源和原始networking的iptables。 有关上述3级黑名单的详细信息,请参阅uceprotect.net。

我见过的其他build议涉及到这种尝试build议监视失败的尝试和阻止源IP – 最终相同的IP将用于另一个探测,所以通过检测和黑名单尝试login后不存在的帐户您将以增加的防火墙规则处理为代价逐渐减less威胁。 此外,最好不要阻止后,只有一个连接尝试 – 错别字确实发生。

最好的答案是,不要做任何事情。 只要您的用户拥有8个或更多的强密码,那么就很可能需要大约3千万年的时间才能将其暴力破解!

我不确定你的实际执行情况,但是这里有一些一般的build议:

审核你的密码(用john ripper或类似的),看看你是否可以增加login超时。

安装denyhosts或fail2ban – 经过一定次数的攻击后,它会被IP阻止。 denyhosts在/etc/hosts.deny上运行,我相信fail2ban在iptables规则上运行。