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

Пропадает запись имени участника службы интеграции LDAP Active Directory 2012?

Создание службы Python для запроса атрибутов AD

Я интегрирую нашу AD с веб-службами, работающими на Python в Linux, используя Python-LDAP через SASL (DIGEST-MD5) для запроса атрибутов пользователя AD 2012 (подразделение, отдел, добавочный номер телефона, электронная почта и т. Д.). После отработки специфических особенностей моей службы и AD 2003 я начал сталкиваться с ошибкой SPN для нашего нового AD 2012, когда digest-uri не соответствовал ни одному SPN на сервере. Я сделал перекрестные ссылки на список SPN для обоих серверов, и они содержат идентичные аналоги друг друга.

Ошибка: digest-uri не соответствует ни одному имени участника-службы LDAP, зарегистрированному для этого сервера.

Исправление?

Это было исправлено запуском:

setspn -A ldap/<Domain_Name> <Computer_Name>

Обратите внимание, что создание учетной записи службы не устранило мою ошибку SPN, даже когда была запущена следующая команда:

setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>

simple_bind_s () не требует SPN, sasl_interactive_bind_s () требует SPN

Для моей службы Python-LDAP с помощью sasl_interactive_bind_s () работало только добавление SPN в список SPN локального компьютера. Я также должен отметить, что шаг SPN можно пропустить, если я использую simple_bind_s (), но этот метод отправляет учетные данные в открытом виде, что недопустимо.

Однако я заметил, что запись остается в списке SPN только около минуты, прежде чем исчезнет? Когда я запускаю команду setspn, ошибок нет, журналы событий полностью пусты, нигде нет дубликатов, проверено с помощью -F поиском по всему лесу по базовому dn и ничего. Я добавил и попытался повторно добавить, удалить и переместить SPN от объекта к объекту, чтобы убедиться, что он нигде не прячется, но когда я добавляю объект в любом месте, а затем пытаюсь повторно добавить, он уведомляет меня о дубликате. Так что я очень уверен, что где-то не спрятан дубликат.

Взлом

На данный момент у меня есть запланированная задача, повторно запускающая команду, чтобы сохранить запись в списке, поэтому моя служба будет работать с соответствующим названием «SPN Hack»

cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>"

пока я не выясню, почему SPN убирается из списка.

Я не являюсь основным администратором этой конкретной AD, может ли администратор иметь запущенную службу, которая синхронизирует SPN с другой службы в AD, и не знать об этом? Мое звание - веб-разработчик, не для оправдания, а для объяснения моего незнания в вопросах Active Directory. Мне сказали сделать AD главной пользовательской базой данных, и я много читал, но я не могу найти нигде, где у людей возникает проблема с периодической перезаписью или очисткой SPN и ни одной из администраторы хорошо знакомы с SPN вне записей SQLServer.

Зачем мне взлом?

Пока что мой взлом, похоже, не вызвал каких-либо проблем для пользователей или служб и не вызвал никаких ошибок, поэтому администратор говорит, что он просто разрешит ему работать, а я буду продолжать поиск. Но затем я оказываюсь в опасной ситуации, когда пишу сервис, реализация которого основана на взломе / дрожании cron ... Так что любая помощь будет принята с благодарностью.


Обновить

После разговора с системным администратором он согласился с тем, что создание службы на основе взлома не является решением, поэтому он дал мне разрешение развернуть локальную службу с шифрованием конечных точек, которую я могу использовать для своих целей, результат тот же . Я буду следить за тем, что заставляет SPN очищаться. Локальные привязки не являются проблемой при использовании Python-LDAP, и локальная служба уже запущена и работает примерно через час. К сожалению, я, по сути, оборачиваю функциональность, встроенную в LDAP, но мы делаем то, что должны.

Это действительно интересное (и раздражающее) явление, и я настаиваю на том, чтобы мы выяснили, что здесь происходит.

К счастью, с 2008 года в Windows Server есть несколько детализированных политик аудита, и мы можем использовать аудит для отслеживания ВОЗ сделал это. Для этого нам необходимо:

  1. Узнайте, где происходит модификация SPN
  2. Включить аудит изменений объекта AD DS
  3. Установить ACE аудита на объект
  4. Воспроизвести ошибку
  5. Проверьте журнал безопасности на контроллере домена-нарушителя.

Узнайте, где происходит модификация SPN:

Откройте командную строку с повышенными привилегиями на контроллере домена и введите эту команду:

repadmin /showobjmeta . "CN=computerAccount,DC=domain,DC=local"|findstr servicePricipalName

Вывод будет содержать имя контроллера домена, который изначально написал текущую версию значения атрибутов servicePrincipalName:

Включите аудит изменений объекта AD DS:

Если глобальная политика аудита еще не определена, вы можете внести это изменение в локальную политику безопасности на контроллере домена, указанном на предыдущем шаге.

Откройте консоль управления групповой политикой (gpmc.msc) и найдите Default Domain Controllers Policy и отредактируйте его.

  1. Перейти к Computer Configuration -> Windows Settings -> Security Settings
  2. Выбрать и развернуть Local Policies -> Security Options
  3. Удостоверься что Аудит: принудительно настроить подкатегорию политики аудита ... установлен на Включено
  4. Выбрать и развернуть Advanced Audit Policy -> Audit Policies -> DS Access
  5. Удостоверься что Аудит изменений службы каталогов установлено как минимум Успех

Установите ACE аудита для объекта:

Откройте Active Directory - пользователи и компьютеры (dsa.msc) и проверьте настройку «Дополнительные функции» в меню «Просмотр».
Перейдите к объекту учетной записи компьютера, щелкните его правой кнопкой мыши и выберите «Свойства». Выбрать Безопасность вкладку и нажмите кнопку «Дополнительно».

В подсказке выберите Аудиторская проверка вкладка и убедитесь, что "Записать все свойства" проверяется для Все. Если нет, или если вы сомневаетесь, добавьте новую запись:

  1. Нажмите Добавить.
  2. Введите "Все" в качестве целевого участника.
  3. Выберите "Успех" в качестве типа
  4. Прокрутите вниз до раздела "Свойства" и установите флажок "Написать имя_службы".
  5. Нажмите OK, чтобы добавить запись и выйти из ADUC.

(Если вам лень, вы можете просто выбрать «Записать все свойства».)

Воспроизвести ошибку

Из вашего вопроса кажется, что SPN удаляется каждую минуту или около того, поэтому это, вероятно, самый простой шаг. Взять 1-минутный урок музыки в это время.

Проверьте журнал безопасности на контроллере домена-нарушителя.

Теперь, когда прошла минута, давайте проверим журнал безопасности на контроллере домена, идентифицированном как отправитель на шаге 1. Это может быть проблемой для больших доменов, но фильтрация может помочь в этом:

  1. Откройте средство просмотра событий и перейдите к Windows Logs -> Security
  2. На правой панели выберите Фильтр текущего журнала
  3. В поле ввода с надписью "<All Event IDs>", ввод 5136 (это идентификатор события для модификации объекта каталога)

Теперь вы сможете найти запись о событии для каждого изменения в servicePrincipalName атрибут учетной записи компьютера.

Определите «субъекта», ответственного за изменение, и посмотрите, откуда оно взялось. Убейте этот процесс / машину / аккаунт огнем!

Если субъект идентифицирован как SYSTEM, ANONYMOUS LOGON или аналогичное общее описание, мы имеем дело с внутренней обработкой на самом контроллере домена, и нам нужно будет вывести некоторый журнал диагностики NTDS, чтобы узнать, что происходит. Пожалуйста, обновите вопрос, если это так