如何禁止默认密码并让每个人都讨厌你

众所周知,人是一种懒惰的动物。
在选择强密码时更是如此。

我想每个管理员都曾面临过使用简单和标准密码的问题。 这种现象经常发生在公司高层管理人员中。 是的,是的,正是在那些有权访问秘密或商业信息的人中,消除密码泄露/黑客攻击和进一步事件的后果是极其不可取的。

在我的实践中,有一种情况是,在启用了密码策略的 Active Directory 域中,会计师独立地认为像“Pas$w0rd1234”这样的密码完全符合策略要求。 结果是这个密码在各地广泛使用。 有时他的不同之处仅在于他的一组数字。

我真的希望不仅能够启用密码策略并定义字符集,而且还能够按字典进行过滤。 排除使用此类密码的可能性。

微软通过链接善意地告诉我们,任何知道如何正确掌握编译器、IDE并知道如何正确发音C++的人,都能够编译他们需要的库并根据自己的理解使用它。 奴婢没有这个能力,只好寻找现成的办法了。

经过一个小时的搜索,发现了解决该问题的两种选择。 当然,我谈论的是开源解决方案。 毕竟,从开始到结束都有付费选项。

选项编号1。 打开密码过滤器

已经有大约 2 年没有提交了。本机安装程序时不时地工作,您必须手动更正它。 创建自己的单独服务。 更新密码文件时,DLL 不会自动获取更改的内容;您需要停止服务,等待超时,编辑文件,然后启动服务。

没有冰!

选项编号2。 密码过滤器

这个项目是活跃的、有活力的,甚至不需要踢冰冷的身体。
安装过滤器涉及复制两个文件并创建多个注册表项。 密码文件没有锁,也就是说,它可以编辑,并且根据该项目作者的想法,只需每分钟读取一次。 此外,使用其他注册表项,您可以进一步配置过滤器本身,甚至密码策略的细微差别。

所以。
给定:Active Directory 域 test.local
Windows 8.1 测试工作站(对于问题的目的而言并不重要)
密码过滤器 PassFiltEx

  • 从链接下载最新版本 密码过滤器
  • 复制 PassFiltEx.dll в C:WindowsSystem32%SYSTEMROOT%System32).
    复制 PassFiltExBlacklist.txt в C:WindowsSystem32%SYSTEMROOT%System32)。 如有必要,我们会用我们自己的模板进行补充
    如何禁止默认密码并让每个人都讨厌你
  • 编辑注册表分支: HKLMSYSTEMCurrentControlSetControlLsa => 通知包
    新增 密码过滤器 到列表末尾。 (不需要指定扩展名。)用于扫描的包的完整列表将如下所示“rassfm scecli PassFiltEx«。
    如何禁止默认密码并让每个人都讨厌你
  • 重新启动域控制器。
  • 我们对所有域控制器重复上述过程。

您还可以添加以下注册表项,这使您可以更灵活地使用此过滤器:

段: HKLMSOFTWAREPassFiltEx — 自动创建。

  • HKLMSOFTWAREPassFiltExBlacklistFileName,REG_SZ,默认:PassFiltExBlacklist.txt

    黑名单文件名 — 允许您使用密码模板指定文件的自定义路径。 如果此注册表项为空或不存在,则使用默认路径,即 - %SYSTEMROOT%System32。 您甚至可以指定网络路径,但您需要记住模板文件必须具有明确的读、写、删除、更改权限。

  • HKLMSOFTWAREPassFiltExTokenPercentageOfPassword,REG_DWORD,默认值:60

    密码的令牌百分比 — 允许您指定新密码中掩码的百分比。 默认值为 60%。 例如,如果出现百分比为 60,并且字符串 starwars 在模板文件中,则密码 星球大战1! 密码会被拒绝 星球大战1!DarthVader88 将被接受,因为密码中字符串的百分比小于 60%

  • HKLMSOFTWAREPassFiltExRequireCharClasses,REG_DWORD,默认值:0

    需要字符类 — 与标准 ActiveDirectory 密码复杂性要求相比,允许您扩展密码要求。 内置复杂性要求需要 3 种可能的不同字符中的 5 种:大写、小写、数字、特殊和 Unicode。 使用此注册表项,您可以设置密码复杂性要求。 可以指定的值是一组位,每个位是对应的XNUMX的幂。
    即,1 = 小写字母,2 = 大写字母,4 = 数字,8 = 特殊字符,16 = Unicode 字符。
    因此,如果值为 7,则要求为“大写” AND 小写 AND 数字”,值为 31 - “大写 AND 小写 AND 人物 AND 特殊符号 AND 统一码字符。”
    你甚至可以组合 - 19 = “大写 AND 小写 AND 统一码字符。”

  • 如何禁止默认密码并让每个人都讨厌你

