Переключение приложения на использование Kerberos на основе Constraint
У меня есть старое приложение, которое мы настроили с помощью Kerberos на основе делегирования. Все с приложением работало нормально, пока мы не опробовали его на одном из наших новых компьютеров с Windows 10.
Через некоторое время мы наконец-то выяснили, что Credential Guard не очень хорошо играет с этим старым приложением.
Соображения 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), чтобы он работал.