信用填充是世界上最无聊的攻击,这正是它起作用的原因.
没有剥削,没有注射,没有聪明的绕道。
有人从一个无关的漏洞中购买了几百万个电子邮件/密码字对的列表,现在一个botnet正在悄悄地根据你的登录表重放,每IP有几分请求,分布在一万个IP之间.
每个单项请求都是有效,造型良好的登录尝试.
这就是问题所在 我想谈谈为什么通常的防御工事 错过了这个, 一个便宜的过滤器,实际上咬了。
为什么关闭和利率限制无法抓住 直觉是达到每个账户关闭("5失败尝试,冻结账户")和每个IP利率限制.
两者都很好,都是值得的, 没有人看到现代的东西跑。
每个账户关闭 假设攻击者锤子 一个账户。
事情恰恰相反——它试图用一个密码对一百万个不同的账户。
每个账户都看到一次失败的尝试.
你的锁柜台从来不动 更糟糕的是,如果攻击者知道你锁了账户,他们会故意绊倒它来锁住你真正的用户——你已经为他们制作了一个拒绝服务按钮.
每个IP率限制假设体积来自一地.
它没有。
名单被扇出一个住宅代理网络,所以每个个人IP一个小时会提出三到四个请求,而且看起来完全像一个在酒店wifi上的人.
你的门槛是高到可以让他们通过 或者低到可以阻止真正的人使用共享NAT 两者失败的原因都是一样的:它们在一个轴上(账号,IP)计算一段时间后的行为,攻击者故意分散出薄.
等到你们有足够的活动可以自信的时候,将要发挥作用的证书已经奏效了.
将决定向上移动一层——在密码检查前,这里是重新框架.
你不需要知道这个登录是否会成功.
你需要知道这个请求是否值得 花一个bcrypt 校验。
密码检查是故意昂贵的——这就是慢散列的点.
可信地填充会令你反感: 每一个垃圾尝试都要花费真正的CPU.
所以先检查一下便宜货 在触摸密码前,得分来源:IP和电子邮件地址.
博特网有一个纹理,个人请求会送出,即使证书是真的.
IP更可能是数据中心范围,主机提供者,或已知的代理/VPN出站,而不是住宅连接.
真实的人类从 AWS IP 登录是罕见的;一个登录波不是.
电子邮件, 总的来说, 向回用, 可支配, 和前旗。
每个真实用户有一个账户;一个botnet churns通过已经出现在虐待名单上的地址.
任何信号都不是证据 一起,便宜地,他们让你分层 你的反应。
过滤器,在散列前的代码分数中.
特快的形状如下: 该调用在20ms以下返回,因此符合登录路径而用户没有感觉.
我在这里使用了IPASIS,因为一个单一的请求既会回报IP的名声,又会回报电子邮件的风险,这可以保持一次回程——它会直接给你一个 / / 的 / ,所以分级从响应中掉出,而不是你手调的分数截止.
有免费的等级(没有信用卡)来连接这个 与你真正的登录流量, 反应域在文档中。
任何给你们俩信号的供应商都有用;架构是关键,而不是供应商。 3个东西,如果你跳过它们,会咬你 失败打开,永远不会关闭。
如果计分调出或出错,则让登录进入普通密码检查。
欺诈过滤器在第三方有糟糕的一天时 将你登录下来 比攻击更糟糕 注意:没有分数意味着前进,而不是阻断。
不退一清净失道入坏相.
如果你对一个低分数的请求做出反应,你已经给攻击者做了一个预言:他们学会了哪个IP是你的过滤旗并旋转