UpdatesGüncelleştirmeler to TGT delegation across incoming trusts in Windows ServerWindows Server

Uygulandığı Öğe
Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows Server 2019, all editions

Özet

Orman güvenleri, bir Active Directory ormanı kaynakların başka bir ormandaki kimliklere güvenmesi için bir yol sağlar. Bu güven her iki yönde de yapılandırılabilir. Güvenilen orman, kullanıcı kimliğinin kaynağıdır. Güvenen orman, kullanıcıların kimlik doğrulaması yapacağı kaynağı içerir. Güvenilen orman, tersinin gerçekleşmesine izin vermeden güvenilen ormanda kullanıcıların kimliğini doğrulayabilir.

Kısıtlanmamış Kerberos temsilcisi, hizmetin kullanıcı adına kaynaklara erişmesini sağlamak için kullanıcının kimlik bilgilerini hizmete gönderdiği bir mekanizmadır. Kısıtlanmamış Kerberos temsilcisini etkinleştirmek için, hizmetin Active Directory'deki hesabı temsilci seçme için güvenilir olarak işaretlenmelidir. Kullanıcı ve hizmet farklı ormanlara aitse, bu durum sorun oluşturur. Hizmet ormanı, yetkilendirmeye izin vermekten sorumludur. Temsilci, kullanıcının ormanındaki kullanıcıların kimlik bilgilerini içerir.

Bir ormanın başka bir ormanın hesaplarını etkileyen güvenlik kararları almasına izin vermek, ormanlar arasındaki güvenlik sınırını ihlal eder. Güvenen ormanın sahibi olan bir saldırgan, güvenilen ormandan bir kimlik için bir TGT'nin temsilini isteyerek güvenilen ormandaki kaynaklara erişmesini sağlayabilir. Bu, Kerberos Kısıtlanmış temsil işlemi (KCD) için geçerli değildir.

Windows Server 2012Windows Server 2012, Kerberos Tam Temsili için Orman Sınırı Zorlaması'nı tanıttı. Bu özellik, güvenilen etki alanına, güven başına kısıtlanmamış temsil işlemini devre dışı bırakmak için bir ilke ekledi. Bu özelliğin varsayılan ayarı, kısıtlanmamış temsile izin verir ve güvenli değildir.

Aşağıdaki Windows Server sürümleri için güvenlik sağlamlaştırması sağlayan Güncelleştirmeler vardır:

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012

Bu özellik, güvenlik sağlamlaştırmasındaki değişikliklerle birlikte aşağıdaki sürümlere geri aktarıldı:

  • Windows Server 2008 R2
  • Windows Server 2008

Bu güvenlik güncelleştirmeleri aşağıdaki değişiklikleri yapar:

  • 14 Mayıs güncelleştirmesi ve sonraki güncelleştirmeler yüklendikten sonra, yeni orman ve yeni dış güvenlerde kısıtlanmamış Kerberos temsilcisi varsayılan olarak devre dışı bırakılır.
  • 9 Temmuz 2019 güncelleştirmesini ve sonraki güncelleştirmeleri yükledikten sonra ormanlarda (hem yeni hem de mevcut) ve dış güvenlerde kısıtlanmamış Kerberos temsilcisi devre dışı bırakılır.
  • Yöneticiler NETDOM ve AD PowerShell modülünün Mayıs veya sonraki sürümlerini kullanarak kısıtlanmamış Kerberos temsilcisini etkinleştirebilir.

Güncelleştirmeler, şu anda orman veya dış güvenler arasında kısıtlanmamış temsil işlemini gerektiren uygulamalar için uyumluluk çakışmalarına neden olabilir. Bu özellikle karantina bayrağının (SID filtreleme olarak da bilinir) varsayılan olarak etkinleştirildiği dış güven için geçerlidir. Özellikle, listelenen güven türleri üzerinden kısıtlanmamış temsil işlemini kullanan hizmetler için kimlik doğrulama istekleri, yeni biletler istediğinizde başarısız olur.

Çıkış tarihleri için Güncelleştirmeler zaman çizelgesine bakın.

Geçici çözüm

Kerberos Tam Temsilci özelliği için Orman Sınırı Zorlaması'na sahip bir Windows Server sürümünde veri ve hesap güvenliği sağlamak için netdom bayrağı EnableTGTDelegation'ıaşağıdaki gibi ayarlayarak gelen güvene Mart 2019 güncelleştirmelerini yükledikten sonra TGT temsilcisi işlemini engelleyebilirsiniz:


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

TGT temsilcisi, sırasıyla Mayıs ve Temmuz 2019 güncelleştirmelerini yükledikten sonra yeni ve var olan orman ve dış güvenlerde engellenir.

