当我输入错误密码两次以上时,某些网站会显示剩余的密码重试次数。例如,显示在锁定我的帐户之前,还有3次重试。从安全角度来看这危险吗?

评论

一个考虑因素是,这可以轻松揭示站点上是否存在用户名。如果用户名是电子邮件,并且网站是foot-fetish.com之类的个人网站,则可能不希望这样做。您可以通过为不存在的帐户返回假号码来避免这种情况

对于黑客来说,在收到锁定的帐户消息之前计算失败尝试的次数会如此难以置信吗?按照这种逻辑,您应该询问显示“帐户已锁定”消息是否存在安全风险。

@MonkeyZeus但是,随着显示的数字,黑客知道何时停止帐户,然后帐户被阻止并且失败的尝试被注意到。然后他们可以等待一段时间,直到所有者登录并重置计数器。

为什么没有人认为重试计数可以基于IP或设备识别?

否否否...请勿锁定IP地址以用于WEBSITE登录。 SSH?当然。但是许多公司/学校/公寓大楼/酒店/等通过单个IP将其整个内部空间NAT出去,并且可以通过IP禁止来阻止大量无关的用户。

#1 楼

首先,锁定帐户是个坏主意。您似乎可以通过使用蛮力攻击阻止“猜测”密码的“坏人”,从而使您的组织更安全,但是您真正解决了什么?即使有了这一策略和一个绝不会犯安全错误的完美用户群,攻击者仍可以通过重复使用密码“ aaa”来锁定关键用户的帐户,从而对您的组织执行拒绝服务攻击。请考虑一下,如果您的攻击者获得了整个IT部门的用户名列表的副本,将会发生什么情况:突然,IT本身(本来可以释放其他用户的组织)本身已完全关闭。

在实施策略之前,请始终考虑威胁模型是什么。一个决定伤害您的组织的“坏人”会找到其他攻击手段。您的锁定政策甚至不会令民族国家演员(例如俄罗斯,中国或国家安全局)震惊。坚定的黑客只会找到其他解决方法(例如社会工程学);不论您将锁定计数器设置得高低,它只会伤害您服务的合法用户。

故事的寓意:不要锁定帐户。相反,请执行Apple对iPhone的操作:每次登录尝试都会使登录延迟加倍,因此,在十几次失败之后,您必须在每次连续尝试之间等待一小时。足够长的时间来防止“坏蛋”进行暴力攻击,但仍然足够短,以至于合法用户可以花一个小时弄清楚自己的密码并在午饭后正确键入密码,或者与IT部门联系并道歉寻求帮助。 (类似地,“泛洪”策略通常可以在防火墙的IP地址级别上实施,而不仅仅是在软件中的用户帐户级别上实施,如果您担心专门的攻击者试图暴力破解许多不同的帐户, 。)

而且,如果您不锁定帐户,则无需设置计数器或显示它。

[另请参见:关于类似问题的出色答案]

评论


可靠的建议。尽管我仍然称其为锁定帐户,但超时时间很短

–paj28
19年1月16日在16:24

我同意这种“一劳永逸”的实现方式,但是短期锁定(几分钟后会自动解锁)对于限制速率的蛮力攻击很有用。

–乔尔·科恩(Joel Coehoorn)
19年1月16日在16:46

但是,您是否应该具有一个显示屏来通知用户下一次尝试登录将延迟多长时间?

– Yozarian22
19年1月16日在21:54

@MichaelEricOberlin:有趣的是,我们遇到了一个用户帐户不断锁定的情况。经过数小时的调查之后,事实证明,这是用户的同事/克星,他一直这样做是为了侮辱用户。它的规模不大,但也不需要专业技能来锁定您想要的人。

–更
19年1月17日在13:46



对于在线系统,加倍锁定时间并没有多大帮助。与整个IT部门一起封锁几天已经足够了,但是以不断增加的间隔重复进行攻击也并不困难,仍然可以无限期地将您的团队封锁。

–碧玉
19年1月17日在15:05

#2 楼

这取决于您的锁定机制。如果一段时间后无效的登录名被重置,并且锁定的帐户没有被解锁,则显示计数器可以帮助攻击者不要锁定帐户。但是,熟练的攻击者会预先确定锁定策略,并在猜测密码时将其考虑在内。因此影响是有限的。

此外,依靠此来保护您的登录机制也没有意义。您应该有一个体面的密码策略和一个锁定策略才能匹配。如果密码策略很严格,攻击者将不得不猜测很多次才能正确使用密码。如果您尝试20次后锁定帐户,则几乎没有机会受到威胁。

