Переключение приложения на использование Kerberos на основе Constraint

У меня есть старое приложение, которое мы настроили с помощью Kerberos на основе делегирования. Все с приложением работало нормально, пока мы не опробовали его на одном из наших новых компьютеров с Windows 10.

Через некоторое время мы наконец-то выяснили, что Credential Guard не очень хорошо играет с этим старым приложением.

Согласно https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-considerations

Соображения Kerberos

Когда вы включаете Защиту учетных данных Защитника Windows, вы больше не можете использовать неограниченное делегирование Kerberos или шифрование DES. Неограниченное делегирование может позволить злоумышленникам извлечь ключи Kerberos из изолированного процесса LSA. Вместо этого используйте ограниченное или основанное на ресурсах делегирование Kerberos.

Мы должны переключить нашу реализацию на использование Kerberos на основе Constrained. Я немного растерялся, как это сделать.

Наше текущее имя участника-службы настроено для имени веб-приложения - (Сценарий 2 по этой ссылке - https://support.microsoft.com/en-ca/help/929650/how-to-use-spns-when-you-configure-web-applications-that-are-hosted-on)

setspn -a http/WebSiteName webServerName
setspn -a http/WebSiteName.domain.com webServerName

Приложение общается только с Active Directory. База данных не участвует. В данный момент на сайте запущен пул приложений с учетной записью домена.

Когда я пытаюсь команды как

$comp = Get-ADComputer DcOrAnotherComputer
Set-AdComputer -identity webServerName -PrincipalsAllowedToDelegateToAccount $comp

Я получаю следующую ошибку powershell.

Set-AdComputer : The attribute cannot be modified because it is owned by the system
At line:2 char:1
+ Set-AdComputer -identity hql-dmeds01 -PrincipalsAllowedToDelegateToAccount $comp
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (hql-dmeds01:ADComputer) [Set-ADComputer], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8369,Microsoft.ActiveDirectory.Management.Commands.SetADComputer

Я свел приложение к примеру, который работает на Win7/win2012, но не на win10 с защитой учетных данных.

<%@ Language=VBScript %>
<%


' Create the connection the AD
    set con = createobject("ADODB.connection")
    set Com = createobject("ADODB.command")
    con.Provider = "ADsDSOObject"
    con.Open "Active Directory Provider"
    Set Com.ActiveConnection = con

    dim ldapCall 
    ldapCall = "SELECT ADsPath, distinguishedname, displayName"   &_ 
                   "  FROM '" & "LDAP://DC=mydomain,DC=com'  " &_
                      " WHERE objectClass = 'group' AND name = 'SomeTestGroupName'" & _
                     " ORDER BY displayName "
    'response.write ldapCall

' Execute the search call
    Com.CommandText = ldapCall
    Set rs = Com.Execute

    if not(rs.EOF) then
        response.write "SomethingHappended<br />"
    else 
        response.write "Why don't you work???"
    end if

%>

Обновление 1 - Ответ на вопрос T-Heron Вот результаты выполнения

setspn -q http/WebSiteName.domain.com  - 
Checking domain DC=Mydomain
no such SPN found.

если я сделаю

setspan -q http/WebSiteName- I get the following

Checking domain DC=Mydomain
CN=Webserver,OU=OuLocation,DC=MyDomain
        http/WebSite.myDomain
        http/WebSite
        CmRcService/Webserver
        CmRcService/Webserver.myDomain
        WSMAN/Webserver.myDomain
        TERMSRV/Webserver.myDomain
        RestrictedKrbHost/Webserver.myDomain
        HOST/Webserver
        WSMAN/WSMAN/Webserver
        TERMSRV/WSMAN/Webserver
        RestrictedKrbHost/WSMAN/Webserver
        HOST/Webserver

обновление 2- причина, по которой -q в обновлении 1 не работала, заключалась в том, что spn был установлен на http/WebsiteName.domain.com, а не на http/WebsiteName.abdomain.com (что я и пытался)

Так что все команды -q теперь работают. Но проблема сохраняется

Вот скриншот вкладки делегирования.

Обновление 3 -

Вот новое изображение вкладки делегата. Я попробовал его как с "Использовать только Kerberos", так и "Использовать любой протокол аутентификации" после выполнения IISReset, у меня возникает та же проблема. (Я добавил веб-сервер, когда я нажал кнопку "Добавить". На рисунке красные поля, где записи с помощью веб-сервера, обозначают оранжевые поля, где записи с настройкой spn (рядом с HTTP - типом службы)

1 ответ

Решение

Итак, я смог получить тестовую страницу выше, чтобы наконец заработать. Комментарии T-Heron были на месте, я просто добавил неправильные сервисы для делегирования.

Как только я добавил службу ldap с контроллера домена, тестовая страница начала работать.
(У наших контроллеров домена было 2 сервиса ldap. Один с guid и один с доменным именем. Я выбрал один домен).

[Снимок экрана: вкладка ]

Обновление 1- тестирование решения изначально проводилось на win2k8. Делать то же самое на win2k12 не получалось.

В итоге мне пришлось изменить пул приложений на встроенный ApplicationPoolId (или localsystem), чтобы он работал.

Другие вопросы по тегам