我在同一个子网上有两个 LDS 服务器。它们复制得很好。如果我更改属性,它会在 15 秒后被复制。
LDS 被配置为遵守密码策略。当用户输入错误密码次数过多时,其帐户将被锁定,并且该用户的lockoutTime
属性将被相应设置。
但lockoutTime
无法复制紧迫的。事实上,除非目录中某处有其他更改,否则不会复制它。lockoutTime 属性将被复制。
以下是(经过编辑的 Wireshark)跟踪。它显示了正常的复制流量
No. Time Protocol Length Info
133 16:23:02 DRSUAPI 562 DsGetNCChanges request
134 16:23:02 DRSUAPI 3042 DsGetNCChanges response
152 16:23:17 DRSUAPI 562 DsGetNCChanges request
157 16:23:17 DRSUAPI 242 DsGetNCChanges response
230 16:24:57 DRSUAPI 562 DsGetNCChanges request
231 16:24:57 DRSUAPI 2930 DsGetNCChanges response
246 16:25:12 DRSUAPI 562 DsGetNCChanges request
紧接着,我锁定了用户(使用循环FOR
和ldifde
)。什么也没发生,直到我放弃并更改description
用户的属性,大约 15 秒后,我看到复制完成。
1984 16:31:05 DRSUAPI 562 DsGetNCChanges request
1985 16:31:05 DRSUAPI 2930 DsGetNCChanges response
lockoutTime 和描述已复制。此处说明,如果我设置lockoutTime=0
,15秒后就会发生常规复制!
我已经启用复制诊断。由于没有复制,因此实例日志中没有显示任何内容。当复制触发时,我看到一堆事件 1239,用于最新属性,两个 1240 事件。一个用于属性lockoutTime
,一个用于 description
(我用它来触发复制)。
我已经启用站点之间更改通知,重启了两个服务,但没有任何变化。可能是因为两台服务器在同一个子网上。
这Active Directory 技术规范明确列出lockoutTime 是需要复制的紧急属性之一。
什么原因可能阻止该lockoutTime
属性的紧急复制?
答案1
(通过致电微软支持部门的结果来回答我自己的问题)
这是 AD-LDS 中的一个错误(错误检测 ID 354126)。它会影响 Windows Server 2008,我不知道 Server 2012 是否受影响。
问题是没有向副本发送任何通知(无论是紧急通知还是正常通知)。当帐户锁定存储在数据库中时,LDS 不会更新全局通知列表。因此,只有在计划的复制启动后才会发生复制。
解决这个问题的方法是创建一个调用的计划任务
repadmin /syncall localhost:389
如果没有什么可复制的话,这次调用将产生大约 42k 的网络流量。
解决这个问题的另一种方法是……什么也不做。这个漏洞使攻击者能够将猜测密码的机会增加一倍。这个漏洞很难利用,因为用户通常不会直接调用 LDS。即使他们这样做了,这个漏洞也只会使他们的机会增加一倍。