Die Gruppe “Prä-Windows 2000 kompatibler Zugriff” ist in der ersten Version von Active Directory unter Windows 2000 eingeführt worden, um die Kompatibilität des AD mit einigen Anwendungen aus Windows NT 4.0 zu gewährleisten. Mit Hilfe dieser Gruppe war es möglich, anonymen Zugriff auf einige AD-Daten zu gewähren.
Diese Gruppe hat auf viele Objekte in AD Lese-Zugriffsrechte. Sie ist als Container gedacht: Unter Windows 2000 wurde in diese Gruppe die Pseudogruppe “Jeder” eingefügt, die seinerzeit auch anonyme Benutzer umfasste (also solche, die sich nicht an AD angemeldet haben). In späteren AD-Versionen wurde diese Mitgliedschaft auf die Pseudogruppe “Authentifizierte Benutzer” geändert, weil die alte Regelung erhebliche Sicherheitsprobleme nach sich zog. (Parallel wurde übrigens mit SP2 für Windows XP auch die Gruppe “Jeder” verändert: Seitdem umfasst “Jeder” nicht mehr die anonymen Benutzer – damit ist sie faktisch gleichbedeutend mit “Authentifizierte Benutzer”. Man könnte jetzt einwenden, dass die Funktion der Gruppe “Prä-Windows 2000 kompatibler Zugriff” damit verschwunden ist – und hätte Recht mit dem Einwand.)
Obwohl Microsoft empfiehlt, dass der Gruppe “Prä-Windows 2000 kompatibler Zugriff” keine Mitglieder sein sollten, definiert auch ein frisch installierter Windows Server 2008 R2 in einem neuen AD die “Authentifizierten Benutzer” als Mitglied. Diese Tatsache kann sehr hinderlich sein, wenn man das AD mit angepassten AD-Zugriffsrechten absichern möchte.
Es ist nun ein Einfaches, die Gruppe manuell zu leeren. Man kann das aber auch mit einem Skript automatisieren und so in AD-Standardinstallationen einfließen lassen. Das folgende Skript erledigt das.
Damit das Skript auch auf nicht-deutschen Systemen funktioniert, spricht es die Gruppe über ihren SID an. Dieser gehört zu den sog. “Well-known SIDs” und ist auf jedem System identisch.
[Bekannte Sicherheits-IDs in Windows-Betriebssystemen]
http://support.microsoft.com/kb/243330
Das Leeren der Gruppe erfolgt hier einfach mit dem Holzhammer: Das Skript leert das ganze “member”-Attribut der Gruppe auf einen Schlag.
[Remove All the Members of a Group]
http://gallery.technet.microsoft.com/ScriptCenter/en-us/2cb9b454-13ad-4eb5-a6b2-4ffb55e7d796
-
‚ Dieses Skript entfernt alle Mitglieder aus der Gruppe "Prä-Windows 2000 kompatibler Zugriff"
-
Const ADS_PROPERTY_CLEAR = 1
-
-
‚ SID der Gruppe – wichtig in fremdsprachigen Umgebungen
-
strPW2SID = "S-1-5-32-554"
-
-
‚ Gruppe anhand des SID finden
-
Set objPW2Group = GetObject("LDAP://<SID=" & strPW2SID & ">")
-
strPW2DN = objPW2Group.Get("distinguishedName")
-
-
WScript.Echo "Lokalisierter DN der Gruppe: " & strPW2DN
-
WScript.Echo "Aktuelle Mitglieder:"
-
On Error Resume Next
-
arrMembers = objPW2Group.GetEx("member")
-
If Err.number <> 0 Then
-
WScript.Echo "- Keine Mitglieder."
-
WScript.Quit
-
End If
-
-
For Each member In arrMembers
-
WScript.Echo "- " & member
-
Next
-
WScript.Echo vbNewLine & "Entferne alle Mitglieder …"
-
-
objPW2Group.PutEx ADS_PROPERTY_CLEAR, "member", 0
-
objPW2Group.SetInfo
-
If Err.number <> 0 Then
-
WScript.Echo "Fehler: " & Err.number & " (" & Err.Description & ")"
-
WScript.Quit
-
End If
-
On Error Goto 0
-
-
WScript.Echo "Fertig."
Anwendung wie immer auf eigene Gefahr. Kein Support.
http://faq-o-matic.net/?p=2459