dominix Asked: 2019-12-20 13:24:36 +0800 CST2019-12-20 13:24:36 +0800 CST 2019-12-20 13:24:36 +0800 CST 在有或没有 AD 的 Windows 上,密码策略是否可以是动态的 772 在某些 Windows 服务器上,我想根据密码长度设置不同的密码复杂度。是否可以设置条件,所以我可以在密码长度=8 时具有高复杂度,在密码长度=16 或更高时具有低复杂度或没有复杂度。 谢谢你的建议。 active-directory 2 个回答 Voted Best Answer Greg Askew 2019-12-23T05:27:01+08:002019-12-23T05:27:01+08:00 可以为密码标准编写自己的代码。DLL 可以在成员计算机或域控制器上注册。 https://docs.microsoft.com/en-us/windows/win32/secmgmt/installing-and-registering-a-password-filter-dll 如果启用“附加 LSA 保护”,这将不起作用,因为它需要 Microsoft 签署 LSA DLL。 https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection Semicolon 2019-12-24T12:16:40+08:002019-12-24T12:16:40+08:00 正如所指出的,可以利用 passfilt.dll 来利用自定义密码过滤器。事实上,我使用了 GitHub 上提供的一个这样的过滤器(或其分支之一)。它被称为OpenPasswordFilter。我选择使用这个过滤器是因为系统管理员关于如何创建和管理自定义密码过滤器的文档很少。虽然我通常看到这用于配置密码黑名单,但应该能够执行您要求的验证。问题是使用自定义密码过滤器这样做有多困难? 但是,这些更改需要推广到每个域控制器和每个新的域控制器。鉴于今天的自动化和配置管理水平,这可能不是特别困难,但它是必须监控和维护的其他东西。 总而言之,这是一个很好的解决方案,但文档有限。您的继任者也可能难以支持、更新和扩展此解决方案——这是决定实施该解决方案时要考虑的一个因素。 我相信对您的问题最直接的解决方案是使用细粒度密码策略。这可以通过最少的测试快速实现;这些设置会在所有域控制器之间自动复制。不足之处; 但是,它确实需要一些最终用户的参与/选举。 我的解决方案如下: 创建两个新的 FGPP 1:最小长度为 8;启用复杂性 2:最小长度为 16;复杂性禁用 创建两个新的安全组 1:pso_MinLength08 2:pso_MinLength16 将每个组分配为适当 FGPP 的主题 通知最终用户他们的选择——一个短的“复杂”密码或一个长的“简单”密码。他们可以随时来回切换,并通知您。 根据用户的选择将用户添加到相应的组;您可以将它们默认为短复杂组。 根据需要进行更改 关于上述内容或其他注意事项的一些说明: 您可以通过一个组来实现相同的目标。我对可见性的偏好是使用两个,但通过确保将默认域密码策略配置为最小长度为 8 并启用复杂性,您可以限制需要进行的组更改的数量。- 如果用户进行选择,您只需将用户添加到组 - 您不必确保用户仅是一个组的成员,或者 - 您不必在每个 FGPP 上配置不同的优先级值 虽然在密码轮换方面我与 NIST 和 Microsoft(大部分)合作,但我的雇主仍然要求密码轮换。我选择通过每年仅轮换一次密码来“奖励”接受更长密码最小值的用户。密码要求较短的人会因季度密码更改而受到“惩罚”。在我看来,这太频繁了,没有用,但我希望这种烦恼能够为用户提供足够的动力来切换到更长的密码最小值。 虽然上面没有提到,但如果您确实以这种方式使用 FGPP,我当然会在每个密码设置选项上配置不同的优先级,以确保更改密码时不会出现意外行为。这将解决如果他们是两个组的成员可能会遇到的问题,并且两个 FGPP 的优先级相同。 无论您选择哪种方法,我都指出您应该确保从任何此类密码复杂性验证中排除帐户“krbtgt”。我为此帐户和只读域控制器使用的那些类似帐户设置了单独的 FGPP,以确保其密码更改不受影响。我的 krbtgt FGPP 没有长度、年龄或复杂性要求。
可以为密码标准编写自己的代码。DLL 可以在成员计算机或域控制器上注册。
https://docs.microsoft.com/en-us/windows/win32/secmgmt/installing-and-registering-a-password-filter-dll
如果启用“附加 LSA 保护”,这将不起作用,因为它需要 Microsoft 签署 LSA DLL。
https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection
正如所指出的,可以利用 passfilt.dll 来利用自定义密码过滤器。事实上,我使用了 GitHub 上提供的一个这样的过滤器(或其分支之一)。它被称为OpenPasswordFilter。我选择使用这个过滤器是因为系统管理员关于如何创建和管理自定义密码过滤器的文档很少。虽然我通常看到这用于配置密码黑名单,但应该能够执行您要求的验证。问题是使用自定义密码过滤器这样做有多困难?
但是,这些更改需要推广到每个域控制器和每个新的域控制器。鉴于今天的自动化和配置管理水平,这可能不是特别困难,但它是必须监控和维护的其他东西。
总而言之,这是一个很好的解决方案,但文档有限。您的继任者也可能难以支持、更新和扩展此解决方案——这是决定实施该解决方案时要考虑的一个因素。
我相信对您的问题最直接的解决方案是使用细粒度密码策略。这可以通过最少的测试快速实现;这些设置会在所有域控制器之间自动复制。不足之处; 但是,它确实需要一些最终用户的参与/选举。
我的解决方案如下:
关于上述内容或其他注意事项的一些说明:
您可以通过一个组来实现相同的目标。我对可见性的偏好是使用两个,但通过确保将默认域密码策略配置为最小长度为 8 并启用复杂性,您可以限制需要进行的组更改的数量。- 如果用户进行选择,您只需将用户添加到组 - 您不必确保用户仅是一个组的成员,或者 - 您不必在每个 FGPP 上配置不同的优先级值
虽然在密码轮换方面我与 NIST 和 Microsoft(大部分)合作,但我的雇主仍然要求密码轮换。我选择通过每年仅轮换一次密码来“奖励”接受更长密码最小值的用户。密码要求较短的人会因季度密码更改而受到“惩罚”。在我看来,这太频繁了,没有用,但我希望这种烦恼能够为用户提供足够的动力来切换到更长的密码最小值。
虽然上面没有提到,但如果您确实以这种方式使用 FGPP,我当然会在每个密码设置选项上配置不同的优先级,以确保更改密码时不会出现意外行为。这将解决如果他们是两个组的成员可能会遇到的问题,并且两个 FGPP 的优先级相同。
无论您选择哪种方法,我都指出您应该确保从任何此类密码复杂性验证中排除帐户“krbtgt”。我为此帐户和只读域控制器使用的那些类似帐户设置了单独的 FGPP,以确保其密码更改不受影响。我的 krbtgt FGPP 没有长度、年龄或复杂性要求。