Переключение приложения на использование Kerberos на основе Constraint - PullRequest
0 голосов
/ 25 мая 2018

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

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

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

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

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

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

Наш текущий SPN настроен на имя веб-приложения - (Сценарий 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 теперь работают. Но проблема остается

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

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

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

enter image description here

1 Ответ

0 голосов
/ 11 июля 2018

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

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

[Screenshot of the delegation tab for the webserver]

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

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

...