发布于 2014-06-07 07:53:07
如果适当地实现了登录速率限制,那么就没有缺点,它应该与2FA一起使用,也可以与2FA一起使用(事实上,2FA本身也是这样做的)。而帐户锁定并不是限制登录尝试的适当方式。
速率限制意味着限制给定源可以进行的尝试的次数。通常,这意味着一个给定的IP地址,尽管您可以定义“源”,但是在您的情况下是有意义的。
实际上有三种类型的攻击,你在这里试图防御:
(a)攻击者知道密码--在这种情况下,锁定根本帮不上什么忙。
(b)密码很容易猜测,如"123456“或"passw0rd”或"zxcvbn“。同样,帐户锁定也不会有帮助,因为这些攻击者在进入下一个帐户之前最多不会尝试超过5或10个密码。通常他们只试一次。你需要阻止攻击者,而不是账户。(c)攻击者正在对单个高价值账户进行坚定的攻击,然后尝试整个字典,然后再尝试一些。密码可能不易猜测,但攻击者有整整一个月的时间。
对于以上情况,我们无能为力,尽管2FA可以帮上忙。条件(b)是非常普遍的,而(c)是比较少见的,因为成功率很低。但重要的是,这两者都可以通过减慢攻击者的速度来阻止。
理想情况下,这并不意味着15的严格限制,然后你等待10分钟。理想情况下,你可以做指数后退。这意味着在两次尝试之后,您需要等待几秒钟。在第三个之后,你等得更久一点。然后在第四个之后更长,等等。限制在后端强制执行,在前端,您使用一些客户端逻辑,比如javascript中的计时器,以防止用户在等待期间提交尝试。
我已经在这里解释了几次这个技巧,所以我不会太深入地讨论细节。但重要的是,它构建简单,不会明显地给合法用户带来不便,但它确实能很好地对付确定的攻击者。通过放慢他们的速度,你可以有效地设定一个硬限制,限制他们在任何给定的时间内可以做多少次尝试,但是在每次尝试之间逐步地分配这个限制。更好的是,您可以检测哪些用户在等待期间继续发送尝试,这标志着他们使用专门的软件来规避客户端的速率限制。凉爽的!
如果你像这样设置,那么就没有理由禁用速率限制。它没有真正的缺点,在很大程度上是不可见的用户,并提供了一个合理的前线防线,以抵御野蛮的攻击者。
这只留下了对来自大型僵尸网络的单个登录进行分布式攻击的场景。这对于大多数站点来说都是罕见的,但它非常简单,可以检测和寻址,所以我将把它作为练习留给读者。
发布于 2014-06-07 05:53:24
如果100%的用户在所有登录时都使用2FA,那么它可能就不那么重要了,但是您可能仍然需要对2FA尝试进行评分限制。有些服务只使用带有5分钟窗口的SMS发送的4位代码,在这种情况下,攻击者可能会强行执行代码。换句话说,您可能仍然需要在某个地方限制速率,以避免变得不那么安全。
不过,我仍然建议限制登录和2FA的登录率:
发布于 2014-06-09 14:13:21
我也建议限制利率。最好注意一些事情。
下面是我们在WiKID服务器中所做的工作。服务器将在错误的密码尝试次数(管理上可配置的)之后将用户锁定在外,但它将忽略非数字密码。这可以防止用户被一个简单的蛮力试图锁在门外,但却可以保护您不被人猜测代码。
我们创建一个尝试使用非数字密码的日志条目.我们建议检查这些文件,以确定攻击者是否使用了有效的被盗凭据。
(请注意,可以配置一些时间或基于计数器的令牌,以便在给定时间多个密码有效,以便重新同步时钟/计数器漂移。)
https://security.stackexchange.com/questions/59547
复制相似问题