16
最好的分布式暴力破解对策是什么?
首先,有一点背景知识:我正在为CodeIgniter实现auth + auth系统,这并不是什么秘密,到目前为止,我已经赢了(可以这么说)。但是我遇到了一个非常艰巨的挑战(大多数身份验证库都完全忽略了这一挑战,但是我坚持要正确处理):如何智能地应对大规模,分布式,可变用户名的暴力攻击。 我知道所有常用的技巧: 限制每个IP /主机尝试失败的次数,并拒绝违规者访问(例如Fail2Ban)- 由于僵尸网络变得越来越聪明,这种访问不再有效 将上述内容与已知的“不良” IP /主机(例如DenyHosts)的黑名单相结合-依赖于僵尸网络排名第一的僵尸网络,它们越来越不会 IP /主机白名单与传统身份验证结合在一起(对于动态IP用户和大多数网站上的用户流失率非常低) 在整个N分钟/小时的时间内对失败尝试的次数设置站点范围的限制,并在此之后的几分钟/小时内限制(挂起)所有登录尝试(问题是DoS攻击您成为僵尸网络的玩法) 强制性数字签名(公钥证书)或RSA硬件令牌,适用于所有没有登录/密码选项的用户(毫无疑问是坚如磐石的解决方案,但仅适用于封闭的专用服务) 强制执行超强密码方案(例如,> 25个带有符号的废话字符-再次对临时用户来说太不切实际) 最后,CAPTCHA(在大多数情况下都可以使用,但是使用户烦恼,并且对于坚定的,足智多谋的攻击者几乎毫无用处) 现在,这些只是理论上可行的想法。有很多垃圾想法使站点大开眼界(例如,对琐碎的DoS攻击)。我想要的是更好的东西。更好的是,我的意思是: 它必须具有抵御DoS和暴力攻击的安全性(+),并且不得引入任何新的漏洞,而该漏洞可能会使稍稍偷偷摸摸的bot继续在雷达下运行 它必须是自动化的。如果它需要人工来验证每个登录名或监视可疑活动,那么它将无法在实际情况下工作 它对于主流Web使用必须是可行的(例如,非程序员可以进行的高流失,高流量和开放式注册) 它不会将用户体验阻止到使临时用户感到烦恼或沮丧(并有可能放弃该网站)的程度 除非小猫真的很安全,否则它不能涉及小猫 (+)“安全”是指至少与偏执狂用户对密码保密的能力一样安全 所以-让我们听听吧!你会怎么做?您知道我没有提到的最佳做法吗(哦,请说您同意)?我承认我确实有自己的想法(结合3和4的想法),但是在让自己尴尬之前,我会让真正的专家讲话;-)