在使用 patator ldap_login 对 ldap 服务器进行暴力破解测试期间,我发现测试帐户在绕过允许的登录尝试限制后被锁定。使用此工具,攻击者可以锁定公司中的所有帐户,防止此类锁定的最佳方法是什么?
1 回答
如果您想知道如何使用这样的工具来验证密码是否适当复杂而不会锁定您的所有帐户,请在其他地方克隆您的目录。将克隆目录服务器上的密码策略设置为不锁定错误密码的帐户,然后针对克隆目录运行您的工具。
如果您问如何使用这种类型的工具来减轻其他人的攻击以锁定整个用户目录......我很惊讶这种攻击并不常见——尤其是像 PCI 这样的安全要求需要帐户锁定所以目录很可能会在输入少量错误密码后锁定 ID。
我使用操作系统防火墙限制对 LDAP 目录服务器的访问,对于提供此类功能的 LDAP 服务器,应用程序级别的访问控制。它为目录支持团队增加了工作量,因为每个新应用程序都必须设置为访问 LDAP,但是一些随机的人不能只是在他们的桌面上运行一个工具并锁定整个目录。其中一个授权服务器仍然可以用作攻击源,但是当发现攻击时,我可以放弃从该 IP 访问。
限制对 LDAP/LDAPS 目录服务器的访问并不会阻止随机人员使用已批准的应用程序发送身份验证请求(例如“curl --user username:NotThePassword https://businessapp.domain.gTLD ”或发布正确的身份验证 URL 的用户名/NotThePassword 有一个批准的服务器代表我进行 LDAP 调用)。有很多方法可以减轻这种攻击:
我的应用程序在开始收到一系列错误密码时包括一个冷却期——6 个错误密码将帐户锁定在目录端,但应用程序会为您提供十分钟的超时时间,您无法再次尝试进行身份验证5 分钟内输入 2 或 3 个错误密码。或者抛出“你真的是人吗”验证。
您可以配置密码策略以在输入 Y 个错误密码后锁定帐户 X 分钟。这意味着攻击者需要对特定 ID 进行持续攻击,才能在很长一段时间内将其锁定。虽然攻击者可以锁定您的整个目录,但对用户的影响已降至最低。X 分钟的停顿使暴力密码攻击的效率非常低,并且通常可以从安全类型中得到确定。
拥有不容易在算法中遍历的用户 ID 会有所帮助。例如,我在一家公司工作,其中用户 ID 是一个静态字母后跟五个数字。遍历他们可能的用户 ID 的整个命名空间是微不足道的,在那里工作的任何人都知道 ID 格式。具有更多可能迭代的 ID 名称空间使得锁定大部分用户变得更加困难(即,遍历所有可能的 3 到 20 个字符之间的字母/数字组合需要更多时间{并且很多攻击是对不存在的帐户执行}而不是遍历 X##### 命名空间)。
确保所有应用程序对无效的用户名或密码也返回相同的错误——如果您在未找到 ID 时指定“无效用户名”并在密码失败时指定“无效密码”,攻击者可以快速绕过任何不存在的 ID . 通过返回“错误的用户名或密码”,他们不得不浪费时间尝试锁定不存在的 ID。
对于较大的网络,可以使用包括网络流量和日志分析的入侵检测系统 (IDS)。但目录服务器日志数据可以通过监控平台或自定义编写脚本进行分析。当发生异常数量的停工时,我会发出警报——在一家相当大的公司工作,我在正常工作时间看到大约一百个停工,而在通宵时间看到一两个停工。如果我们在一夜之间看到超过少数人或在工作时间内看到超过一千人,则会通知锁定源进行调查。如果锁定开始变得特别多,我们可以调用从目录服务器访问列表中删除源 IP,直到应用程序团队弄清楚发生了什么。