У меня два сервера 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
атрибут?
(Отвечая на свой вопрос по поводу звонка в службу поддержки Microsoft)
Это ошибка в AD-LDS (идентификатор ошибки 354126). Это влияет на Windows Server 2008, я не знаю о Server 2012.
Проблема в том, что на реплики не отправляется уведомление (ни срочное, ни обычное). Когда информация о блокировке учетной записи хранится в базе данных, LDS не обновляет глобальный список уведомлений. Следовательно, репликация происходит только после запуска запланированной репликации.
Попутно нужно создать запланированную задачу, которая вызывает
repadmin /syncall localhost:389
Этот вызов будет генерировать около 42k сетевого трафика, если реплицировать нечего.
Другой способ решить проблему - ... ничего не делать. Ошибка позволяет злоумышленнику удвоить шанс угадать пароль. Это сложно использовать, потому что пользователи обычно не звонят СПД напрямую. И даже если бы они это сделали, эта ошибка только удвоила бы их шансы.