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

Rezumat

Pădure trusts oferă o modalitate pentru resurse într-o pădure Active Directory identități de la o altă pădure de încredere. Această autorizare poate fi configurat în ambele indicații de orientare. Pădure acreditată este sursa identitatea de utilizator. Pădure de încredere conține resurse la care utilizatorii se autentifică. Pădure acreditată poate autentifica utilizatorii în pădure de încredere fără a permite inversă să apară.

Delegare Kerberos fără restricţii este un mecanism în care un utilizator trimite acreditări sale într-un serviciu pentru a activa serviciul pentru a accesa resurse în numele de utilizator. Pentru a activa delegare Kerberos fără restricţii, contul de serviciu în Active Directory trebuie să fie marcate ca fiind de încredere pentru delegare. Astfel, se creează o problemă de utilizator și servicii care aparțin păduri diferite. Pădure service este responsabilă pentru a permite delegare. Delegare include acreditările de utilizatori de pădure al utilizatorului.

Permite o pădure pentru a face deciziile de securitate care afectează altă pădure conturi încalcă limita de securitate între păduri. Un atacator care deține pădure de încredere pot solicita delegare de o TGT pentru o identitate din pădure de încredere, oferindu-i acces la resursele în pădure de încredere. Acest lucru nu se aplică pentru delegare Kerberos limitată (KCD).

Windows Server 2012 a introdus executarea pentru pădure limita pentru delegare Kerberos completă. Această caracteristică adaugă o politică de domeniu de încredere pentru a dezactiva delegare fără restricţii în regim per încredere. Setarea implicită pentru această caracteristică permite delegare fără restricţii şi este nesigur.

Există actualizări care furnizează securitate întărire pentru următoarele versiuni de Windows Server:

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012 R2

  • Windows Server 2012

Această caracteristică, împreună cu modificările în securitate consolidare au fost instalate la următoarele versiuni:

  • Windows Server 2008 R2

  • Windows Server 2008

Aceste actualizări de securitate următoarele modificări:

  • Delegare Kerberos fără restricţii este dezactivată în mod implicit în pădure nou și noi relații de încredere externedupă ce instalați14 mai actualizare și actualizările ulterioare.

  • Delegare Kerberos fără restricţii este dezactivat pe păduri (noi sau existente) și relații de încredere externe, după ce instalați iulie 9, 2019, actualizări și mai recente actualizări.

  • Administratorii pot activa fără restricţii delegare Kerberos utilizând mai sau versiuni mai recente NETDOM și AD PowerShell modul.

Actualizările pot cauza conflicte de compatibilitate pentru aplicațiile care necesită în prezent fără restricţii delegare în pădure sau relații de încredere externe. Acest lucru este vizibil mai ales de încredere externe pentru care este activată semnalizarea de carantină (cunoscut și ca SID filtrare) implicit. Mai precis, solicitările de autentificare pentru serviciile care utilizează fără restricţii delegare prin tipurile de încredere listate nu va reuși atunci când solicitați bilete noi.

Pentru datele de lansare, vedeți actualizările cronologie.

Soluție de evitare

Pentru a oferi date și contul de securitate pe o versiune de Windows Server care are caracteristica de Executare pentru pădure limita pentru delegare Kerberos completă , aveți posibilitatea să blocați TGT delegare după ce instalați actualizările martie 2019 peste o intrare de autorizare prin setarea Pavilion Netdom EnableTGTDelegationNo, după cum urmează:

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

Delegare TGT este blocată pe noi și existente pădure și relații de încredere externe și după ce instalați mai iulie 2019 actualizări respectiv.

Pentru a reactiva delegare peste trusts și a reveni la configurația originală nesigure până când delegare restricționat sau de resurse pot fi activate, setați semnalizatorul EnableTGTDelegation la Da.

În linia de comandă NETDOM pentru a activa TGT delegare este după cum urmează:

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

Conceptual credeţi NETDOM sintaxa pentru activarea TGT delegare după cum urmează:

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

Sintaxa pentru a activa TGT delegare fabrakam.com utilizatori pe serverele contoso.com NETDOM este după cum urmează:

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

Note

  • Pavilion EnableTGTDelegation trebuie setată în domeniu de încredere (fabrikam.com în acest caz) pentru fiecare domeniu de încredere (cum ar fi contoso.com). După ce este setat semnalizatorul, domeniu de încredere nu va mai permite TGTs pentru a fi delegate pentru un domeniu de încredere.

  • Starea sigur pentru EnableTGTDelegation este Nr.

  • Orice aplicație sau un serviciu care se bazează pe fără restricţii delegare peste păduri nu va reuși când EnableTGTDelegation este setat manual sau prin programare la Da. EnableTGTDelegation implicite nu pe trusts noi și existente, după ce instalați actualizările mai 2019 și iulie 2019. Pentru mai multe informații despre cum să detecteze această eroare, consultați Găsirea serviciile care se bazează pe fără restricţii delegare. Vedeți actualizările cronologie pentru o cronologie de modificări care afectează modul în care pot fi aplicate această soluție.

  • Pentru mai multe informații despre NETDOM, consultați documentația Netdom.exe.

  • Dacă trebuie să activați TGT delegare pe o relație de încredere, se recomandă ca să diminua riscul activând Windows Defender Credential gardă pe computerele client. Aceasta împiedică toate delegare fără restricţii de pe un computer care are Windows Defender Credential gardă activat și executați.

  • Dacă aveți o pădure sau încredere externe și oricare sunt configurate în carantină, TGT delegare imposibil de activat deoarece semnalizările două au opusă semantică. Bitul de carantină întăreşte limita de securitate între domenii participante. Activarea TGT delegare șterge limite de securitate între domenii oferindu încredere domeniu accesul la acreditările de utilizatori de domeniu de încredere. Nu aveţi ambele moduri.

    Adăugați semnalizatorul de carantină: no sintaxa de linie de comandă NETDOM dacă este activată semnalizarea de carantină .

  • Dacă ați modificat EnableTGTDelegation pentru a Da, ștergeți Kerberos bilete pe apelanţii originare și intermediar, după cum este necesar. Bilet relevante pentru a șterge este client referință TGT peste încredere relevante. Acest lucru poate implica mai multe dispozitive, în funcţie de numărul de salturi delegare într-un anumit mediu.

