Applies ToWindows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows Server 2019, all editions

Zusammenfassung

Gesamtstruktur-Vertrauensstellungen stellen eine Methode für Ressourcen in einer Active Directory-Gesamtstruktur dar, um Identitäten aus einer anderen Gesamtstruktur zu vertrauen. Diese Vertrauensstellung kann bidirektional konfiguriert werden. Die vertrauenswürdige Gesamtstruktur ist die Quelle der Benutzeridentität. Die vertrauende Gesamtstruktur enthält die Ressource, für die sich Benutzer authentifizieren. Die vertrauenswürdige Gesamtstruktur kann Benutzer für die vertrauende Gesamtstruktur authentifizieren, ohne dies in die andere Richtung zuzulassen.

Bei der uneingeschränkten Kerberos-Delegierung sendet ein Benutzer seine Anmeldeinformationen an einen Dienst, damit der Dienst im Auftrag des Benutzers auf Ressourcen zugreifen kann. Zum Aktivieren der uneingeschränkten Kerberos-Delegierung muss das Konto des Diensts in Active Directory als für Delegierungszwecke vertraut gekennzeichnet sein. Dadurch ergibt sich ein Problem, wenn der Benutzer und der Dienst unterschiedlichen Gesamtstrukturen angehören. Die Dienstgesamtstruktur ist dafür zuständig, die Delegierung zu erlauben. Die Delegierung beinhaltet die Anmeldeinformationen von Benutzern aus der Gesamtstruktur des Benutzers.

Wenn eine Gesamtstruktur Sicherheitsentscheidungen treffen darf, die die Konten einer anderen Gesamtstruktur beeinträchtigen, dann verstößt dies gegen die Sicherheitsbegrenzung zwischen Gesamtstrukturen. Ein Angreifer, der der Besitzer der vertrauenden Gesamtstruktur ist, kann die TGT-Delegierung für eine Identität von der vertrauenswürdigen Gesamtstruktur anfordern. Dadurch erhält er Zugriff auf Ressourcen in der vertrauenswürdigen Gesamtstruktur. Die eingeschränkte Kerberos-Delegierung (Kerberos Constrained Delegation, KCD) ist nicht davon betroffen.

In Windows Server 2012 wurde das Feature zum Erzwingen der Gesamtstrukturgrenzen für die vollständige Kerberos-Delegierung eingeführt. Mit diesem Feature wurde der vertrauenswürdigen Domäne eine Richtlinie hinzugefügt, um die uneingeschränkte Delegierung auf Vertrauenstellungsbasis zu deaktivieren. Mit der unsicheren Standardeinstellung für dieses Feature ist die uneingeschränkte Delegierung zulässig.

Updates zur Optimierung der Sicherheit gibt es für die folgenden Versionen von Windows Server:

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012 R2

  • Windows Server 2012

Dieses Feature und Änderungen bei der Optimierung der Sicherheit wurden für die folgenden Versionen portiert:

  • Windows Server 2008 R2

  • Windows Server 2008

Mit diesen Sicherheitsupdates werden die folgenden Änderungen vorgenommen:

  • Die uneingeschränkte Kerberos-Delegierung wird für neue Gesamtstruktur- und neue externe Vertrauensstellungen standardmäßig deaktiviert, nachdem Sie das Update vom 14. Mai und neuere Updates installiert haben.

  • Die uneingeschränkte Kerberos-Delegierung ist für (neue und bestehende ) Gesamtstruktur- und externe Vertrauensstellungen deaktiviert, nachdem Sie das Update vom 9. Juli 2019 und neuere Updates installiert haben.

  • Administratoren können die uneingeschränkte Kerberos-Delegierung mithilfe der Versionen ab Mai von NETDOM und des AD PowerShell-Moduls aktivieren.

Die Updates können Kompatibilitätskonflikte für Anwendungen verursachen, die aktuell die uneingeschränkte Delegierung in Gesamtstruktur- oder externen Vertrauensstellungen erfordern. Dies gilt insbesondere für externe Vertrauensstellungen, für die das Quarantäneflag (wird auch als SID-Filterung bezeichnet) standardmäßig aktiviert ist. Authentifizierungsanforderungen für Dienste, die die uneingeschränkte Delegierung in Kombination über die aufgeführten Vertrauensstellungstypen verwenden, schlagen fehl, wenn Sie neue Tickets anfordern.

Informationen zu den Veröffentlichungsterminen finden Sie unter Updatetermine.

Problemumgehung

Um die Sicherheit von Daten und Konten in einer Windows Server-Version sicherzustellen, die das Feature Erzwingen der Gesamtstrukturgrenzen für die vollständige Kerberos-Delegierung aufweist, können Sie die TGT-Delegierung nach der Installation der Updates vom März 2019 für eine eingehende Vertrauensstellung blockieren, indem Sie das netdom-Flag EnableTGTDelegation wie folgt auf No festlegen:

netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No

Die TGT-Delegierung ist für neue und bestehende Gesamtstruktur- und externe Vertrauensstellungen blockiert, nachdem Sie die Updates vom Mai und Juli 2019 installiert haben.

