Задать вопрос
Ответы пользователя по тегу Active Directory
  • Как отключить учетную запись при перемещении ее в определнную OU?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Можно делать наоборот. Сначала блокировать, потом переносить. Но в принципе есть возможность, вот народ обсуждает:
    https://stackoverflow.com/questions/2002606/regist...
    Не смотрели?
    Ответ написан
  • [Решено, Solved] Если linux-комп не в Active Directory, то он не считается компьютером домена?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Проблема решена.
    Вот небольшое расследование.

    Есть два сервера. test-0001/apache,php/Centos 7.2 (нормально аутентифицирует по kerberos) и test-0002/apache,php/OracleLinux 7.2 (сбой аутентификации kerberos).

    Анализ протокола обмена HTTP показал, что «почему-то» web-клиент (IE, FF, Chrome) как один отличают компьютер test-0002 от test-0001. Отличие состоит в том, что ключ аутентификации, которые web-клиент отправляет в качестве авторизации пользователя ооочень сильно отличается «размером»:
    Запрос к test-0002 (сбой аутентификации по Kerberos):
    96706c13d8894210bfe4d0fd2b2516e2.png080ede7e64b0434b9229c520d07af319.png

    Запрос к test-0001 (аутентификация Kerberos выполняется нормально):
    5825189ce16741359c1148fee30b70dd.pngb710650b34bf482d88f77adca35000ff.png

    Давайте всё-таки выясним, почему ключ от test-0002 короче test-0001 ??? Начну с того, что формат ключа - ASN.1 (если интересно, то гляньте https://ru.wikipedia.org/wiki/ASN.1 ). В инете есть просмотрщик этого формата:
    https://lapo.it/asn1js
    Анализ ключа в запросе от test-0002:
    1ceee5434ef44a08b17cee123e5ba515.png
    1. NEGOEX – насколько я понял именно этот формат обеспечивает «объединение» нескольких аутентификаторов одного и того же пользователя в разных протоколах. В данном ключе вложен только протокол NTLM
    2. Данные для протокола NTLM (который не поддерживается компонентом apache mod_auth_gssapi).

    Анализ ключа в запросе к test-0001:
    573bbcfea2e64351a1a27e4db461d303.png
    Как видим во втором ключе уже присутствует протокол Kerberos!!! Занятно! Т.е. проблема для test-0002 не на стороне сервера, раз клиент сразу не отдаёт ему ключ правильного формата!

    Хм. А давайте-ка посмотрим в журнал windows?
    c7d2f48555b348cdb239d1b40e36af8b.png

    0x7 KDC_ERR_S_PRINCIPAL_UNKNOWN
    0x19 KDC_ERR_PREAUTH_REQUIRED

    Опаньки! Это что такое??? Какая-то проблема с принципалом? И почему только с test-0002? (Записей, указывающих на другой компьютер, например, test-0001 не найдено). Получается, что браузер до ответа на запрос серверу уже что-то «подозревает», раз не отдаёт ему нужный ключ (ОЧЕНЬ БОЛЬШАЯ ПРОСЬБА: ЕСЛИ КТО-ТО ПОНИМАЕТ ПРОЦЕСС, КАК БРАУЗЕР ПРИНИМАЕТ РЕШЕНИЕ КАК СОЗДАТЬ КЛЮЧ ДЛЯ АУТЕНТИФИКАЦИИ - РАССКАЖИТЕ МНЕ НЕМНОГО ОБ ЭТОМ!!!).
    Если порыться в интернете, то вопросов по этой ошибке много (https://www.google.ru/search?q=KDC_ERR_S_PRINCIPAL...), но в основном они без ответа. Тупик? Ничего подобного! Давайте глянем в документацию Microsoft по поводу SPN: https://msdn.microsoft.com/en-us/library/ms677949%...
    b5334963f38a4f9ca87c087db77ed639.png
    Т.е. spn моего сервиса должен быть зарегистрирован только в одном аккаунте. ЗАПОМНИМ ЭТО!!! И вот ещё один интересный момент: https://msdn.microsoft.com/en-us/library/ms677601%...
    6545dfe4a1ad44b6acc6577a3163eeb3.png
    Тут написано, что SPN должен быть уникальным. Если он не уникален, то аутентификация даст сбой.

    А вот давайте проверим, а действительно ли SPN для сервера test-0002 уникален? На просторах интернета нашёлся простой скрипт powershell, который после небольшой модификации показывает интересующие нас SPN-ы: social.technet.microsoft.com/wiki/contents/article...
    #Set Search
    cls
    $search = New-Object DirectoryServices.DirectorySearcher([ADSI]“”)
    $search.filter = “(servicePrincipalName=HTTP/test-*)”
    $results = $search.Findall()
    
    #list results
    foreach($result in $results)
    {
           $userEntry = $result.GetDirectoryEntry()
           Write-host "Object Name = " $userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
           Write-host "DN      =      "  $userEntry.distinguishedName
           Write-host "Object Cat. = "  $userEntry.objectCategory
           Write-host "servicePrincipalNames"
           $i=1
           foreach($SPN in $userEntry.servicePrincipalName)
           {
               Write-host "SPN(" $i ")   =      " $SPN       $i+=1
           }
           Write-host ""
    }


    Результат:
    3e67af20a3d041779246cdaeb21598b9.pngWTF???

    ПОЧЕМУ В ДВУХ РАЗНЫХ АККАУНТАХ ОДИН И ТОТ ЖЕ SPN??? (Помните, чуть выше я просил запомнить правило, что spn должен быть уникален и присвоен только одному аккаунту?) Или может быть я что-то неправильно понял? Пойдём дальше и давайте посмотрим атрибуты для учёток test-0002 и test-0001, но не через оснастку AD, а через оснастку ADSI:
    2f16d1f71fcf40779ff6ac36b4824c2f.png
    test-0002 – OK.
    А вот для test-0001 нас ждёт СЮРПРИЗ (удивительно, что сюрприз связан с аккаунтом сервера на котором ВСЁ РАБОТАЕТ!!!):
    a04ac318d20c4844b68b1f7127f8a934.png
    Так, так!!! Оказывается, что spn для сервера test-0002 имеется в AD в двух экземплярах – в учётке test-0002_httpd и в учётке test-0001_httpd ! Чего по документации быть не должно! Вот это и был корень проблемы! Дубликат SPN.
    После удаления дубликата всё заработало!!!

    Всем спасибо за внимание.)))

    P.S.
    Рекомендация для заведения SPN. Нужно использовать команду setspn -S, а не servspn -A, т.к. setspn -S проверяет наличие дубликатов. Очень рекомендую к прочтению статью https://social.technet.microsoft.com/wiki/contents....
    Ответ написан
    Комментировать
  • Учет времени работы windows-пользователей. Чем считать?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Немного поверхностно, но где-то так:
    1. Написать свою заставку экрана, которая будет при активизации отсылать сообщение.
    2. Потом при входе пользователя в систему генерируется событие в windows (wmi). Не могу подсказать какое, там их очень много, надо поискать. Вообще советую посмотреть WMI - очень может помочь. Может вообще получится всё на WMI сделать (можно писать на JavaScript/CScript). Не думаю, что есть связка Python/WMI, но всякое бывает...
    3. Запретить в политиках домена менять заставку пользователем.
    4. Складывать/вычитать получающиеся времена.
    Ответ написан
  • Active directory Экспорт журнала

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Хочу сделать небольшой комментарий к этой проблеме. В принципе работать с журналом windows не только на контроллере домена, но и даже на простом компьютере — засада ещё та. Желание обработать журнал превращается в проблему не только с logon/logoff, т.к. связь событий друг с другом отследить очень трудно. К таким событиям лучше готовиться заранее, а не тогда, когда проблема встала в полный рост. Кстати, предложение импорта/экспорта в вашей ситуации не лишено смысла, т.к. нужен хороший текстовый редактор, который может переварить объём текста в 100-200МБайт. Такой есть — EditPadPro. Не бесплатный, конечно, но… рекомендую. У него ещё и регулярные выражения есть. Это очень упростит задачу.
    Ответ написан
    Комментировать
  • Windows Active Directory (сценарии вход/выход)

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Похоже на то — делать тоже самое, но по-новому. Может это можно как-то использовать в своих целях, но иногда бывает смешно, что инструменты есть, а цели пока не ясны.
    Ответ написан
    Комментировать
  • распространение ПО через ActiveDirectory

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Эти события мне знакомы. Как-то писал их перехват через wmi. Но мне кажется логичным подход к установке в таком виде:
    1. Попытка установки (с учётом небольшого набора данных об окружающей среде, например, знать версию windows, чтобы случайно не запустить заведомо неудачную установку windows installer 3.5 для ХЗ XP на windows server 2003).
    2. Получение результата установки (определение версии того же windows installer после установки).
    3. Если результат не достигнут, то даже знания о событиях вряд-ли стоит рассматривать для автоматической корректировки алгоритма установки. Думаю, что в любом случае надо разбираться с неудачной установкой вручную.

    Использование SCCM (в прошлом SMS) под вопросом, опять же из-за способов поддержки в типах установщиков. Вы не знаете, он кроме *.msi что-то поддерживает?
    (Готовить пакет изменений в системе после установки любого приложения не есть хорошо, потому что такие пакеты могут быть разными в зависимости от версии windows)
    Ответ написан
    Комментировать