How to – List Object Mode im Active Directory

Es kann unter Umständen erforderlich sein, dass in einem Active Directory bestimmte Objekte für Benutzer nicht sichtbar und nicht zu durchsuchen sind.
Wenn ein AD beispielsweise im Hosting, d.h. shared für mehrere Kunden genutzt wird, wäre es fatal, wenn ein Kunde die Benutzer des anderen Kunden browsen könnte. Das lässt sich eigentlich relativ einfach realisieren.
Sie könnten hier mit Denies auf bestimmte OUs arbeiten. Dies schützt aber nicht davor, dass diese OUs noch sichtbar sind, auch wenn Sie den Inhalt sperren.

Ein Beispiel:
Sie haben all Ihre Kunden in Sub OUs einer OU Kunden zusammengefasst. Hat ein Benutzer nun das LC (ListContent) Recht auf dieser OU Kunden, kann er alle OUs, die darunter zu finden sind, sehen.
Und das unabhängig davon, welche Rechte er auf die darunteliegenden OUs hat. Wenn ein Benutzer des Kunden 01 den Namen des Kunden 02 sieht, wäre das zwar für den Kunden 01 interessant, aber sicher vom Kunden 02 nicht wirklich gewollt.

  • Domain
    • -> Kunden
      • -> Kunde 01
      • -> Kunde 02
      • -> Kunde 03
      • -> …

 

Nun kommt der List Object Mode ins Spiel. Wenn Sie das AD in diesen Modus setzen (Ich beschreibe am Ende wie das geht), dann wird das Recht LO (ListObject) auf jeder OU ausgewertet.
Bei aktiviertem List Object Mode wird bei Zugriffen auf Objekte im AD die Berechtigung auf der übergeordneten OU (Parent) des Objektes geprüft. Hat das anfragende Object nicht das LO Recht,
kann er das darunterliegende nicht browsen.
Wenn dann ein User LO auf die OU Kunden hat, dann brauch er dieses Recht auch auf die Kunden 01, Kunden 02, etc. OUs, um diese sehen zu können.

Es sind allerdings noch einige Dinge zu tun, um die korrekten Berechtigungen tatsächlich nutzen zu können.

Wenn eine OU angelegt wird, völlig gleich auf welcher Ebene, dann werden Standard Berechtigungen vergeben. Diese sind im Schema des ADs hinterlegt.
Das gilt übrigens auch für alle anderen Objekte bei der Anlage. Diese Berechtigungen sind im defaultSecurityDescriptor eingetragen und werden daraus bei der Anlage ausgelesen.
Das Problem ist, dass hier auch das LO Recht für die Gruppe AuthenticatedUsers hinterlegt ist.
Sie können diese Standard Berechtigungen z.B. über den Schemaadmin ändern. Öffnen Sie die Schemaadmin MMC und gehen Sie auf Classes, dann auf OrganizationalUnit – Properties – Default Security – Advanced – AuthenticatedUsers – Edit. Dort können Sie die Rechte LO und LC entziehen. Sie können, falls Sie das nicht als Default möchten, diese Rechte natürlich auch nach dem Anlegen des Objektes entziehen.

lom1

 

Sie können diese Default Einstellungen auch über ADSIedit.msc ändern. Verbinden Sie sich dazu auf die Schema Partition Ihres ADs und wählen Sie das entsprechende Objekt. Im Beispiel OrganizationalUnit.
Dort ist der defaultSecurityDescriptor im SDDL Format abgelegt.

lom2

Hier eine kleine Erklärung des Formats:

D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(OA;;CCDC;bf967a86-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)(OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)(A;;RPLCLORC;;;AU)(A;;LCRPLORC;;;ED)(OA;;CCDC;4828CC14-1437-45bc-9B07-AD6F015E5F28;;AO)

Bedeutung von (A;;RPLCLORC;;;AU):
ZugriffsArt: (A) = Allow Acccess
Rechte: (RPLCLORC) = (RP) = ADS_RIGHT_DS_READ_PROP +
(LC) = ADS_RIGHT_ACTRL_DS_LIST +
(LO) = ADS_RIGHT_DS_LIST_OBJECT +
(RC) = ADS_RIGHT_DS_CONTROL_ACCESS
Identity: (AU) = Authenticated Users

ACHTUNG!
Sie dürfen diese Rechte nicht auf der Domain Root entfernen, da Sie sonst die Policy Verarbeitung gefährden.

Besonderheit!
Es gibt vielerorts noch die Gruppe Pre-Windows 200 Compatible Access, in der die AuthenticatedUsers Member sein könnten. Diverse Server sind hier oft Member. Diese Gruppe hat per Default auch das LO und LC Recht. Damit könnten Ihre vorgenommenen Änderungen wieder ausgehebelt werden. Prüfen Sie bei dieser Vorgehensweise also auch immer diese Gruppe.

Die Gruppe ist aber “eigentlich” nur noch ein Relikt aus NT4 Zeiten und kann theoretisch auch aus den Berechtigungen entfernt werden. Natürlich nur auf “eigene Gefahr” 😉

 Setzen des List Object Mode

Den List Object Mode setzen Sie über das Attribut dsHeuristics der DirectoryService Einstellungen. Sie finden dies, wenn Sie sich mit ADSIEdit.msc auf die Configuration Partition Ihres ADs verbinden.

lom3