סיכום
יחסי אמון של היער מספקים דרך עבור משאבים בתוך יער של Active Directory לתת אמון זהויות מיער אחר. ניתן להגדיר את יחסי האמון בשני הכיוונים. היער מהימן הוא המקור של זהות המשתמש. מתן אמון היער מכיל את המשאב שאליו לאמת משתמשים. היער המהימן ניתן לאמת משתמשים אל היער הנותנת אמון מבלי לאפשר להיפך להתרחש.
הקצאת Kerberos ללא הגבלה הוא מנגנון שבו משתמש שולח את האישורים שלו לשירות כדי להפעיל את השירות לקבל גישה למשאבים בשם המשתמש. כדי לאפשר הקצאת Kerberos ללא הגבלה, יש לסמן החשבון של השירות ב- Active Directory באופן אמין לצורך האצלת סמכויות. פעולה זו יוצרת בעיה אם המשתמש ושירות שייך יערות שונים. היער שירות אחראי המאפשר הקצאה. ההקצאה כולל את האישורים של משתמשים מתוך היער של המשתמש.
מתן אפשרות אחת יער לקבל החלטות האבטחה המשפיע על החשבונות של יער אחר מפרה את הגבול אבטחה בין יערות. תוקף בבעלותה היער הנותנת אמון יש אפשרות לבקש הקצאה של TGT עבור זהות מתוך היער המהימן, הענקת גישה למשאבים ביער מהימן. פעולה זו אינה חלה על הקצאת Kerberos מוגבלת (KCD).
Windows Server 2012 שהוכנסו אכיפה עבור גבול היער עבור הקצאת Kerberos מלא. תכונה זו להוסיף מדיניות קבוצת המחשבים האמינה לבטל הקצאה ללא הגבלה על בסיס לכל אמון. הגדרת ברירת המחדל עבור תכונה זו מאפשר הקצאה ללא הגבלה, והוא אינו בטוח.
עדכונים המספקים אבטחה ההקשחה קיימות עבור הגירסאות הבאות של Windows Server:
-
שרת Windows 2019
-
Windows Server 2016
-
Windows Server 2012 R2
-
Windows Server 2012
תכונה זו יחד עם שינויים בכלי אבטחה היו backported לגירסאות הבאות:
-
Windows Server 2008 R2
-
Windows Server 2008
עדכוני אבטחה אלה לבצע את השינויים הבאים:
-
הקצאת Kerberos ללא הגבלה אינה זמינה כברירת מחדל בהיער החדש ואמינות חיצוני חדשלאחר התקנתעדכון 14 במאי ועדכונים מאוחר יותר.
-
הקצאת Kerberos ללא הגבלה אינה זמינה ביערות (חדשים וקיימים) ואמינות חיצוני לאחר שתתקין את יולי 9, 2019, עדכון ועדכונים מאוחר יותר.
-
מנהלי מערכת יכולים להפעיל הקצאת Kerberos ללא הגבלה באמצעות במאי או גירסאות מאוחרות יותר של מודול NETDOM ו- AD PowerShell.
העדכונים עשוי לגרום להתנגשויות תאימות עבור יישומים הדורשים כעת הקצאה ללא הגבלה על-פני יערות או יחסי אמון חיצוני. דבר זה נכון במיוחד של אמון חיצוני עבורו הדגל הסגר (המכונה גם SID סינון) זמינה כברירת מחדל. באופן ספציפי, בקשות אימות עבור שירותים שמשתמשות בהקצאה והזזת מעל סוגי אמון הרשומים ייכשל בעת בקשת כרטיסים חדשים.
עבור תאריכי שחרור, ראה עדכונים ציר הזמן.
פתרון
כדי לספק אבטחה הנתונים וחשבון בגירסת Windows Server בעל התכונה אכיפה עבור גבול היער עבור הקצאת Kerberos מלא , באפשרותך לחסום הקצאה TGT לאחר התקנת העדכונים במרץ 2019 לרוחב אמון נכנסות על-ידי הגדרת דגל netdom EnableTGTDelegation כ- No, כדלקמן:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:No
הקצאה TGT חסומה על יער חדשים וקיימים ואמינות חיצוני לאחר התקנת במאי ומעדכן יולי 2019 בהתאמה.
כדי להפעיל מחדש הקצאה על-פני יחסי אמון ולחזור לתצורה המקורית לא בטוחים עד הקצאה מוגבלת או מבוסס על-ידי המשאב להיות זמין, להגדיר את הדגל EnableTGTDelegationכן.
שורת הפקודה NETDOM כדי לאפשר הקצאה TGT הוא כדלהלן:
netdom trust <TrustedDomainName > /domain:<TrustingDomainName > /EnableTgtDelegation:Yes
אתה יכול לחשוב רעיונית של התחביר NETDOM עבור הפעלת TGT בהקצאה כדלקמן:
netdom trust <domain that you are administering> /domain:<domain whose trust NETDOM is modifying> /EnableTgtDelegation:Yes
תחביר NETDOM כדי לאפשר הקצאה TGT של משתמשים fabrakam.com בשרתים contoso.com הוא כדלקמן:
netdom.exe trust fabrikam.com /domain:contoso.com /EnableTGTDelegation:Yes
הערות
-
יש להגדיר את הדגל EnableTGTDelegation בקבוצת מחשבים אמינה (fabrikam.com במקרה זה) עבור כל המחשבים הנותנת אמון (כגון contoso.com). לאחר הגדרת הדגל, התחום האמין עוד יאפשר Tgt להקצות לקבוצת המחשבים הנותנת אמון.
-
מצב מאובטח עבור EnableTGTDelegation היא לא.
-
כל יישום או שירות המסתמכת על הקצאה ללא הגבלה בכל היערות ייכשלו כאשר EnableTGTDelegation באופן ידני ואם בצורה תכניתית מוגדר כן. ברירות מחדל EnableTGTDelegation לא על יחסי אמון חדשים וקיימים לאחר התקנת העדכונים במאי 2019 ויולי 2019. לקבלת מידע נוסף אודות האופן שבו ניתן לזהות כשל זה, ראה חיפוש שירותים אשר מסתמכים על הקצאה ללא הגבלה. ראה עדכונים ציר הזמן עבור ציר הזמן של שינויים המשפיעים על אופן החלת דרך זו לעקיפת הבעיה.
-
לקבלת מידע נוסף אודות NETDOM, עיין בתיעוד Netdom.exe.
-
אם עליך להפעיל הקצאה TGT על יחסי אמון, מומלץ לצמצם את סיכון זה על-ידי הפעלת Windows Defender האישור מגן במחשבי לקוח. פעולה זו מונעת כל הקצאה ללא הגבלה ממחשב בעל Windows Defender האישור מגן זמין ופועל.
-
אם יש לך אמון חיצוני או יער אחד מוגדרים כפי להסגר, אין אפשרות להפעיל הקצאה TGT מכיוון שני דגלים יש סמנטיקת הנגדי. הסיבית הסגר במיתוג הגבול אבטחה בין תחומים המשתתפים. הפיכת הקצאה TGT מוחק את גבולות האבטחה בין תחומים על-ידי מתן גישה קבוצת המחשבים הנותנת אמון לאישורים של משתמשים מהתחום המהימן. אתה אינו יכול ליהנות משני העולמות.
הוסף דגל הסגר: לא תחביר שורת הפקודה NETDOM אם הדגל הסגר זמין כעת.
-
אם שינית EnableTGTDelegation ל כן, מחק את כרטיסי Kerberos על מתקשרים המקורית וביניים כנדרש. הכרטיס הרלוונטיים כדי למחוק הוא ההפניה של הלקוח TGT על-פני יחסי האמון רלוונטי. זו היתה כרוכה יותר מהתקן אחד, בהתאם למספר הדילוגים הקצאה בסביבה נתונה.
לקבלת מידע נוסף אודות הליך זה, ראה את המאמר הבא של מרכז מקצועני IT של Windows:
להגן על אישורי תחום נגזר עם מגן האישורים של Windows Defender
ציר הזמן של עדכונים
12 במרץ 2019
האכיפה עבור גבול היער עבור Kerberos הקצאה מלא יהיה זמין כעדכון כדי להפעיל תכונה זו על כל הגירסאות הנתמכות של Windows Server המפורטות בסעיף ' חל על ' בחלקו העליון של מאמר זה. אנו ממליצים להגדיר את התכונה על יחסי אמון יער נכנסים.
העדכון יוסיף את התכונה אכיפה עבור גבול היער עבור הקצאת Kerberos מלא למערכות הבאות:
-
Windows Server 2008 R2
-
Windows Server 2008
14 במאי 2019
פורסם עדכון הוספת חדש ברירת המחדל בטוח תצורה אל היער החדש ואמינות חיצוני. אם דרוש לך הקצאה על-פני יחסי אמון, הדגל EnableTGTDelegation יש להגדיר כן לפני התקנת העדכון 9 ביולי, 2019. אם אין לך צורך הקצאה על-פני יחסי אמון, עליך להגדיר את הדגל EnableTGTDelegation לא. דגל EnableTGTDelegation תתעלם עד 9 ביולי, 2019 העדכון מותקן כדי להעניק למנהלי מערכת להפעיל מחדש את הקצאת Kerberos ללא הגבלה כאשר הוא נדרש זמן.
כחלק של עדכון זה, הדגל EnableTGTDelegation יוגדר כלא כברירת מחדל עבור כל יחסי אמון החדש שנוצר. זוהי הצורה ההפוכה של הפעולה הקודם. אנו ממליצים למנהלי מחדש במקום זאת את השירותים המושפעים לשימוש מבוסס על-ידי משאב הקצאה מוגבלת.
לקבלת מידע נוסף אודות כיצד לזהות בעיות תאימות, ראה חיפוש שירותים אשר מסתמכים על הקצאה ללא הגבלה.
9 ביולי, 2019
פורסם עדכון האוכף את התנהגות ברירת המחדל החדשה בצד נכנסת של יער ואמינות חיצוני. בקשות אימות עבור שירותים שמשתמשות בהקצאה והזזת מעל סוגי אמון הרשומים יאומתו אך ללא הקצאה. השירות ייכשלו כאשר הוא מנסה להפעיל פעולות משניות.
עבור להפחתת הסיכון, עיין בסעיף "דרכים לעקיפת הבעיה".
חיפוש שירותים שמסתמכים על הקצאה ללא הגבלה
כדי לבצע סריקה לאיתור יערות יש יחסי אמון נכנסים לאפשר הקצאה TGT ולאחר כדי למצוא הגדרות אבטחה מנהלי לאפשר הקצאה ללא הגבלה, הפעל PowerShell הבאים קבצי script בקובץ script של קובץ (לדוגמה, Get-RiskyServiceAccountsByTrust.ps1 - אסוף):
הערה
באפשרותך גם להעביר את הדגל - ScanAll כדי לבצע חיפוש על-פני יחסי אמון שאינן מאפשרות הקצאה TGT.
[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
}
הפלט של קבצי ה-script של PowerShell לפרט מנהלי אבטחה של Active Directory בתחומים שתצורתן נקבעה עבור יחסי האמון הנכנסים בביצוע מהתחום שאליו יש ללא הגבלה הקצאה שתצורתו נקבעה. הפלט יהיה דומה לדוגמה הבאה.
תחום |
sAMAccountName |
objectClass |
partner.fabrikam.com |
מסוכן |
משתמש |
partner.fabrikam.com |
labsrv$ |
מחשב |
מזהה הקצאה ללא הגבלה באמצעות Windows אירועים
בעת הנפקת כרטיס Kerberos, בקר קבוצת המחשבים של Active Directory יומני רישום של אירועי אבטחה הבאים. האירועים מכילים מידע אודות המחשבים המשמשת כיעד. באפשרותך להשתמש האירועים כדי לקבוע אם נעשה שימוש ללא הגבלה הקצאה על-פני יחסי אמון נכנסים.
הערה
בדוק אירועים המכילים ערך TargetDomainName את שם קבוצת המחשבים האמינה המתאים.
יומן אירועים |
מקור האירוע |
מזהה אירוע |
פרטים |
אבטחה |
Microsoft-Windows--ביקורת אבטחה |
4768 |
ש- Kerberos TGT הונפק. |
אבטחה |
Microsoft-Windows--ביקורת אבטחה |
4769 |
כרטיס שירות Kerberos הוא הונפק. |
אבטחה |
Microsoft-Windows--ביקורת אבטחה |
4770 |
כרטיס שירות Kerberos היה לחדש. |
פתרון בעיות של כשלים באימות
כאשר הקצאה ללא הגבלה אינה זמינה, יישומים עשויה להיתקל בבעיות תאימות עם שינויים אלה אם היישומים מסתמכים על הקצאה ללא הגבלה. יישומים אלה ניתן לקבוע את תצורת לשם הקצאה שימוש מוגבל או מוגבל הקצאה שאינו מבוסס על-ידי משאב. חפשאו מידע נוסף, sF סקירה הקצאה מוגבלת של Kerberos.
יישומים המתבססים על אימות מעבר הלוך ושוב בין יחסי אמון אינם נתמכים על-ידי המשתמשים בהקצאה מוגבלת. לדוגמה, הקצאה נכשלת אם משתמש ב- A יער מאמת ליישום ב- B היער היישום ב- B היער מנסה להקצות כרטיס בחזרה אל היער א.