我的客户端有一个服务器正受到来自僵尸网络的暴力登录尝试。由于服务器和客户端客户端的变幻莫测,我们无法轻易阻止通过防火墙、端口更改或登录帐户名称更改的尝试。
已决定让它受到攻击,但要找到一种方法来保证密码的安全。管理层和其他一些顾问已经确定,最好的办法是安装密码轮换软件,每十分钟轮换一次密码,并将新密码提供给需要登录的用户。
蛮力尝试每秒发生两次。
我需要证明使用 12-15 个字符的强密码是一种更简单且免费的解决方案。我知道如何用数学证明这一点,但我只是在写类似“我们的密码有 x 多种可能的排列,攻击者每天只能尝试 n 次尝试,因此我们希望他们去 x/他们平均需要 2n 天才能猜出我们的密码。” 有没有更标准的“证明”?
使用带有 iptables 的 fail2ban 是一个很好的方法。
这是给你的数学:
如您所见,如果您使用 15 个字符的密码,则应该没有任何问题,例如:
除了fail2ban,
如果您正在运行任何现代 UNIX,通常可以将错误密码输入休眠时间更改为最多 5 秒,从而将攻击速度降低 2000%。[Solaris 10 在 /etc/default/login 中有它,搜索 SLEEPTIME] 使用相同的容差意味着您可以每 3 小时 20 分钟轮换一次密码。
此外,在锁定之前尝试密码将是一个可行的选择,但我怀疑它不适合您,因为您有多个用户共享一个帐户并且不希望它一直被锁定。
要求 12-15 个字符的密码会有所帮助,但如果您不断受到攻击,另一种解决方案可能会更好。我不知道贵公司对此的预算容忍度是多少,但是需要登录该帐户的每个人的 RSA 密钥卡也可以解决这个问题。两因素身份验证将概率推到量子计算时间。
蛮力方法持续了足够长的时间让你在这个板上发帖是相当令人惊讶的。一般来说,这是相当低俗的,充其量只是一个日志填充物,而真正的攻击正在进行中。
向当局上诉怎么样?您可以参考 DoD 安全技术实施指南 (iase.disa.mil/stigs/stig) 并说“如果它对国防部来说足够好,那么对我们来说就足够好了”
需要考虑的事情:如果您有一个不会更改的密码,并且暴力攻击正在测试包括您的密码在内的一系列密码,那么暴力攻击肯定会最终受到攻击,并且在那之后您将仍然容易受到攻击。
正如您所建议的那样,可以计算随机选择击中您密码的“机会”,但这可能无法说明全部情况。
例如,如果您查看蛮力尝试,发现他们尝试的最长密码是 10 个字符,选择 12 个字符将确保您永远不会被击中。
尝试将统计数据应用于特定案例时要非常小心;他们只预测大量样本的整体行为。
除此之外,如果数学不能(或不能)说服某人,请尝试找到发生概率大致相同但熟悉的事物,例如彩票或车祸或被闪电击中。如果您可以说“某人击中此密码的机会与连续六周中彩票的机会大致相同”,那可能会给他们更好的感觉。
尚未考虑的一件事是僵尸网络对 Bruteforce 使用的用户名。在我见过的所有情况下,蛮力都是针对 admin 和 root 的变体,在极少数情况下,用户名是从 corp 网站上抓取的。
我还将更改交互式登录限制,以便您的 root 帐户被禁用(首选)或限制在您的本地子网或类似地址范围内。
每秒两次也不错。在实施fail2ban之前,我们曾经每分钟看到数千次尝试,这将在如此多的失败尝试(所有可配置)后将特定 IP 锁定在网络之外一段时间。
这对我们很有用。
实际上,如果这对您有用,您可以使用 iptables 对暴力 ssh 攻击进行选择性扫描。
这两个字符串:
将阻止任何人在 60 秒的时间间隔内尝试连接 SSH 超过 5 次。如果您希望允许大于每秒 5 的数字,您可以更改“--hitcount”数字。
我同意每 10 分钟更改一次密码似乎有点过分。在这一点上,问题变成了如何安全地传输新密码并保持系统彼此同步。
这篇文章有一些关于破解速度的有趣统计数据:
令人惊讶的是,有多少人不了解指数曲线,但每个人都知道 10、100 和 1000 之间的区别,因此这可能是开始进行比较的好地方。
另一种策略可能是实际向人们展示暴力破解 6 个字符的密码需要多长时间。如果您有任何编程知识,则可以组装一个快速工具来执行此操作。
您还可以向他们展示彩虹表是多么容易获得:
http://project-rainbowcrack.com/table.htm