Обобщена информация
Гора гаранти предоставя начин за ресурси в Active Directory гора доверие самоличности от друга гора. Това доверие може да бъде конфигуриран в двете. Доверена гора е източник на самоличността потребител. Доверие гората съдържа ресурс, към който потребителите се удостоверяват. Доверена гора може да удостоверяват потребителите доверие гора без позволява обратното да възниква.
Неограничен Kerberos делегиране е механизъм, при който потребител изпрати своите идентификационни данни за услуга за разрешаване на услугата за достъп до ресурси от страна на потребителя. Да неограничен делегиране Kerberos, сервизен акаунт в Active Directory трябва да бъдат маркирани като безопасни за делегиране. Това създава проблем, ако потребителска и принадлежат към различни домейни. Услугата гора е отговорен за позволява делегиране. Делегиране включва идентификационни данни на потребители от гората на потребителя.
Позволява една гора да взема решения за сигурност, засягащ отчети друга гора нарушава сигурност граница между гори. Нападател, който притежава доверие гората да поискате делегиране на TGT за самоличност от доверена гора, той дава достъп до ресурси в надеждна гора. Това не се отнася за делегиране на Kerberos ограничени (KCD).
Windows Server 2012 въведе изпълнение за гората граница за пълно делегиране Kerberos. Тази функция добавя правила на надежден домейн да забраните неограничен делегиране на базата на доверие. По подразбиране за тази функция позволява неограничен делегиране и не е безопасна.
Актуализации, които предоставят сигурност втвърдяване съществува за следните версии на Windows Server:
-
Windows Server 2019
-
Windows Server 2016
-
Windows Server 2012 R2
-
Windows Server 2012
Тази функция промените в засилване на защитата са backported за следните версии:
-
Windows Server 2008 R2
-
Windows Server 2008
Тези актуализации на защитата направете следните промени:
-
Неограничен Kerberos делегиране е изключено по подразбиране на новата гора и нови външни гарантислед инсталиранепреди актуализация и по-нови актуализации.
-
Неограничен Kerberos делегиране е забранен на горите (нови и съществуващи) и външни гаранти след инсталиране на 9 юли 2019, актуализиране и по-нови актуализации.
-
Администраторите могат да разрешите неограничен Kerberos делегиране чрез май или по-нови версии на NETDOM и AD PowerShell модул.
Актуализациите могат да причинят конфликти съвместимост на приложения, които в момента изискват неограничен делегиране гора или външни гаранти. Това е особено вярно за външни доверие, за които е активиран флагът карантина (известна още като филтриране на SID) по подразбиране. В частност удостоверяване искания за услугите, които използват неограничен делегиране по изброените доверие типове няма когато поискате нов билет.
За дати на изданието вижте актуализира дати.
Заобиколно решение
За осигуряване на данни и сигурността на профилите в Windows Server версия, която има функция за изпълнение на гората граница за пълно делегиране Kerberos , можете да блокирате TGT делегиране след инсталиране на актуализации март 2019 през входящ доверие задавайки Netdom флаг EnableTGTDelegationне както следва:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
TGT делегиране е блокиран за нови и съществуващи гора и външни гаранти, след като инсталирате май и юли 2019 актуализира съответно.
Да възвърнете делегиране на гаранти и връщане към първоначалната конфигурация опасни до делегиране на ограничение или на ресурсите може да бъде разрешено, задайте флаг EnableTGTDelegation да да.
NETDOM команден ред да разрешите TGT делегиране е както следва:
netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes
Концептуален план мислите NETDOM синтаксис за разрешаване на TGT делегиране по следния начин:
netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes
NETDOM синтаксис, за да разрешите TGT делегиране на fabrakam.com потребителите contoso.com сървъри е както следва:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes
Забележки
-
Флагът EnableTGTDelegation трябва да бъде зададен в надежден домейн (fabrikam.com в този случай) за всеки доверие домейн (например contoso.com). След задаването на флаг надежден домейн няма да позволи на TGTs да се възлагат на домейна на доверие.
-
Защитеност за EnableTGTDelegation е не.
-
Всяко приложение или услуга, която се основава на неограничен делегиране между гори ще се провали, когато EnableTGTDelegation е ръчно или програмно Задаване да. По подразбиране EnableTGTDelegation не на нови и съществуващи гаранти, когато инсталирате 2019 май и юли 2019 актуализации. За повече информация как да се открие такъв проблем вижте намиране на услугите, които разчитат на неограничен делегиране. Вижте актуализации сроковете за хронологията на промените, които засягат как може да се прилага това решение.
-
За повече информация относно NETDOM вижте документацията на Netdom.exe.
-
Ако трябва да разрешите TGT делегиране на доверие, се препоръчва намаляване на този риск позволявайки Windows Defender Guard идентификационни данни на клиентски компютри. Това предотвратява всички неограничен делегиране от компютър с Windows Defender Credential Guard разрешена и работи.
-
Ако имате гора или външна сигурност и или са конфигурирани като карантина, TGT делегиране не може да бъде разрешен, защото два флагове са обратна семантика. Карантина малко засилва сигурност граница между участващи домейни. Разрешаване на TGT делегиране изтрива защита границите между домейни чрез доверие достъп до идентификационните данни на потребителите от надежден домейн. Не може да има и двата начина.
Добавете флага карантина: няма синтаксиса на командния ред NETDOM, ако в момента е активиран флагът карантина .
-
Ако сте променили EnableTGTDelegation да да, изтрийте Kerberos билети произход и междинни повиквания според изискванията. Съответните билета, за да изтриете е препращане на клиента TGT в съответните доверие. Това може да включва повече от едно устройство, в зависимост от броя делегиране стъпки в дадена среда.
За повече информация относно тази процедура вижте следната статия от Windows IT Pro център:
Защита на идентификационни данни получени домейн с Windows Defender Credential Guard
Хронология на актуализациите
12 март 2019
Изпълнение на гората граница за Kerberos пълно делегиране ще се предлага като актуализация, за да разрешите тази функция за всички поддържани версии на Windows Server, изброени в раздела " отнася се за " в горната част на тази статия. Препоръчително е да зададете функцията на входящите гора гаранти.
Тя ще добави функцията за изпълнение на гората граница за пълно делегиране Kerberos за следните системи:
-
Windows Server 2008 R2
-
Windows Server 2008
14 април 2019
Добавяне на нов безопасен по подразбиране конфигурация новата гора и външни гаранти беше издадена актуализация. Ако желаете делегиране на гаранти, EnableTGTDelegation флаг трябва да бъде присвоена да преди 9 юли 2019 актуализацията е инсталирана. Ако не желаете делегиране на гаранти, трябва да укажете флагът EnableTGTDelegation . Флагът EnableTGTDelegation ще бъде игнорирана до 9 юли 2019 актуализацията е инсталирана да администраторите време да активирате отново неограничен делегиране Kerberos, когато се изисква.
Като част от тази актуализация EnableTGTDelegation флаг ще бъде присвоена не по подразбиране за всички новосъздадения гаранти. Това е обратното на предишния поведение. Препоръчително е, че администраторите вместо преконфигурирате услуги да използват ресурси делегиране, ограничена.
За повече информация относно начините за откриване на проблеми със съвместимостта вижте намиране на услугите, които разчитат на неограничен делегиране.
9 юли 2019
Беше издадена актуализация, която налага нови поведението по подразбиране на входящите страна на гората и външни гаранти. Удостоверяване искания за услугите, които използват неограничен делегиране по типове изброените доверие ще се удостоверява, но без делегиране. Услугата ще пропадне, когато се опитва да изпълни делегирани операции.
За събития вижте раздела "заобиколно решение".
Намиране на услуги, които разчитат на неограничен делегиране
Сканиране за домейни, които имат входящ гаранти, които позволяват TGT делегиране и да намерите всички защита принципи, които позволяват неограничен делегиране, изпълнете следните PowerShell скриптове в скрипт файл (например Get-RiskyServiceAccountsByTrust.ps1- Вземете):
Забележка
Можете също да премине - ScanAll флаг, за да търсите в гаранти, които не позволяват TGT делегиране.
[CmdletBinding()]
Param
(
[switch]$Collect,
[switch]$ScanAll
)
if ($Debug) {
$DebugPreference = 'Continue'
}
else {
$DebugPreference = 'SilentlyContinue'
}
function Get-AdTrustsAtRisk
{
[CmdletBinding()]
Param
(
[string]$Direction = "Inbound",
[switch]$ScanAll
)
if ($ScanAll) {
return get-adtrust -filter {Direction -eq $Direction}
}
else {
return get-adtrust -filter {Direction -eq $Direction -and TGTDelegation -eq $false}
}
}
function Get-ServiceAccountsAtRisk
{
[CmdletBinding()]
Param
(
[string]$DN = (Get-ADDomain).DistinguishedName,
[string]$Server = (Get-ADDomain).Name
)
Write-Debug "Searching $DN via $Server"
$SERVER_TRUST_ACCOUNT = 0x2000
$TRUSTED_FOR_DELEGATION = 0x80000
$TRUSTED_TO_AUTH_FOR_DELEGATION= 0x1000000
$PARTIAL_SECRETS_ACCOUNT = 0x4000000
$bitmask = $TRUSTED_FOR_DELEGATION -bor $TRUSTED_TO_AUTH_FOR_DELEGATION -bor $PARTIAL_SECRETS_ACCOUNT
$filter = @"
(&
(servicePrincipalname=*)
(|
(msDS-AllowedToActOnBehalfOfOtherIdentity=*)
(msDS-AllowedToDelegateTo=*)
(UserAccountControl:1.2.840.113556.1.4.804:=$bitmask)
)
(|
(objectcategory=computer)
(objectcategory=person)
(objectcategory=msDS-GroupManagedServiceAccount)
(objectcategory=msDS-ManagedServiceAccount)
)
)
"@ -replace "[\s\n]", ''
$propertylist = @(
"servicePrincipalname",
"useraccountcontrol",
"samaccountname",
"msDS-AllowedToDelegateTo",
"msDS-AllowedToActOnBehalfOfOtherIdentity"
)
$riskyAccounts = @()
try {
$accounts = Get-ADObject -LDAPFilter $filter -SearchBase $DN -SearchScope Subtree -Properties $propertylist -Server $Server
}
catch {
Write-Warning "Failed to query $Server. Consider investigating seperately. $($_.Exception.Message)"
}
foreach ($account in $accounts) {
$isDC = ($account.useraccountcontrol -band $SERVER_TRUST_ACCOUNT) -ne 0
$fullDelegation = ($account.useraccountcontrol -band $TRUSTED_FOR_DELEGATION) -ne 0
$constrainedDelegation = ($account.'msDS-AllowedToDelegateTo').count -gt 0
$isRODC = ($account.useraccountcontrol -band $PARTIAL_SECRETS_ACCOUNT) -ne 0
$resourceDelegation = $account.'msDS-AllowedToActOnBehalfOfOtherIdentity' -ne $null
$acct = [PSCustomobject] @{
domain = $Server
sAMAccountName = $account.samaccountname
objectClass = $account.objectclass
isDC = $isDC
isRODC = $isRODC
fullDelegation = $fullDelegation
constrainedDelegation = $constrainedDelegation
resourceDelegation = $resourceDelegation
}
if ($fullDelegation) {
$riskyAccounts += $acct
}
}
return $riskyAccounts
}
function Get-RiskyServiceAccountsByTrust
{
[CmdletBinding()]
Param
(
[switch]$ScanAll
)
$riskyAccounts = @()
$trustTypes = $("Inbound", "Bidirectional")
foreach ($type in $trustTypes) {
$riskyTrusts = Get-AdTrustsAtRisk -Direction $type -ScanAll:$ScanAll
foreach ($trust in $riskyTrusts) {
$domain = $null
try {
$domain = Get-AdDomain $trust.Name -ErrorVariable eatError -ErrorAction Ignore
} catch {
write-debug $_.Exception.Message
}
if($eatError -ne $null) {
Write-Warning "Couldn't find domain: $($trust.Name)"
}
if ($domain -ne $null) {
$accts = Get-ServiceAccountsAtRisk -DN $domain.DistinguishedName -Server $domain.DNSRoot
foreach ($acct in $accts) {
Write-Debug "Risky: $($acct.sAMAccountName) in $($acct.domain)"
}
$risky = [PSCustomobject] @{
Domain = $trust.Name
Accounts = $accts
}
$riskyAccounts += $risky
}
}
}
return $riskyAccounts
}
if ($Collect) {
Get-RiskyServiceAccountsByTrust -ScanAll:$ScanAll | Select-Object -expandProperty Accounts | format-table
}
Изходът на PowerShell скриптове списък механизми за защита на Active Directory домейни, които са конфигурирани за входящи доверие от изпълнение на домейн, който е освободен делегиране конфигуриран. Резултатът ще наподобява следния пример.
домейн |
sAMAccountName |
objectClass |
partner.fabrikam.com |
опасни |
потребител |
partner.fabrikam.com |
labsrv$ |
компютър |
Откриване на неограничен делегиране чрез Windows събития
Когато се издава билет от Kerberos, домейн контролер на Active Directory регистрира следните събития за сигурност. Събития съдържат информация за домейна. Можете да използвате събития за определяне дали неограничен делегиране се използва в входящи гаранти.
Забележка
Проверете за събития, които съдържат TargetDomainName стойност, която отговаря на името на надежден домейн.
Регистър на събитията |
Източник на събитието |
ИД на събитие |
Подробни данни |
Защита |
Microsoft-Windows--проверка на защитата |
4768 |
Kerberos TGT е издаден. |
Защита |
Microsoft-Windows--проверка на защитата |
4769 |
Билет от Kerberos услугата е издаден. |
Защита |
Microsoft-Windows--проверка на защитата |
4770 |
Билет от Kerberos услугата е обновена. |
Отстраняване на неизправности за удостоверяване
След неограничен делегиране, приложенията могат да имат проблеми със съвместимостта с тези промени, ако приложения разчитат на неограничен делегиране. Тези приложения трябва да бъде конфигуриран да използва ограничени делегиране или ограничени делегиране, ресурси. Fили информация, see Общ преглед на делегиране на Kerberos ограничени.
Приложения, които разчитат на кръг удостоверяване в гаранти не се поддържат чрез делегиране на ограничение. Например делегиране е неуспешно, ако потребител в гората А удостоверява приложение в гората Б и приложение в гората Б се опитва да делегира билет обратно към гората а.