Atjauninājumi TGT deleģēšanai ienākošajos trestos pakalpojumā Windows Server

Attiecas uz
Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Windows Server 2019, all editions

Kopsavilkums

Meža trasti nodrošina veidu, kā Active Directory meža resursi var uzticēties cita meža identitātēm. Šo uzticēšanos var konfigurēt abos virzienos. Uzticamais mežs ir lietotāja identitātes avots. Uzticamajā mežā ir resurss, kuru autentificē lietotāji. Uzticamais mežs var autentificēt lietotājus uzticamā mežā, nepieļaujot pretējo notikumu.

Neierobežota Kerberos deleģēšana ir mehānisms, kurā lietotājs nosūta savus akreditācijas datus pakalpojumam, lai iespējotu pakalpojumam piekļuvi resursiem lietotāja vārdā. Lai iespējotu neierobežotu Kerberos deleģēšanu, pakalpojuma kontam pakalpojumā Active Directory jābūt atzīmētam kā uzticamam deleģēšanai. Tas rada problēmu, ja lietotājs un pakalpojums pieder dažādiem mežiem. Dienesta mežs ir atbildīgs par deleģēšanas atļaušanu. Deleģēšana ietver lietotāja meža lietotāju akreditācijas datus.

Atļaujot vienam mežam pieņemt drošības lēmumus, kas ietekmē cita meža kontus, tiek pārkāpta drošības robeža starp mežiem. Uzbrucējs, kuram pieder uzticamais mežs, var pieprasīt TGT deleģēšanu identitātei no uzticamā meža, piešķirot tam piekļuvi resursiem uzticamajā mežā. Tas neattiecas uz Kerberos ierobežotu deleģēšanu (KCD).

Windows Server 2012 ieviesa meža robežas ieviešanu Kerberos pilnai deleģēšanai. Šis līdzeklis pievienoja politiku uzticamajam domēnam, lai atspējotu neierobežotu deleģēšanu katram uzticamībai. Šī līdzekļa noklusējuma iestatījums atļauj neierobežotu deleģēšanu un ir nedrošs.

Atjauninājumi, kas nodrošina drošības rūdību, pastāv tālāk norādītajām Windows Server versijām.

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

Šis līdzeklis kopā ar drošības stiprināšanas izmaiņām tika iekļauts tālāk norādītajās versijās.

  • Windows Server 2008 R2
  • Windows Server 2008

Šie drošības atjauninājumi veic tālāk norādītās izmaiņas.

  • Pēc 14. maija atjauninājuma un jaunāku atjauninājumu instalēšanas Kerberos neierobežotā deleģēšana pēc noklusējuma ir atspējota jaunos mežos un jaunos ārējos trestos.
  • Pēc 2019. gada 9. jūlija atjauninājuma un jaunāku atjauninājumu instalēšanas Kerberos konsolidētā deleģēšana mežos (gan jaunos, gan esošos) un ārējos trestos ir atspējota.
  • Administratori var iespējot neierobežotu Kerberos deleģēšanu, izmantojot NETDOM maija vai jaunākas versijas un AD PowerShell moduli.

Atjauninājumi var radīt saderības konfliktus programmām, kurām pašlaik ir nepieciešama neierobežota deleģēšana meža vai ārējos trestos. Tas jo īpaši attiecas uz ārējo uzticamību, kurai karantīnas karodziņš (tiek dēvēts arī par SID filtrēšanu) ir iespējots pēc noklusējuma. Precīzāk — autentifikācijas pieprasījumi pakalpojumiem, kas izmanto neierobežotu deleģēšanu pār uzskaitītajiem trestu veidiem, neizdosies, kad pieprasīsit jaunas biļetes.

Izlaišanas datumus skatiet sadaļā Atjauninājumi laika grafikā.

Risinājums

Lai nodrošinātu datu un konta drošību Windows Server versijā, kurā ir meža robežas ieviešana Kerberos pilnai deleģēšanai, varat bloķēt TGT deleģēšanu pēc 2019. gada marta atjauninājumu instalēšanas ienākošajā trestā, iestatot netdom karodziņu EnableTGTDelegation uz , kā norādīts tālāk:


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

TGT deleģēšana tiek bloķēta jaunos un esošajos meža un ārējos trestos pēc attiecīgi 2019. gada maija un jūlija atjauninājumu instalēšanas.