Güvenler arasında temsilci seçmeyi yeniden etkinleştirmek ve kısıtlanmış veya kaynak tabanlı temsil işlemi etkinleştirilene kadar ilk güvenli olmayan yapılandırmaya dönmek için EnableTGTDelegation bayrağını Evet olarak ayarlayın.

TGT temsilini etkinleştirmek için NETDOM komut satırı aşağıdaki gibidir:


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

TGT temsilcisini etkinleştirme işleminin NETDOM söz dizimini kavramsal olarak aşağıdaki gibi düşünebilirsiniz:


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

contoso.com sunucularda fabrakam.com kullanıcıların TGT temsilci seçmesini etkinleştirmek için NETDOM söz dizimi aşağıdaki gibidir:


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

         Notlar

  • Güvenen her etki alanı (contoso.com gibi) için güvenilen etki alanında (bu durumda fabrikam.com) EnableTGTDelegation bayrağı ayarlanmalıdır. Bayrak ayarlandıktan sonra, güvenilen etki alanı artık TGT'lerin güvenen etki alanına temsilci seçilmesine izin vermez.
  • EnableTGTDelegation için güvenli durum Hayır'dır.
  • Ormanlar arasında kısıtlanmamış temsil işlemini kullanan herhangi bir uygulama veya hizmet, EnableTGTDelegation el ile veya program aracılığıyla Evet olarak ayarlandığında başarısız olur . Mayıs 2019 ve Temmuz 2019 güncelleştirmelerini yükledikten sonra yeni ve mevcut güvenlerde EnableTGTDelegation varsayılan olarak HAYIR'dır . Bu hatayı algılama hakkında daha fazla bilgi için bkz: Kısıtlanmamış temsil işlemini kullanan hizmetleri bulma. Bu geçici çözümün nasıl uygulanabileceğini etkileyen değişikliklerin zaman çizelgesi için UpdatesGüncelleştirmeler zaman çizelgesine bakın.
  • NETDOM hakkında daha fazla bilgi için Netdom.exe belgelerini inceleyiniz.
  • Bir güven üzerinde TGT temsilcisini etkinleştirmeniz gerekiyorsa, istemci bilgisayarlarda Windows Defender Credential Guard'ı etkinleştirerek bu riski azaltmanız önerilir. Bu, Windows Defender Credential Guard'ın etkinleştirildiği ve çalıştığı bir bilgisayardan tüm kısıtlanmamış temsil işlemini engeller.
  • Bir ormanınız veya dış güveniniz varsa ve her ikisi de karantinaya alınmış olarak yapılandırılmışsa, iki bayrak zıt semantiklere sahip olduğundan TGT temsilcisi etkinleştirilemez. Karantina biti, katılımcı alan adları arasındaki güvenlik sınırını güçlendirir. TGT temsilcisinin etkinleştirilmesi, güvenen etki alanına güvenilen etki alanındaki kullanıcıların kimlik bilgilerine erişim sağlayarak etki alanları arasındaki güvenlik sınırlarını siler. Her iki şekilde de olamazsın.
    Karantina bayrağı şu anda etkinse, NETDOM komut satırı sözdizimine quarantine:no bayrağı ekleyin.
  • EnableTGTDelegation'ıEvet olarak değiştirdiyseniz, kaynak ve ara arayanlardaki Kerberos anahtarlarını gerektiği gibi silin. Silinecek ilgili bilet, müşterinin ilgili tröst genelindeki yönlendirme TGT'sidir. Bu, belirli bir ortamdaki temsilci atlama sayısına bağlı olarak birden fazla cihazı içerebilir.

Bu yordam hakkında daha fazla bilgi için aşağıdaki Windows BT Pro Merkezi makalesine bakın:

Türetilmiş etki alanı kimlik bilgilerini Windows Defender Credential Guard ile koruma

UpdatesGüncelleştirmeler timeline

12 Mart 2019

Kerberos tam temsilcisi için orman sınırı zorlaması, bu makalenin üst kısmındaki Geçerli olduğu bölümünde listelenen Windows ServerWindows Server öğesinin tüm desteklenen sürümlerinde bu özelliği etkinleştirmek için bir güncelleştirme olarak kullanıma sunulacak. Özelliği, gelen orman güvenlerinde ayarlamanızı öneririz.

Bu güncelleştirme, aşağıdaki sistemlere Kerberos Tam Temsili için Orman Sınırı Zorlaması özelliğini ekleyecektir:

  • Windows Server 2008 R2
  • Windows Server 2008

14 Mayıs 2019

