假设在系统上启用了 CAPTCHA 并启用了帐户锁定控制(连续五次尝试失败后,帐户将被锁定 15 分钟)。
蛮力仍然是一个可能的威胁吗?
假设在系统上启用了 CAPTCHA 并启用了帐户锁定控制(连续五次尝试失败后,帐户将被锁定 15 分钟)。
蛮力仍然是一个可能的威胁吗?
您描述的保护是您应该考虑的好的保护,但仍然可能存在弱点:
或许。
这取决于您如何定义“蛮力”。
X 次错误尝试后的锁定对于保护攻击者追踪单个目标的帐户非常有用。
还有另一种情况,攻击者选择了一些常用密码“password、password123 等”。他们不会攻击单个用户,而是在系统中他们知道的每个帐户上尝试使用 4 个常用密码。
User: Jim
PW: password, password123, letmein, secret
User: Bob
PW: password, password123, letmein, secret
User: Alice
PW: password, password123, letmein, secret
这在攻击者希望获取凭据以在暗网上转售或横向转移到可能已重复使用密码的其他服务的情况下更为常见。
我建议你添加一些东西来计算整体无效登录的比率,而不仅仅是在每个帐户或 IP 级别上。
这是另一种意义上的威胁。如果您在 5 次尝试失败后锁定帐户 15 分钟,那么您实际上已经内置了 DoS 机制。
假设我真的不想闯入,但只要造成破坏我就可以了,没问题。只需使用随机用户名每秒进行几千次登录。嘿,我什至不会费心做 CAPTCHA,谁在乎呢。我想要的只是失败并锁定。
比在固定数量的故障后的固定时间更好的策略可能是二次(或指数)增长。一些 AVM 路由器会这样做。第一次登录失败,你有 15 秒的锁定时间,下一次失败你有 30 秒,等等。这对合法用户来说少了很多麻烦,给攻击者带来了更多的麻烦。
为了使 DoS 更难,您需要一种涉及 IP 地址和帐户名称的方法,将每个帐户-IP 对的最大延迟限制为一个可容忍的值。否则,合法用户仍然可以轻松且不确定地被 DoSed。不过,指数增长更好地解决了“无限次尝试”问题。
实际上通过蛮力在网上找到一个用户名-密码对是,假设人们不愚蠢,实际上是没有希望的。不幸的是,人们很愚蠢,所以你不能假设他们不会拥有十大最愚蠢的密码之一,你必须假设它是可行的。所以,是的,那里也有一点威胁。特别是因为虽然很难在一台服务器上定位一个用户,但在纯粹基于用户名的控制系统上,您可以在同一台服务器上并行定位一千个用户,没有问题(每个得分只有一次失败!)并且您可以在一千台服务器上并行执行此操作。而且,让这个脚本运行数周(数月、数年……),每 15 到 20 分钟重试一次,实际上并不需要任何成本。
因此,虽然对于个人帐户,您作为攻击者的机会非常小,但随着数字加起来几乎无限,您一定会在某个地方击中某人,最终,这是不可避免的。因为否则并行尝试一千个用户是微不足道的,很明显,您还需要在计算中考虑 IP 地址。即便如此,它并不能 100% 地抵御拥有数千个僵尸程序的僵尸网络,但它确实会降低攻击的效率,需要更多的工作和管理。更多的工作是好的。
一旦你成为一个严肃的目标,你就无法赢得比赛,但是你越努力让攻击者工作,攻击者就越有可能选择其他人(他是一个更容易的目标)开始。
这与锁定前门而不是敞开大门非常相似。窃贼很容易打破您的窗户,您最终无法阻止他人进入。但是考虑到邻居家的门要打开并且不得不砸碎你的窗户,他可能会选择更简单的方法。更少的费用,相同的利润。
是的,它仍然是一种威胁,因为:
改进您提出的建议的想法:
15 * 2^n分钟,上限为 2 小时,其中n是过去 24 小时内先前锁定的次数(第一次尝试是 15 分钟锁定,第二次是 30,第三次是 60,第四次是 120) .