代码之家  ›  专栏  ›  技术社区  ›  Yishai

将IP列入黑名单与锁定帐户的相对优势

  •  3
  • Yishai  · 技术社区  · 7 年前

    另一个选择是执行更传统的帐户锁定,即在给定帐户上尝试过多会锁定该帐户,直到重置密码。

    第一种方法的问题是客户服务——如果合法用户打电话回来,他们只需等待退出——他们的IP在这段时间内被列入黑名单。

    您在防止针对用户帐户的暴力攻击的不同方法方面有哪些经验?

    4 回复  |  直到 16 年前
        1
  •  2
  •   H. Green    16 年前

    我支持为下一次登录尝试添加延迟的想法,但添加了对传入IP以及尝试的用户帐户的检查。因此,不管使用的用户名是什么,如果它来自同一个IP超过一定次数,就会导致登录延迟呈指数级增长。这也确保了攻击者不会获得关于他们是尝试合法用户名还是不存在用户名的信息。

    将IP列入黑名单基本上是无用的(这里已经讨论过了-请参阅TOR/Proxy)。

    锁定用户帐户是不好的CR(对合法用户来说比解决问题更让人头疼)

    添加验证码是愚蠢的( http://www.theinquirer.net/inquirer/news/1040158/captchas-easily-hackable ). 你们难道没听说过这些天验证码被黑客攻击有多容易吗?此外,对于合法用户来说,他们更痛苦。

    推迟下一次登录使暴力尝试变得不切实际,同时仍然允许合法用户在需要时完全访问其帐户。

        2
  •  3
  •   Rook    16 年前

    数万台代理服务器的列表可以购买,也可以通过扫描轻松获得( YAPH ). 有像THC Hydra这样的软件可以使用代理服务器列表进行暴力攻击。这并不是说IP地址黑名单是不好的,它们提高了攻击者的门槛。

    我喜欢的解决方案是在5次登录失败后强制用户解决capthca问题。您可以使用ip地址和帐户名的混合方法。如果有人尝试从一个ip地址登录5次失败,您将强制该ip地址解决capthca问题。如果任何登录名有5次登录尝试失败,则该登录名将需要验证码。但是有一个潜在的问题,如果有人试图强行使用帐户名,那么如果该帐户不存在,您就不能采取不同的行动。因此,您必须要求用户在不存在的帐户上解决capthca问题,这些帐户也由于暴力而被“锁定”。

    向攻击者泄露帐户名大大有助于暴力。我建议您检查一下您的应用程序,以确保您没有泄露登录名。

        3
  •  1
  •   hobodave    16 年前

    如今,将IP列入黑名单是不切实际的。你会疏远网络的用户 Tor 或其他类似的代理。

    我建议锁定帐户。

    如果存在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 要求。

        4
  •  1
  •   Sucuri    16 年前

    用户阻塞的问题是,有人可以自动执行此类攻击以导致拒绝服务,从而拒绝所有用户访问资源。因此,没有IP阻塞是没有用的。

    顺便说一句,看看 http://www.ossec.net