Pentru mai multe informații despre această procedură, consultaţi următorul articol din centrul de Pro Windows IT:

Protejarea acreditările de domeniu derivat cu Windows Defender Credential gardă

Cronologie de actualizări

12 martie 2019

Impunere pentru pădure limită pentru Kerberos delegare complet va fi disponibil ca o actualizare pentru a activa această caracteristică în toate versiunile de Windows Server care sunt listate în secțiunea se aplică în partea de sus a acestui articol. Vă recomandăm să setați caracteristica pe intrare trusts pădure.

Actualizarea va adăuga caracteristica de Executare pentru pădure limita pentru delegare Kerberos completă la următoarele sisteme:

  • Windows Server 2008 R2

  • Windows Server 2008

14 mai 2019

O actualizare a fost lansat adăugarea unui nou implicite în condiţii de siguranţă configurare la noi pădure și relații de încredere externe. Dacă aveți nevoie de delegare peste trusts, semnalizatorul EnableTGTDelegation trebuie setată la Da înainte de actualizarea 9 iulie 2019 este instalată. Dacă nu necesită delegare peste trusts, nu ar trebui să setați semnalizatorul EnableTGTDelegation . Pavilion EnableTGTDelegation va fi ignorată până la 9 iulie 2019 actualizarea este instalată pentru a oferi administratorii de timp pentru a reactiva delegare Kerberos fără restricţii atunci când este necesar.

Ca parte a acestei actualizări, semnalizatorul EnableTGTDelegation va fi setat nu implicit pentru orice trusts nou creat. Acest lucru este exact contrariul de comportamentul anterior. Vă recomandăm ca administratorii reconfigurați în schimb serviciilor afectate pentru a utiliza bazată pe resurse restricționat delegare.

Pentru mai multe informații despre cum se detectează probleme de compatibilitate, consultaţi Găsirea serviciile care se bazează pe fără restricţii delegare.

9 iulie 2019

O actualizare a fost lansat care impune noul comportament implicit în partea de intrare de pădure și relații de încredere externe. Solicitările de autentificare pentru serviciile care utilizează fără restricţii delegare prin tipurile de încredere listate va fi autentificate numai fără delegare. Serviciul nu va reuși atunci când încearcă să se execute delegat operațiunile.

Pentru diminuarea, consultați secțiunea "Rezolvare".

Găsirea serviciile care se bazează pe fără restricţii delegare

Pentru a scana pentru, care au primit trusts care permite TGT delegare și pentru a găsi orice securitate directorii care permite delegare fără restricţii, executați PowerShell următoarele scripturi într-un script de fișier (de exemplu, Get-RiskyServiceAccountsByTrust.ps1 - Colectați):

Notă

De asemenea, puteţi trece semnalizatorul - ScanAll pentru a căuta în trusts care permite TGT delegare.


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

Ieșire de script-uri PowerShell lista principii de securitate Active Directory în domenii care sunt configurate pentru o intrare autorizare dintr-un domeniu executare care are restricţii delegare configurat. Ieșire seamănă cu următorul exemplu.

domeniu

sAMAccountName

objectClass

partner.fabrikam.com

periculoase

utilizator

partner.fabrikam.com

labsrv$

computer

Detectarea delegare fără restricţii prin evenimente Windows

Când se emite un permis Kerberos, un controler de domeniu Active Directory înregistrează următoarele evenimente de securitate. Evenimente conțin informații despre domeniul țintă. Utilizați evenimentele pentru a determina dacă este utilizată fără restricţii delegare peste trusts primite.

Notă

Verificați pentru evenimente care conține o valoare TargetDomainName care se potrivește cu numele de domeniu de încredere.

Jurnalul de evenimente

Sursă eveniment

ID eveniment

Detalii

Securitate

Microsoft-Windows--audit de securitate

4768

S-a emis o TGT Kerberos.

Securitate

Microsoft-Windows--audit de securitate

4769

S-a emis un permis Kerberos de Service.

Securitate

Microsoft-Windows--audit de securitate

4770

Un permis Kerberos de serviciu s-a reînnoit.

Depanarea erorilor de autentificare

Când este dezactivat fără restricţii delegare, aplicațiile pot avea probleme de compatibilitate cu aceste modificări, dacă aplicațiile se bazează pe fără restricţii delegare. Aceste aplicații ar trebui să fie configurat pentru utilizarea limitată delegare sau restrictivă din delegare care se bazează pe resurse. Fsau mai multe informații, see Prezentare de delegare Kerberos limitată.

Aplicațiile care se bazează pe dus-întors autentificare prin trusts nu sunt acceptate utilizând restricționat delegare. De exemplu, o delegare nu reușește dacă un utilizator în pădure A autentifică la o aplicație în pădure B și aplicația în pădure B este încercarea de a delega un permis înapoi la pădure A.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.