Lai atkārtoti iespējotu deleģēšanu trastos un atgrieztos pie sākotnējās nedrošās konfigurācijas, līdz var iespējot ierobežotu vai uz resursiem balstītu deleģēšanu, iestatiet karodziņu EnableTGTDelegation uz .

NETDOM komandrinda, lai iespējotu TGT deleģēšanu, ir šāda:


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

NETDOM sintaksi TGT deleģēšanas iespējošanai var konceptuāli izdomāt šādi:


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

NETDOM sintakse, lai iespējotu fabrakam.com lietotāju TGT deleģēšanu contoso.com serveros, ir šāda:


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

         Piezīmes

  • EnableTGTDelegation karodziņš ir jāiestata uzticamajā domēnā (šajā gadījumā fabrikam.com) katram uzticamajam domēnam (piemēram, contoso.com). Pēc karodziņa iestatīšanas uzticamais domēns vairs neļaus deleģēt TGT uzticamajam domēnam.
  • EnableTGTDelegation drošais stāvoklis ir .
  • Jebkura lietojumprogramma vai pakalpojums, kura izmanto neierobežotu deleģēšanu mežos, nedarbosies, ja EnableTGTDelegation tiek manuāli vai programmiski iestatīts uz Jā. Pēc 2019. gada maija un jūlija atjauninājumu instalēšanas EnableTGTDelegation jaunajos un esošajos trešanās līdzekļos pēc noklusējuma tiek iestatīts uz NĒ . Papildinformāciju par to, kā noteikt šo kļūmi, skatiet sadaļā Tādu pakalpojumu atrašana, kas balstās uz neierobežotu deleģēšanu. Skatiet Atjauninājumi laika grafiku, lai uzzinātu par izmaiņām, kas ietekmē, kā šo risinājumu var lietot.
  • Papildinformāciju par NETDOM skatiet Netdom.exe dokumentācijā.
  • Ja ir jāiespējo TGT deleģēšana trestā, ieteicams mazināt šo risku, klientu datoros iespējojot līdzekli Windows Defender Credential Guard. Tas novērš jebkādu neierobežotu deleģēšanu no datora, kurā ir iespējots un darbojas Windows Defender Credential Guard.
  • Ja jums ir meža vai ārējais trestam un kāds no tiem ir konfigurēts kā karantīnā, TGT deleģēšanu nevar iespējot, jo abiem karodziņiem ir pretēja semantika. Karantīnas bits nostiprina drošības robežu starp iesaistītajiem domēniem. Iespējojot TGT deleģēšanu, tiek izdzēstas drošības robežas starp domēniem, piešķirot uzticamajam domēnam piekļuvi uzticamo domēnu lietotāju akreditācijas datiem. Nevar būt abējādi.
    Pievienojiet karodziņu quarantine:no NETDOM komandrindas sintaksē, ja karantīnas karodziņš pašlaik ir iespējots.
  • Ja esat mainījis EnableTGTDelegation uz , izdzēsiet Kerberos biļetes sākotnējiem un starpposma zvanītājiem, ja nepieciešams. Attiecīgā biļete, kas jādzēš, ir klienta ieteikums TGT attiecīgajā trastā. Tas var būt saistīts ar vairākām ierīcēm atkarībā no deleģēšanas lēkņu skaita konkrētā vidē.

Papildinformāciju par šo procedūru skatiet šajā Windows IT Pro Center rakstā:

Aizsargājiet atvasinātā domēna akreditācijas datus, izmantojot Windows Defender Credential Guard

Atjauninājumi laika grafiks

2019. gada 12. marts

Meža robežas ieviešana pakalpojumam Kerberos būs pieejama kā atjauninājums, lai iespējotu šo līdzekli visās atbalstītajās Windows Server versijās, kas norādītas sadaļā Attiecas uz šī raksta sākumā. Ieteicams iestatīt šo līdzekli ienākošajiem meža trestiem.

Atjauninājums pievienos meža robežas izpildes līdzekli Kerberos pilnai deleģēšanai tālāk norādītajās sistēmās.

  • Windows Server 2008 R2
  • Windows Server 2008

2019. gada 14. maijs