Um die Delegierung für Vertrauensstellungen erneut zu aktivieren und zur ursprünglichen unsicheren Konfiguration zurückzukehren, bis die eingeschränkte oder ressourcenbasierte Delegierung aktiviert werden kann, legen Sie das Flag EnableTGTDelegation auf Yes fest.

Die Befehlszeile für NETDOM zum Aktivieren der TGT-Delegierung sieht wie folgt aus:

netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes

Die NETDOM-Syntax zum Aktivieren der TGT-Delegierung können Sie sich im Prinzip wie folgt vorstellen:

netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes

Die NETDOM-Syntax zum Aktivieren der TGT-Delegierung von fabrikam.com-Benutzern auf contoso.com-Servern sieht wie folgt aus:

netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes

Hinweise

  • Das Flag EnableTGTDelegation sollte in der vertrauenswürdigen Domäne (in diesem Fall fabrikam.com) für jede vertrauende Domäne (z. B. contoso.com) festgelegt werden. Nachdem das Flag festgelegt wurde, erlaubt die vertrauenswürdige Domäne keine Delegierung mehr von TGTs an die vertrauende Domäne.

  • Der sichere Zustand für „EnableTGTDelegation“ ist No.

  • Alle Anwendungen oder Dienste, die die uneingeschränkte Delegierung in Gesamtstrukturen verwenden, schlagen fehl, wenn „EnableTGTDelegation“ manuell oder programmgesteuert auf Yes festgelegt wird. „EnableTGTDelegation“ ist für neue und bestehende Gesamtstrukturen standardmäßig auf NO festgelegt, nachdem Sie die Updates vom Mai und Juli 2019 installiert haben. Weitere Informationen zum Erkennen dieses Fehlers finden Sie unter Suchen nach Diensten, die die uneingeschränkte Delegierung erfordern. Unter Updatetermine finden Sie eine Übersicht über die Termine für Änderungen, die sich darauf auswirken, wie diese Problemumgehung angewendet werden kann.

  • Weitere Informationen zu NETDOM finden Sie in der Dokumentation zu Netdom.exe.

  • Wenn Sie die TGT-Delegierung für eine Vertrauensstellung aktivieren müssen, wird empfohlen, zur Risikominderung Windows Defender Credential Guard auf Clientcomputern zu aktivieren. Dadurch wird jede uneingeschränkte Delegierung von einem Computer verhindert, auf dem Windows Defender Credential Guard aktiviert ist und ausgeführt wird.

  • Wenn Sie über eine Gesamtstruktur- oder externe Vertrauensstellung verfügen und eine davon als in Quarantäne befindlich konfiguriert ist, kann die TGT-Delegierung nicht aktiviert werden, da für die beiden Flags eine umgekehrte Semantik gilt. Das Quarantänebit stärkt die Sicherheitsbegrenzung zwischen beteiligten Domänen. Durch die Aktivierung der TGT-Delegierung werden die Sicherheitsbegrenzungen zwischen Domänen entfernt, indem die vertrauende Domäne Zugriff auf die Anmeldeinformationen von Benutzern aus der vertrauenswürdigen Domäne erhält. In beide Richtungen ist dies nicht möglich.

    Fügen Sie das Flag quarantine:no zur NETDOM-Befehlszeilensyntax hinzu, wenn das Flag quarantine aktuell aktiviert ist.

  • Wenn Sie EnableTGTDelegation in Yes geändert haben, löschen Sie bei Bedarf Kerberos-Tickets für Ursprungs- und Zwischenaufrufe. Das zu löschende Ticket ist das Verweis-TGT des Clients für die relevante Vertrauensstellung. Hierbei können in Abhängigkeit von der Anzahl der Delegierungshops in einer Umgebung mehrere Geräte beteiligt sein.

Weitere Informationen hierzu finden Sie im folgenden Windows IT Pro Center-Artikel:

Schützen abgeleiteter Domänenanmeldeinformationen mit Windows Defender Credential Guard

Updatetermine

12. März 2019

Das Erzwingen der Gesamtstrukturgrenzen für die vollständige Kerberos-Delegierung wird als Update verfügbar sein, um dieses Feature unter allen unterstützten Windows Server-Versionen zu aktivieren, die am Anfang dieses Artikels im Abschnitt Gilt für aufgelistet sind. Es wird empfohlen, dieses Feature für eingehende Gesamtstruktur-Vertrauensstellungen festzulegen.

Das Update fügt den folgenden Systemen das Feature Erzwingen der Gesamtstrukturgrenzen für die vollständige Kerberos-Delegierung hinzu:

  • Windows Server 2008 R2

  • Windows Server 2008

14. Mai 2019

