„Account is sensitive and cannot be delegated“ Option für privilegierte Accounts

Eine von vielen Maßnahmen zur Sicherung von (hoch-)privilegierten AD Accounts ist es, die Option Account is sensitive and cannot be delegated für die betroffenen Accounts zu aktivieren um sicherzustellen, dass die Credentials dieser Accounts nicht von einer vertrauenswürdigen Anwendung an einen anderen Computer oder Service weitergeleitet werden können. Diese Funktion, die einer Anwendung erlaubt „im Auftrag“ eines Benutzers zu authentifizieren (Kerberos Delegation) ist normalerweise für Admin Accounts nicht erforderlich – für solche Anwendungsfälle sollten immer möglichst niedrig-privilegierte Service Accounts angelegt und verwendet werden.

Die Konfiguration führt man über eine administrative PowerShell mit AD Modulen aus.

Import-Module ActiveDirectory

Als Erstes geben wir alle AD Accounts mit Anmeldenamen und DN nach ihrem Delegation Status aus.

Get-ADUser -Filter {AccountNotDelegated -eq $false} | Format-Table sAMAccountName,DistinguishedName,AccountNotDelegated    # User Credentials können für Kerberos Delegation verwendet werden
Get-ADUser -Filter {AccountNotDelegated -eq $true} | Format-Table sAMAccountName,DistinguishedName,AccountNotDelegated     # User Credentials können nicht für Kerberos Delegation verwendet werden

In der Regel sind Admin Accounts in einer eigenen OU separiert von unprivilegierten Usern. Entsprechend lässt sich die Abfrage auch einschränken.

$OU = 'OU=Admins,OU=Privileged Objects,DC=lab,DC=local'
Get-ADUser -Filter {AccountNotDelegated -eq $false} -SearchBase $OU | Format-Table sAMAccountName,DistinguishedName,AccountNotDelegated    # User Credentials können für Kerberos Delegation verwendet werden
Get-ADUser -Filter {AccountNotDelegated -eq $true} -SearchBase $OU | Format-Table sAMAccountName,DistinguishedName,AccountNotDelegated     # User Credentials können nicht für Kerberos Delegation verwendet werden

Optional lassen sich alle User mit aktiver Delegation ausgeben, die durch AdminSDHolder geschützt sind.

Get-ADUser -Filter {(AdminCount -eq 1) and (AccountNotDelegated -eq $false)} | Format-Table sAMAccountName,DistinguishedName,AccountNotDelegated

Sehr schön ist auch die Möglichkeit, alle User mit aktivierter Kerberos Delegation zu ermitteln und zu prüfen, ob diese in einer High Privilege Group Mitglied sind. In der Microsoft Gallery gibt es hierzu ein PowerShell Modul, welches heruntergeladen und importiert werden muss (Download Link am Ende des Beitrags).

. .\Test-ADUserHighPrivilegeGroupMembership.ps1
Get-ADUser -Filter {AccountNotDelegated -eq $true} | Test-ADUserHighPrivilegeMembership

Um die Delegation Möglichkeit zu unterbinden, suche ich mir nun alle Accounts im Scope meiner Admin-OU heraus und setzte das Attribut.

$OU = 'OU=Admins,OU=Privileged Objects,DC=lab,DC=local'
Get-ADUser -Filter {AccountNotDelegated -eq $false} -SearchBase $OU | ForEach-Object {
  Set-ADUser -Identity $_ -AccountNotDelegated $true
}

Eine andere Alternative ist z.B. das Deaktivieren der Delegation für alle Mitglieder einer Admin Gruppe:

Get-ADGroupMember -Identity "<Admin-Group-Name>" | ForEach-Object {
  Set-ADUser -Identity $_ -AccountNotDelegated $true
}

Und auch hier wieder die AdminSDHolder geschützten User:

Get-ADUser -Filter {(AdminCount -eq 1) and (AccountNotDelegated -eq $false)} | ForEach-Object {
  Set-ADUser -Identity $_ -AccountNotDelegated $true
}

Quellen:
https://gallery.technet.microsoft.com/scriptcenter/Test-ADUserHighPrivilegeGro-7660b3a4

Downloads:
Test-ADUserHighPrivilegeGroupMembership

1 Antwort

  1. D. Emmermacher sagt:

    Interessanter Artikel.
    Der Link https://gallery.technet.microsoft.com/scriptcenter/Test-ADUserHighPrivilegeGro-7660b3a4 funktioniert nicht mehr.

    D. Emmermacher

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.