Gibt es eine einfache Möglichkeit, Active Directory Constrained Delegation für alle Domänencontroller einzurichten?

Gibt es eine einfache Möglichkeit, Active Directory Constrained Delegation für alle Domänencontroller einzurichten?

Wir haben die Konfiguration der AD-eingeschränkten Delegierung für ein Dienstkonto in unserer Domäne durchgearbeitet und im Prinzip alles zum Laufen gebracht. Dazu mussten wir jedoch die LDAP-Delegierung an bestimmte Domänencontroller einrichten. Der Nachteil dieses Ansatzes besteht für uns darin, dass es bei der Einführung eines neuen DC möglicherweise zu einem Dienstausfall kommen kann, wenn wir unsere Delegierung nicht aktualisieren, um den neuen DC einzuschließen. Gibt es eine Möglichkeit, an alle DCs in der Domäne zu delegieren, oder ist dies nur an einen gleichzeitig möglich?

Antwort1

In allen Fällen ist die Konfiguration der Kerberos-Delegation ein sensibler Vorgang und sollte mit Vorsicht, manuell und von einem vertrauenswürdigen Administrator durchgeführt werden. Da der SPN den Namen des Computers enthält, der einen bestimmten Dienst anbietet, ist es nicht möglich, „alle DCs“ auf einmal anzugeben. Das liegt daran, dass Sie in Zukunft nicht wissen können, wie Ihr nächster DC heißen wird.

Ich würde daher vorschlagen, Ihren Verfahren zum Fördern von DCs SPN-Konfigurationsschritte hinzuzufügen.

Tatsächlich füllt die Kerberos Constrained Delegation UI das Attribut „msDS-AllowedToDelegateTo“ aus. Daher wäre es einfach, die Delegation mit PowerShell zu automatisieren, zum Beispiel:

$userWithConstrainedDelegation = "put_username_here" 
$domain = Get-ADDomain
$user = Get-ADUser $userWithConstrainedDelegation -Properties "msDS-AllowedToDelegateTo"

$spns = @()
$spnsToAdd = @()

#// Get all domain controllers in the current domain
Get-ADDomainController -Filter * | % {

    #// Construct SPNs (an example for ldap SPN)
    $spns += "ldap/{0}" -f $_.Name
    $spns += "ldap/{0}" -f $_.HostName
    $spns += "{0}/{1}" -f $s1,$domain.NetBIOSName

    #// Check if SPN should be added
    foreach($service in $spns){
        if ($user.'msDS-AllowedToDelegateTo' -inotcontains $service){
            "ADDING: {0}" -f $service
            $spnsToAdd += $service
        }
    }

    $spns = @()

}

#// Add missing SPNs
if ($spnsToAdd.Count -gt 0){
    Set-ADObject $user -Add @{ "msDS-AllowedToDelegateTo" = $spnsToAdd }
}

NOTIZ:Dieses Skript dient nur zur Demo! Es istungetestetund kann Fehler enthalten. Testen Sie es im LAB, bevor Sie es verwenden!

Auch hier handelt es sich um einen sensiblen Vorgang. Wenn Sie sich für die Automatisierung entscheiden, müssen Sie das PowerShell-Skript unbedingt signieren, um Manipulationen zu verhindern.

verwandte Informationen