Назад | Перейти на главную страницу

Репликация атрибута lockoutTime не является актуальной для AD-LDS

У меня два сервера 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 сетевого трафика, если реплицировать нечего.

Другой способ решить проблему - ... ничего не делать. Ошибка позволяет злоумышленнику удвоить шанс угадать пароль. Это сложно использовать, потому что пользователи обычно не звонят СПД напрямую. И даже если бы они это сделали, эта ошибка только удвоила бы их шансы.