Samenvatting
Forest-vertrouwensrelaties kunnen u voor resources in een Active Directory-forest te vertrouwen identiteiten uit een ander forest. Deze vertrouwensrelatie kan worden geconfigureerd in beide richtingen. Het vertrouwde forest is de bron van de gebruikersidentiteit. Het vertrouwende forest bevat de bron waarop gebruikers worden geverifieerd. Het vertrouwde forest kan gebruikers voor het vertrouwende forest verifiëren zonder dat het omgekeerde voordoen.
Onbeperkte Kerberos-overdracht is een mechanisme waarbij een gebruiker zijn referenties naar een service stuurt-service toegang tot bronnen voor de gebruiker inschakelen. Inschakelen van onbeperkte Kerberos-overdracht van de service-account in Active Directory moet worden gemarkeerd als vertrouwd voor overdracht. Hiermee maakt u een probleem als de service en gebruiker tot verschillende forests behoren. Het forest service is verantwoordelijk voor het delegeren. De overdracht omvat de referenties van gebruikers in het forest van de gebruiker.
Één forest beveiliging beslissingen die van invloed is op een ander forest accounts toestaan schendt de beveiligingsgrens tussen forests. Een aanvaller die eigenaar is van het vertrouwende forest kan delegatie van een TGT om een identiteit aanvragen uit het vertrouwde forest toegang tot bronnen in het vertrouwde forest geven. Dit geldt niet voor Kerberos-gebonden overdracht (KCD).
Windows Server 2012 geïntroduceerd afdwingen voor de Forest-Boundary voor volledige Kerberos-overdracht. Een beleid voor deze functie toegevoegd aan het vertrouwde domein onbeperkte overdracht op basis van per vertrouwensrelatie uitschakelen. De standaardinstelling voor deze functie kunt onbeperkte overdracht en onveilig is.
Updates die beveiliging bieden bestaan voor de volgende versies van Windows Server:
-
Windows Server 2019
-
Windows Server 2016
-
Windows Server 2012 R2
-
Windows Server 2012
Deze functie wijzigt security hardening zijn backported naar de volgende versies:
-
Windows Server 2008 R2
-
Windows Server 2008
Deze beveiligingsupdates worden de volgende wijzigingen aanbrengen:
-
Onbeperkte Kerberos-overdracht is standaard uitgeschakeld op nieuwe forest en nieuwe externe vertrouwensrelatiesna de installatiede update 14 mei en latere updates.
-
Onbeperkte Kerberos-overdracht op bossen (nieuwe en bestaande) en externe vertrouwensrelaties is uitgeschakeld nadat u de juli 9, 2019, update en latere updates hebt geïnstalleerd.
-
Beheerders kunnen onbeperkte Kerberos-overdracht via de mei of een latere versie van NETDOM en AD PowerShell module inschakelen.
De updates kunnen veroorzaken conflicten compatibiliteit voor toepassingen die momenteel vereisen dat onbeperkte overdracht via forest of een bestaande externe vertrouwensrelaties. Dit geldt met name van externe vertrouwensrelatie waarop de vlag quarantaine (ook bekend als SID-filtering) standaard is ingeschakeld. Met name niet verificatieaanvragen voor services die gebruikmaken van onbeperkte overdracht via het type vertrouwensrelatie weergegeven wanneer u nieuwe tickets aanvraagt.
Zie tijdlijn bijgewerktvoor de datums release.
Workaround
Voor de beveiliging van gegevens en account op een Windows Server-versie met de functie afdwingen voor de Forest-Boundary voor volledige Kerberos-overdracht , kunt u overdracht TGT blokkeren na het installeren van de updates maart 2019 via een binnenkomende vertrouwensrelatie door de Netdom vlag EnableTGTDelegationNee, als volgt:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
TGT delegatie is op nieuwe en bestaande forest en externe vertrouwensrelaties geblokkeerd na installatie van mei en juli 2019 respectievelijk bijgewerkt.
Opnieuw inschakelen van overdracht via vertrouwensrelaties en teruggaan naar de oorspronkelijke configuratie onveilige tot overdracht van beperkte of op basis van een resource kan worden ingeschakeld, stelt u de vlag EnableTGTDelegation op Ja.
De opdrachtregel NETDOM TGT overdracht inschakelen is als volgt:
netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes
U kunt conceptueel zien van de syntaxis NETDOM voor TGT delegatie als volgt inschakelen:
netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes
De syntaxis van NETDOM TGT delegatie van fabrakam.com-gebruikers op servers van contoso.com inschakelen is als volgt:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes
Opmerkingen
-
De vlag EnableTGTDelegation moet worden ingesteld in het vertrouwde domein (fabrikam.com in dit geval) voor elk vertrouwende domein (bijvoorbeeld contoso.com). Nadat de vlag is ingesteld, is het vertrouwde domein kan niet meer gebruikt: TGT's worden overgedragen aan het vertrouwende domein.
-
De beveiligingsstatus van EnableTGTDelegation is ingesteld op Nee.
-
Een toepassing of service die afhankelijk zijn van de onbeperkte overdracht tussen forests, mislukken wanneer EnableTGTDelegation wordt handmatig of via programmering instellen op Ja. EnableTGTDelegation standaard ingesteld op Nee voor nieuwe en bestaande vertrouwensrelaties na mei 2019 en juli 2019 updates installeren. Zie Zoeken naar services die afhankelijk van de onbeperkte overdracht zijnvoor meer informatie over het detecteren van deze fout. Zie tijdlijn bijgewerkt voor een tijdlijn met wijzigingen die van invloed zijn op hoe deze oplossing kan worden toegepast.
-
Raadpleeg de documentatie van Netdom.exevoor meer informatie over NETDOM.
-
Als u overdracht op een vertrouwensrelatie TGT inschakelen moet, het raadzaam u dit risico beperken door Windows Defender referentie Guard op clientcomputers. Dit voorkomt dat alle onbeperkte overdracht vanaf een computer die Windows Defender referentie Guard ingeschakeld en actief is.
-
Worden als u externe vertrouwensrelatie of forest hebt, hetzij zijn geconfigureerd, zoals in quarantaine, TGT overdracht kan niet ingeschakeld de twee vlaggen hebben de tegenovergestelde semantiek. De quarantaine-bit versterkt de beveiligingsgrens tussen deelnemende domeinen. TGT overdracht inschakelen, wist u de beveiligingsgrenzen van de tussen domeinen die door het vertrouwende domeintoegang geven tot de referenties van gebruikers van het vertrouwde domein. Is niet mogelijk deze beide manieren.
Toevoegen aan de syntaxis van de opdracht NETDOM de quarantaine: geen vlag als de vlag quarantaine is ingeschakeld.
-
Als u EnableTGTDelegation hebt gewijzigd op Ja, verwijder Kerberos-tickets op de oorsprong en de tussenliggende bellers zoals vereist. De relevante ticket te verwijderen is van de client referral TGT over de relevante vertrouwensrelatie. Dit kan betrekking hebben op meer dan één apparaat, afhankelijk van het aantal hops voor overdracht in een bepaalde omgeving.
Zie het volgende artikel in de Windows IT Pro Center voor meer informatie over deze procedure:
Afgeleide domeinreferenties met Windows Defender referentie Guard beschermen
Tijdlijn voor updates
12 maart 2019
De tenuitvoerlegging voor de forest-boundary voor Kerberos-overdracht volledig beschikbaar als een update van deze functie inschakelen voor alle ondersteunde versies van Windows Server die worden vermeld in de sectie van toepassing zijn op aan het begin van dit artikel. Het is raadzaam dat u de functie voor binnenkomende forest-vertrouwensrelaties instellen.
De update wordt de functie afdwingen voor de Forest-Boundary voor volledige Kerberos-overdracht toevoegen aan de volgende systemen:
-
Windows Server 2008 R2
-
Windows Server 2008
14 mei 2019
Een update is uitgebracht, een nieuwe veilige standaard configuratie toevoegen om een nieuw forest en externe vertrouwensrelaties. Als u overdracht via vertrouwensrelaties vereist, moet de vlag EnableTGTDelegation op Ja worden ingesteld voordat de 9 juli 2019-update is geïnstalleerd. Als u geen overdracht in een vertrouwensrelatie vereist, moet u de vlag EnableTGTDelegation niet instellen. De vlag EnableTGTDelegation wordt genegeerd totdat de update 9 juli 2019 is geïnstalleerd zodat beheerders tijd onbeperkte Kerberos-overdracht opnieuw in te schakelen wanneer dat nodig is voor het.
Als onderdeel van deze update, zal de vlag EnableTGTDelegation worden standaard ingesteld op Nee voor alle nieuwe vertrouwensrelaties. Dit is het tegenovergestelde van het vorige gedrag. Het is raadzaam dat beheerders in plaats daarvan de desbetreffende services voor het gebruik van resources gebaseerde gebonden overdracht configureren.
Zie Zoeken naar services die afhankelijk van de onbeperkte overdracht zijnvoor meer informatie over het opsporen van problemen met de compatibiliteit.
9 juli 2019
Een update is uitgebracht die het nieuwe standaardgedrag aan de inkomende kant van het forest en externe vertrouwensrelaties afdwingt. Verificatie-aanvragen voor services die onbeperkte overdracht via de typen weergegeven vertrouwensrelatie geverifieerd zonder overdracht. De service mislukt wanneer deze probeert uit te voeren bewerkingen overgedragen.
Zie de sectie 'oplossing' voor de beveiliging.
Services die afhankelijk van de onbeperkte overdracht zijn zoeken
Scannen voor forests die binnenkomende vertrouwensrelaties waardoor TGT overdracht en uitvoeren om te zoeken elke beveiligings-principals die onbeperkte overdracht, kunnen de volgende PowerShell scripts in een script bestand (bijvoorbeeld Get-RiskyServiceAccountsByTrust.ps1 - Ophalen):
Opmerking
U kunt ook de vlag - ScanAll kunt u zoeken in de vertrouwensrelaties die staan geen delegatie TGT doorgeven.
[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
}
Active Directory-beveiligings-principals in domeinen die zijn geconfigureerd voor een binnenkomende vertrouwensrelatie van het uitvoerende domein die zonder worden geconfigureerd delegatie beperkingen een overzicht van de uitvoer van de PowerShell-scripts. De uitvoer zal lijken op in het volgende voorbeeld.
domein |
sAMAccountName |
objectClass |
partner.fabrikam.com |
gevaarlijke |
gebruiker |
partner.fabrikam.com |
labsrv$ |
computer |
Opsporen van onbeperkte overdracht via Windows-gebeurtenissen
Als een Kerberos-ticket is uitgegeven, worden de volgende beveiligingsgebeurtenissen vastgelegd in een Active Directory-domeincontroller. De gebeurtenissen bevatten informatie over het doeldomein. Om te bepalen of onbeperkte overdracht wordt gebruikt voor binnenkomende vertrouwensrelaties kunt u de gebeurtenissen.
Opmerking
Controleer of gebeurtenissen die een doeldomeinnaam waarde bevat die overeenkomt met de naam van het vertrouwde domein.
Gebeurtenislogboek |
Bron van gebeurtenis |
Gebeurtenis-id |
Details |
Beveiliging |
Microsoft-Windows-beveiliging-controle |
4768 |
Een TGT Kerberos is uitgegeven. |
Beveiliging |
Microsoft-Windows-beveiliging-controle |
4769 |
Een Kerberos Service Ticket is uitgegeven. |
Beveiliging |
Microsoft-Windows-beveiliging-controle |
4770 |
Een Kerberos-Ticket Service werd vernieuwd. |
Problemen met mislukte verificaties
Als de onbeperkte overdracht is uitgeschakeld, kunnen toepassingen compatibiliteitsproblemen met deze wijzigingen hebben als de toepassingen die zijn gebaseerd op de onbeperkte overdracht. Deze toepassingen moeten worden geconfigureerd voor het gebruik beperkte overdracht of gebonden overdracht die op basis van een resource is. Fof meer informatie, see Kerberos gebonden overdracht overzicht.
Toepassingen die van round trip-verificatie via vertrouwensrelaties gebruikmaken worden niet ondersteund met behulp van beperkte overdracht. Bijvoorbeeld mislukt een overdracht als een gebruiker in een Forest wordt geverifieerd bij een toepassing in Forest B en de toepassing in Forest B wilt overdragen, een ticket naar Forest A.