您必须问自己:向真正的用户显示此信息有什么好处?通常,由于尝试次数设置得太低,会出现锁定问题。 3或5是常见的选择。 NIST(由于政府关闭而目前无法使用,因此尚无直接参考)表明尝试次数少于100次。

NIST指出了一点:想出一个密码,攻击者不会在3次尝试中猜测出该密码,但是他们会尝试100次。所有攻击者都使用不同的词典和方法。如果密码不安全,无法承受100个猜测,也可以使用较少的尝试来破解它-尽管这种可能性较小。因此,必须有一个良好的密码策略。

网站恢复后,我将添加NIST引用。 Troy hunt有一些不错的博客文章,其中总结了密码和登录机制。他也是NIST准则的粉丝。

评论


您正在寻找NIST特别出版物800-63,通常可以在此处找到(链接到相关部分):pages.nist.gov/800-63-3/sp800-63b.html#throttle当然,因为它们采用了为了使该服务器进入维护模式而不是仅仅走开(抱怨)的特殊努力,您必须立即使用Wayback Machine进行查看:web.archive.org/web/20181223021935/https:// pages。 nist.gov/…

– Ruscal
19年1月16日在16:08

我喜欢的是至少记住上一个失败的密码(哈希)。如果使用相同的计数器,则不要增加故障计数器。这对于错误记住或编写脚本的客户端有很大帮助,因为它们不会定期将犯罪者拒之门外。

–eckes
19年1月16日在23:56

如果攻击者只需猜测1000次才能获得密码,那么它不是一个强密码。

– Qwertie
19年1月17日在1:30

@Qwertie,我将其更改为更模糊的描述;)

–银
19年1月17日在10:08

#3 楼

原则上,不,它不应该构成安全风险。如果是这样,那么您将通过模糊性(隐藏信息)来依赖安全性。

隐藏计数最多只会给对手带来不便。

相反,隐藏计数可能会对合法用户造成极大的不便。有时我输入错误的密码,然后再假设我输入错字了再输入几次,这并不少见。如果我知道我将因另一次不正确的尝试而被锁定,我将去查找密码并仔细地复制/粘贴或键入。但是,如果我不知不觉地将自己锁定在自己的帐户之外,那么现在我需要经历很多麻烦才能使其解锁。

#4 楼

换一个角度来看:对于熟练的攻击者来说并不重要。

如今,通常如何危害在线帐户1?一种常用的技术有两种变体。具有密码散列(或纯文本密码)的数据库被盗并被攻击者离线破解。成功破解哈希后,首次尝试会将正确的密码提供给登录机制,因此此控件无效。

这可以是相关服务的数据库,也可以是其他服务的数据库。不幸的是,人们倾向于将其密码用于多种服务,因此机会很大,一旦密码与电子邮件地址匹配,便可以在另一个站点上使用它。攻击者可能有两个或三个密码可供选择,但可能没有20个。同样,此控件无效。

该控件建立了什么安全级别?想要避免遭受经验丰富的脚本小子,恶意的前伙伴和爱管闲事的父母(需要查看您的个人帐户并随机尝试五个密码)所必需的级别。





1.当然,还有其他一些更“先进”的技术,例如键盘记录,(鱼叉式)网络钓鱼,MitM等,这些技术也不是。通过此控件可以缓解。

#5 楼

只能使用两种情况,但是显示帐户锁定时间策略的风险更多地在于锁定时间。

例如一次可以配置hydra或其他配置暴力登录的工具,尝试3次后等待。如果您没有足够的锁定时间,则可能会导致帐户受损。
如果您有30分钟左右的锁定时间,尽管可以为暴力破解配置该工具,但在尝试了三遍之后,它将花费数年的时间。破解密码。

得出结论,显示帐户锁定尝试没有风险。

#6 楼

一般来说,我倾向于您向攻击者提供的信息越少越好。正如@ security-beast所提到的,可以将工具配置为等待适当的时间。向他们提供有关该配置的信息不一定是理想的。

但是,您必须在这与用户需求之间取得平衡。您是否发现系统管理员因为用户不断锁定帐户而花费了过多的时间来解锁帐户?如果是这种情况,那么您的分析可能表明,向用户显示重试次数可以使您受益更多,使他们知道何时需要等待才能锁定帐户。在其他情况下,情况恰恰相反,但无论哪种方式,答案都应该是对特定系统的权衡进行客观分析的结果。