Ein Update wurde veröffentlicht, um eine neue sichere Standardkonfiguration zu neuen Gesamtstruktur- und externen Vertrauensstellungen hinzuzufügen. Wenn die Delegierung für Vertrauensstellungen erforderlich ist, sollte das Flag EnableTGTDelegation auf Yes festgelegt werden, bevor Sie das Update vom 9. Juli 2019 installieren. Wenn die Delegierung für Vertrauensstellungen nicht erforderlich ist, sollten Sie das Flag EnableTGTDelegation nicht festlegen. Das Flag EnableTGTDelegation wird ignoriert, bis das Update vom 9. Juli 2019 installiert wurde, um Administratoren bei Bedarf Zeit für die erneute Aktivierung der uneingeschränkten Kerberos-Delegierung zu geben.

Im Rahmen dieses Updates wird das Flag EnableTGTDelegation für alle neu erstellten Vertrauensstellungen standardmäßig auf No festgelegt. Dies entspricht dem Gegenteil des bisherigen Verhaltens. Wir empfehlen stattdessen, dass Administratoren die betroffenen Dienste für die Verwendung der ressourcenbasierten eingeschränkten Delegierung neu konfigurieren.

Weitere Informationen zum Erkennen von Kompatibilitätsproblemen finden Sie unter Suchen nach Diensten, die die uneingeschränkte Delegierung erfordern.

9. Juli 2019

Ein Update wurde veröffentlicht, das das neue Standardverhalten auf der eingehenden Seite von Gesamtstruktur- und externen Vertrauensstellungen erzwingt. Authentifizierungsanforderungen für Dienste, die die uneingeschränkte Delegierung über die aufgeführten Vertrauensstellungstypen verwenden, werden authentifiziert, jedoch ohne Delegierung. Der Dienst schlägt beim Versuch fehl, delegierte Vorgänge auszuführen.

Informationen zur Risikominderung finden Sie im Abschnitt „Problemumgehung“.

Suchen nach Diensten, die die uneingeschränkte Delegierung erfordern

Für die Suche nach Gesamtstrukturen, die eingehende Vertrauensstellungen aufweisen, welche die TGT-Delegierung erlauben, und für die Suche nach Sicherheitsprinzipalen, die die uneingeschränkte Delegierung erlauben, führen Sie die folgenden PowerShell-Skripts in einer Skriptdatei aus (z. B. Get-RiskyServiceAccountsByTrust.ps1 -Collect):

Hinweis

Sie können auch das Flag -ScanAll übergeben, um Vertrauensstellungen zu durchsuchen, die die TGT-Delegierung nicht erlauben.


[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 
}

In der Ausgabe der PowerShell-Skripts werden Active Directory-Sicherheitsprinzipale in Domänen aufgelistet, die für eine eingehende Vertrauensstellung von der ausführenden Domäne konfiguriert sind, für die die uneingeschränkte Delegierung konfiguriert ist. Die Ausgabe sieht etwa wie im nachfolgenden Beispiel aus.

domain

sAMAccountName

objectClass

partner.fabrikam.com

dangerous

user

partner.fabrikam.com

labsrv$

computer

Erkennen der uneingeschränkten Delegierung mithilfe von Windows-Ereignissen

Wenn ein Kerberos-Ticket ausgestellt wird, protokolliert ein Active Directory-Domänencontroller die folgenden Sicherheitsereignisse. Die Ereignisse enthalten Informationen zur Zieldomäne. Mithilfe der Ereignisse können Sie feststellen, ob die uneingeschränkte Delegierung für eingehende Vertrauensstellungen verwendet wird.

Hinweis

Suchen Sie nach Ereignissen die einen TargetDomainName-Wert enthalten, der dem Namen der vertrauenswürdigen Domäne entspricht.

Ereignisprotokoll

Ereignisquelle

Ereigniskennung

Details

Sicherheit

Microsoft-Windows-Security-Auditing

4768

Ein Kerberos-TGT wurde ausgestellt.

Sicherheit

Microsoft-Windows-Security-Auditing

4769

Ein Kerberos-Dienstticket wurde ausgestellt.

Sicherheit

Microsoft-Windows-Security-Auditing

4770

Ein Kerberos-Dienstticket wurde erneuert.

Problembehandlung bei Authentifizierungsfehlern

Wenn die uneingeschränkte Delegierung deaktiviert ist, können bei Anwendungen Kompatibilitätsprobleme mit diesen Änderungen auftreten, falls die Anwendungen die uneingeschränkte Delegierung erfordern. Für diese Anwendungen sollte die Verwendung der uneingeschränkten Delegierung oder der eingeschränkten Delegierung, die ressourcenbasiert ist, konfiguriert werden. Weitere Informationen finden Sie unter Eingeschränkte Kerberos-Delegierung (Übersicht).

Anwendungen, die die Roundtrip-Authentifizierung für Vertrauensstellungen erfordern, werden bei Verwendung der eingeschränkten Delegierung nicht unterstützt. Beispielsweise schlägt eine Delegierung fehl, wenn sich ein Benutzer in Gesamtstruktur A für eine Anwendung in Gesamtstruktur B authentifiziert und wenn die Anwendung in Gesamtstruktur B versucht, ein Ticket wieder zurück an Gesamtstruktur A zu delegieren.

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.