Suvestinė
Miško patikos suteikia galimybę "„Active Directory“ miško" ištekliams pasitikėti tapatybėmis iš kito miško. Šis pasitikėjimas gali būti konfigūruojamas abiem kryptimis. Patikimas miškas yra vartotojo tapatybės šaltinis. Patikimame miške yra ištekliai, kuriuos autentifikuoja vartotojai. Patikimas miškas gali autentifikuoti vartotojus patikimame miške neleisdamas įvykti atvirkščiai.
Nevaržomas "Kerberos" perdavimas yra mechanizmas, kuriuo vartotojas siunčia savo kredencialus tarnybai, kad įgalintų tarnybą pasiekti išteklius vartotojo vardu. Norint įgalinti nevaržomą "Kerberos" perdavimą, tarnybos paskyra "Active Directory" turi būti pažymėta kaip patikima. Tai sukuria problemą, jei vartotojas ir tarnyba priklauso skirtingiems miškams. Tarnybų miškas yra atsakingas už perdavimo leidimą. Perdavimas apima vartotojų kredencialus iš vartotojo miško.
Leidžiant vienam miškui priimti saugos sprendimus, kurie turi įtakos kito miško paskyroms, pažeidžiama miškų saugos riba. Užpuolikas, kuriam priklauso patikimas miškas, gali prašyti perduoti TGT tapatybei iš patikimo miško, suteikdamas jam prieigą prie patikimo miško išteklių. Tai netaikoma "Kerberos" riboto perdavimo funkcijai (KCD).
Į "Windows Server 2012" įtrauktas "Kerberos" visiško perdavimo miško ribų vykdymas. Ši funkcija įtraukė strategiją į patikimą domeną, kad būtų galima išjungti nevaržomą perdavimą pagal patikimumo principą. Numatytasis šios funkcijos parametras leidžia nevaržomą perdavimą ir yra nesaugus.
Naujinimai, kurie sustiprina saugumą, yra šių "Windows Server" versijų:
- Windows Server 2019
- Windows Server 2016
- „Windows Server 2012 R2“
- Windows Server 2012
Ši funkcija kartu su saugos sustiprinimo pakeitimais buvo perkelta į šias versijas:
- Windows Server 2008 R2
- „Windows Server 2008“
Su šiais saugos naujinimais atliekami šie pakeitimai:
- Įdiegus gegužės 14 d. arba vėlesnius naujinimus, pagal numatytuosius parametrus naujuose miškuose ir naujuose išoriniuose patikimuose elementuose išjungiamas neribotas "Kerberos" perdavimas.
- Įdiegus 2019 m. liepos 9 d. naujinimą ir vėlesnius naujinimus, suvaržomas "Kerberos" perdavimas išjungiamas miškuose (tiek naujuose, tiek esamuose) ir išoriniuose patikimuose elementuose.
- Administratoriai gali įgalinti nevaržomą "Kerberos" perdavimą, naudodami gegužės mėn. arba naujesnes NETDOM versijas ir AD PowerShell modulį.
Naujinimai gali sukelti suderinamumo konfliktus programoms, kurioms šiuo metu reikalingas nevaržomas delegavimas miške arba išoriniuose patikimuose elementuose. Tai ypač pasakytina apie išorinį patikimumą, kuriam sulaikymo vėliavėlė (dar vadinama SID filtravimu) įgalinta pagal numatytuosius parametrus. Tiksliau sakant, pageidaujant naujų kvitų neveiks autentifikavimo prašymai dėl tarnybų, kurioms naudojamas nevaržomas delegavimas pagal nurodytus patikimumo tipus.
Išleidimo datas rasite Naujinimai laiko juostoje.
Sprendimo būdas
Norėdami užtikrinti duomenų ir paskyros saugą "Windows Server" versijoje, kurioje yra "Kerberos" visiško perdavimo funkcija Miško ribų vykdymas, galite blokuoti TGT perdavimą įdiegę 2019 m. kovo mėn. naujinimus gaunamo patikėjimo patikos pakete, nustatydami netdom vėliavėlę EnableTGTDelegation į Ne, kaip nurodyta toliau:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
Įdiegus atitinkamai 2019 m. gegužės ir liepos mėn. naujinimus, TGT perdavimas blokuojamas naujuose ir esamuose miško ir išoriniuose patikinimuose.
Norėdami vėl įgalinti perdavimą patikimuose fonduose ir grįžti į pradinę nesaugią konfigūraciją, kol bus įgalintas ribotas arba su ištekliais pagrįstas perdavimas, nustatykite žymę EnableTGTDelegation kaip Taip.
NETDOM komandų eilutė TGT perdavimui įgalinti yra tokia:
netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes
Galite konceptualiai galvoti apie NETDOM sintaksę įgalinant TGT perdavimą taip:
netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes
NETDOM sintaksė, leidžianti TGT perduoti fabrakam.com vartotojus contoso.com serveriuose, yra tokia:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes
Pastabos.
- Žymė "EnableTGTDelegation" turėtų būti nustatyta patikimame domene (šiuo atveju fabrikam.com) kiekvienam patikimam domenui (pvz., contoso.com). Nustačius vėliavėlę, patikimas domenas nebeleis perduoti TGT patikimam domenui.
- "EnableTGTDelegation" saugi būsena yra Ne.
- Bet kuri programa ar paslauga, kuri priklauso nuo nevaržomo perdavimo miškuose, neveiks, kai EnableTGTDelegation rankiniu būdu arba programiškai nustatyta kaip Taip. Įdiegus 2019 m. gegužės ir 2019 m. liepos mėn. naujinimus, naujiems ir esamiems patikos fondams "EnableTGTDelegation" pagal numatytuosius parametrus yra NE . Daugiau informacijos apie tai, kaip aptikti šią triktį, ieškokite Tarnybų, kurios remiasi nesuvaržytu perdavimu, radimas. Pakeitimų, turinčių įtakos šio sprendimo taikymui, laiko planavimo juostą rasite Naujinimai.
- Daugiau informacijos apie NETDOM rasite Netdom.exe dokumentacijoje.
- Jei patikimoje tarnyboje turite įgalinti TGT perdavimą, rekomenduojama sumažinti šią riziką klientų kompiuteriuose įgalinant "Windows" sargybos "Credential Guard". Tai apsaugo nuo bet kokio nevaržomo perdavimo iš kompiuterio, kuriame įjungta ir veikia "Windows" sargybos "Credential Guard".
- Jei turite mišką arba išorinį patikinimą ir kuris nors iš jų sukonfigūruotas kaip sulaikytas, TGT perdavimo įgalinti negalima, nes abi vėliavėlės turi priešingą semantiką. Karantino funkcija sustiprina saugos ribą tarp dalyvaujančių domenų. Įgalinus TGT perdavimą, ištrinamos saugos ribos tarp domenų, suteikiant patikimam domenui prieigą prie patikimo domeno vartotojų kredencialų. Jūs negalite turėti abiejų pusių.
Įtraukite karantiną:no vėliavėlę į NETDOM komandinės eilutės sintaksę, jei šiuo metu įjungta karantino vėliavėlė. - Jei pakeitėte "EnableTGTDelegation" į Taip, panaikinkite "Kerberos" protokolo kvitus pradiniams ir tarpiniams skambinantiesiems, jei reikia. Atitinkamas bilietas, kurį reikia ištrinti, yra kliento rekomendacija TGT per atitinkamą patikos fondą. Tai gali apimti daugiau nei vieną įrenginį, atsižvelgiant į perdavimo perėjimų skaičių konkrečioje aplinkoje.
Daugiau informacijos apie šią procedūrą rasite šiame "Windows" IT specialistų centro straipsnyje:
Apsaugokite išvestinius domeno kredencialus naudodami "Windows" sargybos "Credential Guard"
Naujinimai laiko juosta
2019 m. kovo 12 d.
Visiško "Kerberos" miško ribų vykdymas bus pasiekiamas kaip naujinimas, kad ši funkcija būtų įgalinta visose palaikomose "Windows Server" versijose, išvardytose šio straipsnio viršuje esančioje dalyje "Taikoma". Rekomenduojame šią funkciją nustatyti gaunamiems miško patikimiems skaičiams.
Atnaujinimas įtrauks " Kerberos" visiško perdavimo miško ribų vykdymo funkciją į šias sistemas:
- Windows Server 2008 R2
- „Windows Server 2008“
2019 m. gegužės 14 d.
Buvo išleistas naujinimas, įtraukiant naują saugią numatytąją konfigūraciją į naujus miško ir išorinius patikėjimus. Jei reikalingas perdavimas patikimiems fondams, prieš įdiegiant 2019 m. liepos 9 d. naujinimą vėliavėlė EnableTGTDelegation turėtų būti nustatyta kaip Taip . Jei jums nereikia perdavimo tarp patikos fondų, neturėtumėte nustatyti žymės EnableTGTDelegation . EnableTGTDelegation vėliavėlės bus nepaisoma, kol nebus įdiegtas 2019 m. liepos 9 d. naujinimas, kad administratoriai turėtų laiko iš naujo įgalinti nevaržomą "Kerberos" delegavimą, kai to prireiks.
Vykdant šį naujinimą, pagal numatytuosius nustatymus visiems naujai sukurtiems patikimiems fondams " EnableTGTDelegation " vėliavėlė bus nustatyta kaip Ne . Tai priešingas ankstesniam elgesiui. Vietoj to rekomenduojame administratoriams iš naujo sukonfigūruoti paveiktas tarnybas, kad būtų galima naudoti su ištekliais susijusį ribotąjį delegavimą.
Daugiau informacijos apie tai, kaip aptikti suderinamumo problemas, žr. Rasti tarnybas, kurios priklauso nuo nesuvaržyto delegavimo.
2019 m. liepos 9 d.
Buvo išleistas naujinimas, kuris įgalina naują numatytąją elgseną miško ir išorinių patikimų fondų gavimo pusėje. Autentifikavimo prašymai tarnyboms, kurioms naudojamas nevaržomas delegavimas pagal nurodytus patikimumo tipus, bus autentifikuojamos, bet be perdavimo. Tarnyba neveiks, kai bandys vykdyti priskirtas operacijas.
Norėdami sušvelninti problemą, žr. skyrių "Sprendimo būdas".
Rasti tarnybas, kurios remiasi nevaržomu delegavimu
Norėdami ieškoti miškų, kuriuose yra gaunamų patikimų, leidžiančių perduoti TGT, ir rasti saugos principus, leidžiančius nevaržomą perdavimą, scenarijaus faile vykdykite toliau nurodytus "PowerShell" scenarijus (pvz., Get-RiskyServiceAccountsByTrust.ps1 -Collect):
Pastaba
Taip pat galite perduoti vėliavėlę -ScanAll , kad ieškotumėte patikos fondų, kuriuose negalima perduoti TGT.
"PowerShell" scenarijai
[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" scenarijų išvestis išvardija "Active Directory" pagrindinius saugos principus domenuose, kurie sukonfigūruoti gauti patikimą ryšį iš vykdančiojo domeno, kurio neribotas perdavimas sukonfigūruotas. Išvestis bus panaši į toliau pateiktą pavyzdį.
| domenas | sAMAccountName | objectClass |
|---|---|---|
| partner.fabrikam.com | pavojingas | vartotojas |
| partner.fabrikam.com | labsrv$ | kompiuteris |
Nesuvaržyto perdavimo aptikimas per "Windows" įvykius
Kai išduodamas "Kerberos" kvitas, "Active Directory" domeno valdiklis registruoja šiuos saugos įvykius. Įvykiai apima informaciją apie tikslinį domeną. Įvykius galite naudoti norėdami nustatyti, ar neribotas perdavimas naudojamas su gaunamais patikimais fondais.
Pastaba
Ieškokite įvykių, kuriuose yra "TargetDomainName " reikšmė, atitinkanti patikimo domeno vardą.
| Įvykių žurnalas | Įvykio šaltinis | Įvykio ID | Išsami informacija |
|---|---|---|---|
| Sauga | „Microsoft“-Windows-Security-Auditing | 4768 | Buvo išduotas "Kerberos TGT". |
| Sauga | „Microsoft“-Windows-Security-Auditing | 4769 | Buvo išduotas "Kerberos" paslaugos kvitas. |
| Sauga | „Microsoft“-Windows-Security-Auditing | 4770 | Atnaujintas "Kerberos" paslaugos kvitas. |
Autentifikavimo trikčių diagnostika
Išjungus neribotą perdavimą, programoms gali kilti suderinamumo su šiais pakeitimais problemų, jei jos remiasi nesuvaržytu perdavimu. Šios programos turi būti sukonfigūruotos naudoti apribotą delegavimą arba ribotą delegavimą pagal išteklius. Daugiau informacijos žr. "Kerberos" riboto perdavimo apžvalga.
Programos, kurios naudoja patikimų fondų autentifikavimą pirmyn ir atgal, nepalaikomos naudojant apribotą perdavimą. Pvz., perduoti nepavyksta, jei vartotojas miške A autentifikuoja programą B miške, o programa B miške bando perduoti kvitą atgal į A mišką.