希望这会有所帮助。

评论


发布时我没有看到Silver的评论,但是我将NIST指南作为第二个很好的基础。

– jfran3
19年1月16日在9:31

#7 楼

安全风险是主观的,它将取决于您要保护安全控制目标的目的以及可以减轻或补偿风险的任何其他安全控制。

基于不同的公司/业务,对相同风险的接受程度不同。

如果以通用的方式提供您仍然有多少次尝试可能不会带来风险(例如:智能卡中的PIN拨打电话)
在其他情况下,则可能有风险(例如:试图强行访问手机),您可以在上一次尝试之前停下来等待一段时间,以便用户使用有效的访问权限重置计数器...

您应该检查目标安全控制,要保护的内容以及可以补偿或至少监视异常情况的现有安全控制。

基于所有这些,您可以确定对于您的具体情况而言这是否是可接受的风险。

#8 楼

在某个时候,我在一家公司,那里只有几个人测试他们的安全性。这些家伙发现的这些事情之一是,当存在太多错误密码时,没有帐户锁定。无论CISO多么高兴,他们都无法证明可以通过强行强行输入密码来进入。这样做的原因是帐户锁定处于静默状态,并且持续了大约15分钟。

问自己显示这样的消息所获得的收益以及这样做所带来的安全损失。由于过多的错误登录尝试而没有给出任何锁定帐户的通知是完全有效的。如果您给出这样的信息,您将只是帮助攻击者弄清楚何时他浪费了时间蛮力强迫。如果您不这样做,他们将不太可能解决该问题,但这可能会导致向您的服务台发送更多的呼叫/邮件,这可能会导致成本高昂。常见问题解答或帮助页面可能会减少这种情况。

实现倒计时也可能意味着更多的代码,更多的代码意味着更多的错误。这不是您想要的安全机制。加上您实施错误的方法,它可能允许攻击者枚举用户名,如果用户名是电子邮件地址,则这是双重问题。地狱,如果您使用未签名的cookie来实现它,它实际上可能使攻击者完全能够防止锁定。

通常,如果错误消息提供的信息很少,则可以提高安全性。可能。

评论


我是彭特。如果我给我“限制登录尝试次数”的建议,而客户回答“证明它很容易受到攻击”,我会很生气。我是否可以通过这种方法进入,这是一个运气问题。您是否要依靠运气,还是宁愿运用逻辑并发现,实际上,如果您的用户之一设置了错误的密码,而攻击者却很幸运,您就会被冒充?因此,我将不得不证明这一点。然后,如果以后我听到有一个默默的锁定(所以您让我做这项工作,知道它无法成功),那么我会觉得您加倍浪费了我的时间。

–吕克
19年1月19日在22:33



这样您就烦恼了五个月,现在我们切换到用户模式。即使我知道它必须是这五个密码之一,也无法进入我的帐户。现在,我必须执行其他步骤来恢复我的帐户。后来我发现我的密码是正确的,但是由于尝试过多,系统才不允许我进入。与其浪费时间尝试不同的密码,并向站点提供越来越多的可能的密码(使我的密码更具暴露性),不如让系统告诉我,这将是非常不错的。

–吕克
19年1月19日在22:36



最后,让我们看看攻击者的情况。如果我可以创建一个帐户,则可以在自己的帐户上尝试100次错误尝试(1.在Firefox中尝试登录; 2。从开发人员工具栏复制为curl; 3。在{1.中使用Bash one-liner:for i。 100};执行;完成),然后查看我是否仍然可以登录。不!因此,有一个锁定位置。现在,我创建另一个帐户并编写一个类似的脚本,该脚本首先进行一次无效尝试,然后进行两次,然后进行三次……然后在这之间检查是否仍然可以登录。这大约需要五分钟。隐藏重试计数不是很大的障碍。

–吕克
19年1月19日在22:49

@Luc,您可以隐藏重试计数,对于确定的攻击者而言,这并不是一个巨大的障碍,但它仍然是一个障碍。

–Brandhout
19年1月21日在6:24

在我的轶事中,我可能没有清楚指出的是,这些帐户在短时间内被无声锁定,因此可疑的发现是不正确的,这就是为什么要求他们证明这一点的原因。关键是,无声锁定帐户是执行此操作的完全有效方法,它实际上是在实践中完成的,它表明这可能会增加攻击者的障碍。您完全正确,需要权衡取舍,这并不是完美的安全性,但情况总是如此。

–Brandhout
19年1月21日在6:30