Tika izlaists atjauninājums, pievienojot jaunu drošu noklusējuma konfigurāciju jauniem meža un ārējiem trestiem. Ja nepieciešama deleģēšana starp trastiem, EnableTGTDelegācijas karodziņam ir jābūt iestatītam uz pirms 2019. gada 9. jūlija atjauninājuma instalēšanas. Ja deleģēšana starp trastiem nav nepieciešama, karodziņu EnableTGTDelegation nenosaka. EnableTGTDelegācijas karodziņš tiks ignorēts līdz 2019. gada 9. jūlija atjauninājuma instalēšanai, lai administratoriem dotu laiku atkārtoti iespējot neierobežotu Kerberos deleģēšanu, kad tā būs nepieciešama.

Šī atjauninājuma ietvaros karodziņš EnableTGTDelegation pēc noklusējuma tiks iestatīts uz visiem jaunizveidotajiem trestiem. Šī ir pretēja darbība iepriekšējai. Tā vietā administratoriem ieteicams pārkonfigurēt ietekmētos pakalpojumus, lai izmantotu ierobežotu uz resursiem balstītu deleģēšanu.

Papildinformāciju par saderības problēmu noteikšanu skatiet sadaļā Tādu pakalpojumu atrašana, kas balstās uz neierobežotu deleģēšanu.

2019. gada 9. jūlijā

Ir izlaists atjauninājums, kas ievieš jauno noklusējuma darbību meža un ārējo trestu ienākošajā pusē. Autentifikācijas pieprasījumi pakalpojumiem, kas izmanto neierobežotu deleģēšanu pār uzskaitītajiem trestu veidiem, tiks autentificēti, bet bez deleģēšanas. Pakalpojums neizdosies, kad tas mēģinās palaist deleģētās darbības.

Informāciju par risku novēršanu skatiet sadaļā "Risinājums".

Tādu pakalpojumu atrašana, kas balstās uz neierobežotu deleģēšanu

Lai meklētu mežus, kuros ir ienākošie uzticamības, kas atļauj TGT deleģēšanu, un atrastu drošības principus, kas atļauj neierobežotu deleģēšanu, skripta failā izpildiet šādus PowerShell skriptus (piemēram, Get-RiskyServiceAccountsByTrust.ps1 -Collect):

Piezīme

Varat arī nodot karodziņu -ScanAll , lai meklētu trestos, kas neļauj TGT deleģēšanu.

PowerShell skripti

[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 skriptu izvade uzskaita Active Directory drošības principus domēnos, kas ir konfigurēti ienākošai uzticamībai no izpildes domēna, kurā ir konfigurēta neierobežota deleģēšana. Izvade būs līdzīga tālāk redzamajam piemēram.

domēns sAMAccountName objectClass
partner.fabrikam.com bīstami lietotājs
partner.fabrikam.com labsrv$ dators

Neierobežotas deleģēšanas noteikšana, izmantojot Windows notikumus

Kad tiek izsniegta Kerberos biļete, Active Directory domēna kontrolleris reģistrē tālāk norādītos drošības notikumus. Notikumi satur informāciju par mērķa domēnu. Varat izmantot notikumus, lai noteiktu, vai neierobežota deleģēšana tiek izmantota ienākošajos trestos.

Piezīme

Pārbaudiet, vai nav notikumu, kas satur TargetDomainName vērtību, kas atbilst uzticamajam domēna nosaukumam.

Notikumu žurnāls Notikuma avots Notikuma ID Detalizēta informācija
Drošība Microsoft-Windows-Security-Auditing 4768 Tika izsniegts Kerberos TGT.
Drošība Microsoft-Windows-Security-Auditing 4769 Tika izsniegta Kerberos servisa biļete.
Drošība Microsoft-Windows-Security-Auditing 4770 Kerberos servisa biļete tika atjaunota.

Autentifikācijas kļūmju problēmu novēršana

Ja neierobežotā deleģēšana ir atspējota, lietojumprogrammām var rasties saderības problēmas ar šīm izmaiņām, ja lietojumprogrammas paļaujas uz neierobežotu deleģēšanu. Šīs lietojumprogrammas ir jākonfigurē, lai izmantotu ierobežotu deleģēšanu vai ierobežotu deleģēšanu, kuras pamatā ir resursi. Papildinformāciju skatiet rakstā Kerberos ierobežotās deleģēšanas pārskats.

Programmas, kas ir atkarīgas no turp un atpakaļ autentifikācijas trestos, netiek atbalstītas, izmantojot ierobežotu deleģēšanu. Piemēram, deleģēšana neizdodas, ja lietotājs mežā A autentificējas programmai mežā B un programma mežā B mēģina deleģēt biļeti atpakaļ mežam A.