Yeni orman ve dış güvenlere yeni bir güvenli varsayılan yapılandırma ekleyen bir güncelleştirme yayımlandı. Güvenler arasında temsilci gerekiyorsa, 9 Temmuz 2019 güncelleştirmesi yüklenmeden önce EnableTGTDelegation bayrağı Evet olarak ayarlanmalıdır. Güvenler arasında temsilci seçmeniz gerekmiyorsa, EnableTGTDelegation bayrağını ayarlamamalısınız. 9 Temmuz 2019 güncelleştirmesi yüklenene kadar EnableTGTDelegation bayrağı yoksayılır ve yöneticilere gerektiğinde kısıtlanmamış Kerberos temsilciliğini yeniden etkinleştirmeleri için zaman tanınır.

Bu güncelleştirmenin bir parçası olarak, EnableTGTDelegation bayrağı yeni oluşturulan güvenler için varsayılan olarak Hayır olarak ayarlanacaktır. Bu, önceki davranışın tam tersidir. Yöneticilerin bunun yerine etkilenen hizmetleri kaynak tabanlı kısıtlanmış temsil işlemini kullanacak şekilde yeniden yapılandırmalarını öneririz.

Uyumluluk sorunlarını algılama hakkında daha fazla bilgi için, bkz: Kısıtlanmamış temsil işlemini kullanan hizmetleri bulma.

9 Temmuz 2019

Orman ve dış güvenlerin gelen tarafında yeni varsayılan davranışı zorunlu tutan bir güncelleştirme yayımlandı. Listelenen güven türleri üzerinden kısıtlanmamış temsil işlemini kullanan hizmetler için kimlik doğrulama istekleri, temsilci seçmeden doğrulanır. Temsilci atanan işlemleri çalıştırmayı denediğinde hizmet başarısız olur.

Etkiyi azaltmak için "Geçici Çözüm" bölümüne bakın.

Kısıtlanmamış temsile dayanan hizmetleri bulma

TGT temsilcisine izin veren gelen güvenleri olan ormanları taramak ve kısıtlanmamış temsile izin veren güvenlik sorumlularını bulmak için, aşağıdaki PowerShell betiklerini bir betik dosyasında çalıştırın (örneğin, Get-RiskyServiceAccountsByTrust.ps1 -Collect):

Not

Ayrıca, TGT temsilcisine izin vermeyen güvenler arasında arama yapmak için -ScanAll bayrağını da geçirebilirsiniz.

PowerShell betikleri

[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 betiklerinin çıkışı, kısıtlanmamış temsilin yapılandırıldığı yürütücü etki alanından gelen güven için yapılandırılmış etki alanlarındaki Active Directory güvenlik sorumlularını listeler. Çıktı aşağıdaki örneğe benzer.

etki alanı sAMAccountName nesne sınıfı
partner.fabrikam.com TEHLİKELİ kullanıcı
partner.fabrikam.com Labrv$ bilgisayar

Windows olayları aracılığıyla kısıtlanmamış temsil işlemini algılama

Bir Kerberos anahtarı verildiğinde, Active Directory etki alanı denetleyicisi aşağıdaki güvenlik olaylarını günlüğe kaydeder. Olaylar hedef etki alanı hakkında bilgi içerir. Kısıtlanmamış temsil işleminin gelen güvenler arasında kullanılıp kullanılmadığını belirlemek için olayları kullanabilirsiniz.

Not

Güvenilen etki alanı adıyla eşleşen bir TargetDomainName değeri içeren olayları denetleyin.

Olay günlüğü Olay kaynağı Olay Kimliği Ayrıntılar
Güvenlik Microsoft-Windows-Security-Auditing 4768 Bir Kerberos TGT çıkarıldı.
Güvenlik Microsoft-Windows-Security-Auditing 4769 Kerberos Servis Bileti düzenlendi.
Güvenlik Microsoft-Windows-Security-Auditing 4770 Kerberos Servis Bileti yenilendi.

Kimlik doğrulama hatalarını giderme

Kısıtlanmamış temsil işlemi devre dışı bırakıldığında, uygulamalar kısıtlanmamış temsil işlemini kullanıyorsa uygulamalar bu değişikliklerle ilgili uyumluluk sorunları yaşayabilir. Bu uygulamalar, kısıtlanmış temsil işlemini veya kaynak tabanlı kısıtlanmış temsil işlemini kullanacak şekilde yapılandırılmalıdır. Daha fazla bilgi için Kerberos Kısıtlanmış Temsiline Genel Bakış'a bakın.

Güvenler arasında gidiş-dönüş kimlik doğrulamasına dayanan uygulamalar, kısıtlanmış temsil etme kullanılarak desteklenmez. Örneğin, A Ormanı'ndaki bir kullanıcı B Ormanı'ndaki bir uygulamada kimlik doğrulaması yaparsa ve B Ormanı'ndaki uygulama A Ormanı'na bir bilet için temsilci seçmeye çalışırsa temsilci seçme başarısız olur.