创建模板文件时的一些规则:

  • 模板不区分大小写。 因此,文件条目 星球大战 и 星球大战 将被确定为相同的值。
  • 黑名单文件每 60 秒重新读取一次,因此您可以轻松编辑它;一分钟后,新数据将被过滤器使用。
  • 当前不支持模式匹配的 Unicode。 也就是说,您可以在密码中使用 Unicode 字符,但过滤器将不起作用。 这并不重要,因为我还没有见过使用 Unicode 密码的用户。
  • 建议模板文件中不允许有空行。 在调试中,您可以在从文件加载数据时看到错误。 过滤器有效,但为什么会出现额外的异常?

为了进行调试,存档包含批处理文件,允许您创建日志,然后使用以下命令解析它: 微软消息分析器。
此密码过滤器使用 Windows 事件跟踪。

此密码过滤器的 ETW 提供程序是 07d83223-7594-4852-babc-784803fdf6c5。 因此,例如,您可以在以下重新启动后配置事件跟踪:
logman create trace autosessionPassFiltEx -o %SystemRoot%DebugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets

跟踪将在下次系统重新引导后开始。 停止:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
所有这些命令都在脚本中指定 StartTracingAtBoot.cmd и StopTracingAtBoot.cmd.

要一次性检查过滤器操作,您可以使用 开始跟踪.cmd и 停止跟踪.cmd.
为了方便地读取该过滤器的调试排气 Microsoft消息分析器 建议使用以下设置:

如何禁止默认密码并让每个人都讨厌你

如何禁止默认密码并让每个人都讨厌你

当停止记录和解析时 Microsoft消息分析器 一切看起来都是这样的:

如何禁止默认密码并让每个人都讨厌你

在这里您可以看到有人试图为用户设置密码 - 魔法词告诉我们这一点 设置 在调试中。 由于密码存在于模板文件中并且与输入的文本匹配率超过 30%,因此密码被拒绝。

如果密码更改尝试成功,我们会看到以下内容:

如何禁止默认密码并让每个人都讨厌你

对于最终用户来说存在一些不便。 当您尝试更改模板文件列表中包含的密码时,屏幕上的消息与密码策略未通过时的标准消息没有什么不同。

如何禁止默认密码并让每个人都讨厌你

因此,请做好电话和大喊的准备:“我输入的密码正确,但不起作用。”

总结。

该库允许您禁止在 Active Directory 域中使用简单或标准密码。 让我们说“不!” 密码如:“P@ssw0rd”、“Qwerty123”、“ADm1n098”。
是的,当然,用户会更喜欢你,因为你对他们的安全如此关心,并且需要想出令人兴奋的密码。 也许,寻求密码帮助的电话和请求数量将会增加。 但安全是有代价的。

使用的资源链接:
关于自定义密码过滤器库的 Microsoft 文章: 密码过滤器
通过过滤器: 密码过滤器
发布链接: 最新发布
密码列表:
丹尼尔·米斯勒列出: 链接。
来自weakpass.com的单词列表: 链接。
来自 berzerk0 存储库的单词列表: 链接。
微软消息分析器: 微软消息分析器。

来源: habr.com

添加评论