דילוג לתוכן הראשי
AD Academy
Delegation ב־Active Directory
מתקדם15 דקותעודכן לאחרונה: נושא 3 מתוך 4

Constrained Delegation (KCD)

האצלה מוגבלת לרשימת שירותים, ומה זה Protocol Transition.

לא הושלם

מה תלמדו כאן

  • שני מצבים
  • הגנה
  • האצלה מוגבלת לרשימת שירותים, ומה זה Protocol Transition.

כדאי לקרוא לפני הנושא הזה:Unconstrained Delegation

ב־ מגדירים במפורש לאילו מותר לשרת להתחזות, דרך התכונה msDS-AllowedToDelegateTo. זה הרבה יותר בטוח מ־Unconstrained, אבל עדיין לא חף מסיכונים.

שרת Web עם KCD מבקש מה־KDC כרטיס בשם המשתמש (S4U2Self), ואז מבקש כרטיס לשירות המטרה (S4U2Proxy). ה־KDC בודק את msDS-AllowedToDelegateTo לפני שהוא מנפיק כרטיס ל־MSSQLSvc. סיכון: Service Name Substitution — רכיב השירות בכרטיס אינו נאכף, ולכן ניתן להחליף SPN לשירות אחר על אותו שרת. הגנה: הימנעות מ־Protocol Transition, שימוש ב־gMSA, ולא להאציל לחשבונות Tier 0.

שני מצבים

  • Use only — נדרש שהמשתמש יתאמת מול השירות ב־Kerberos (S4U2Proxy בלבד).
  • Use any authentication protocol (Protocol Transition) — השירות יכול להנפיק כרטיס בשם המשתמש גם בלי שהמשתמש התאמת ב־ (S4U2Self). זהו המצב המסוכן.

הסיכון: ה־ ברשימה מגדיר שירות, אבל לא באמת נאכף רכיב השירות בכרטיס. תוקף ששולט בחשבון עם ו־Protocol Transition יכול להחליף את שם השירות (Service Name Substitution) ולגשת לשירותים נוספים על אותו שרת יעד.

הגנה

  • להימנע מ־Protocol Transition אלא אם אין ברירה.
  • לתת האצלה לחשבונות שירות ייעודיים בלבד, עם סיסמאות ארוכות (gMSA).
  • לא להאציל לעולם לשירותים שרצים על Tier 0 (DC, ADFS, PKI).
  • לבדוק תקופתית את כל האובייקטים עם msDS-AllowedToDelegateTo.
ארכיטקטורה ותיאוריה — מתחת למכסה המנוע

מגביל את ההתחזות לרשימת מוגדרת. אבל ההגבלה היא על ה־SPN — לא על השירות. מי ששולט בחשבון יכול לבקש כרטיס לכל SPN על אותו מחשב יעד.

  • Only — נדרש כרטיס אמיתי מהמשתמש, אין התחזות יזומה.
  • Protocol Transition — השרת יכול להמציא זהות בעצמו דרך S4U2Self. ההגדרה המסוכנת.
  • יחיד המאושר ל־CIFS פותח בפועל גישה גם ל־HOST, ו־RPCSS על אותו מחשב.
הגדרה מעשית (PowerShell / GUI)
# הגדרה מאובטחת: Kerberos Only בלבד
Set-ADUser svc_web -Add @{'msDS-AllowedToDelegateTo'='HTTP/app01.corp.com'}
Set-ADAccountControl svc_web -TrustedToAuthForDelegation $false

# ביקורת: מי מוגדר Protocol Transition
Get-ADObject -LDAPFilter '(userAccountControl:1.2.840.113556.1.4.803:=16777216)' -Properties samAccountName
powershell
תרחישי אמת בארגון
  • שרת אפליקציה שניגש לשיתוף קבצים בשם המשתמש.
  • פורטל פנימי מול Exchange או SQL.
אבחון ופתרון תקלות
  • KDC_ERR_BADOPTION — ה־ המבוקש אינו ברשימה או שגוי באיות.
  • כפול בדומיין → אימות נכשל לגמרי. בודקים עם setspn -X.
setspn -X
setspn -L svc_web
bash
מילון מונחים ושורת פקודות מהירה
  • S4U2Self = השג כרטיס בשם משתמש.
  • S4U2Proxy = העבר אותו ליעד.
  • Substitution — החלשה מובנית של .

בדוק את עצמך

איזו תכונה מגדירה Constrained Delegation קלאסית?

העמוד הזה עזר לך?