我们正在设计一个安全系统,以防止暴力攻击进入帐户。
提议的一个选项是通过IP列入黑名单。如果IP地址尝试登录的次数过多,则该IP地址的任何进一步尝试都会在指定时间内被阻止。
另一种选择是进行更传统的帐户锁定,在重置密码之前,对指定帐户的太多尝试会锁定帐户。
第一种方法的问题是客户服务 - 如果合法用户要求重新进入,他们只需要等待 - 他们的IP在该时间段内被列入黑名单。
第二个问题是它会打开DoS攻击,在知道合法用户名的情况下,任何人都可以输入伪造的密码将其锁定。
您在防止对用户帐户进行暴力攻击的不同方法方面有哪些经验?
答案 0 :(得分:3)
可以通过扫描(YAPH)购买或轻松获取成千上万个代理服务器的列表。有像THC-Hydra这样的软件可以使用代理服务器列表来进行暴力破解。这并不是说IP地址黑名单是坏的,它们提高了攻击者的标准。
可以对您使用基于帐户的锁定。黑客需要一个用户帐户列表,黑客通常不关心哪个帐户被破坏。对这个系统进行攻击的第一阶段是尝试尽可能多的用户名,一旦你有一个名字列表,那么你回去尝试每个用户名的弱密码。
我喜欢的解决方案是强制用户在5次登录失败后解决问题。您可以使用IP地址和帐户名称的混合方法。如果有人尝试从IP地址登录5次失败,则强制该IP地址解决问题。如果5个登录尝试登录尝试失败,则该登录名将需要验证码。但是有一个潜在的问题,如果有人试图暴力破解帐户名称,那么如果该帐户不存在,您将无法采取不同的行动。因此,您将不得不要求用户解决不存在的帐户上的问题,这些帐户由于暴力破坏而被“锁定”。
向攻击者泄露帐户名称会极大地助长暴力。我建议查看您的应用程序,以确保您没有泄露登录名。
答案 1 :(得分:2)
我认为在下次登录尝试中添加延迟的想法,但添加了针对传入IP以及尝试用户帐户的检查。因此,无论使用何种用户名,如果它来自相同的IP超过一定次数,则会出现指数级增长的登录延迟。这也可以确保攻击者不会获得有关他们是否正在尝试合法用户名或不存在的用户名的信息。
黑名单IP基本上没用(已在此处讨论 - 请参阅TOR /代理)。
锁定用户帐户是错误的CR(对于合法用户来说比解决问题更令人头疼)
添加验证码只是愚蠢的(http://www.theinquirer.net/inquirer/news/1040158/captchas-easily-hackable)。难道你们都没有听说过这些日子上验证验证码的容易程度吗?此外,他们对合法用户来说更是一种痛苦。
延迟下一次登录会使暴力尝试变得不切实际,同时仍允许合法用户在需要时完全访问其帐户。
答案 2 :(得分:1)
我建议锁定帐户。
如果DoS攻击是一个问题,那么请将其设为自动锁定,或限制登录率尝试。
示例规则
if failed_attempts > 5
if last_attempt < 30 seconds ago
error("You must wait 30 seconds before your next login attempt")
else
authenticate(user,pass)
您应该将其与一些有良好意义的password strength要求相结合。
答案 3 :(得分:1)
我认为按IP地址和用户名列入黑名单是最佳选择。它防御两种类型的攻击:特定(针对一个用户)和通用密码猜测。
用户阻止的问题是,某人可以自动执行此类攻击以导致DoS,从而拒绝所有用户访问该资源。因此,没有IP阻止是没有用的。
顺便说一句,看看http://www.ossec.net。它可以根据任何类型的日志自动执行“主动响应”,并且具有较低的超时时间(10分钟)以避免这些问题。