Filtern von Gruppenrichtlinien anhand von Benutzergruppen, WMI und Zielgruppenadressierung
Gruppenrichtlinien werden nur von einem Benutzer- oder einem Computerobjekt übernommen. Sicherheitsgruppen können als Filter verwendet werden, um unterschiedliche Richtlinien etwas dynamischer zu gestalteten und aufgrund der Mitgliedschaft eines Benutzers oder eines Computers dieser Gruppe die Richtlinie anzuwenden.
Filter Reihenfolge:
- Die OU/Domäne/Site, der Einhängepunkt der Richtlinien und von da "nach unten"
- Sicherheitsfilterung, einer Sicherheitsgruppe oder einem einzelnen Objekt wird das Recht "übernehmen" zugeteilt.
- WMI Queries, eine Abfrage meistens die Hardware oder das Betriebsystem betreffend, das eine Konfiguration abfragt
- ILT - Item Level Targeting, Zielgruppenadressierung auf Elementebene, innerhalb einer Richtlinie eine Filterung einer einzelnen Einstellung.
Die OU als Filter
Diese definiert den Verwaltungsbereich einer Richtlinie, den sogenannten Scope of Management (SOM). Jedes Objekt das die Richtlinie übernehmen soll, muss im Verwaltungsbereich der Richtlinien liegen. Es ist genau wie im Dateisystem. Soll eine Datei dieselben Berchtigungen anwenden, wie die, die auf D:\Daten definiert sind, dann muss die Datei in dem Ordner oder einem Ordner darunter liegen. In D:\Vertrieb können anderen Rechte definiert sein, eine Datei unterhalb von D:\Daten wird nicht von diesen Rechten betroffen sein. Wird eine Datei von D:\Daten nach D:\Vertrieb verlegt, dann sollten die Rechte geändert werden. Wenn man möchte, daß für D:\Daten und D:\Vertrieb dieselben Rechte gelten, dann müssen die Rechte 2mal, auf beiden Ordner gesetzt werden. Oder man definiert die Rechte schon auf D:\, einer "Treppenstufe" darüber.
Die OU ist als Filter eher eine grobe Zuordnung, da ein Objekt nur in einer OU liegen kann. Es gibt für übergreifende Regeln nur bedingt Möglichkeiten, diese Ausnahmen oder Sonderwünsche mit einer OU abzubilden. Diese Ausnahmen sind eher genereller Natur, also fast schon keine Ausnahmen mehr.
Die Sicherheitsgruppe als Filter
ACHTUNG! Patchday 14.06.2016 ACHTUNG!
Mit dem Sicherheitsupdate MS16-072 gibt es eine große Änderung im Übernahme Prozess. Der Computer an dem sich der Benutzer anmeldet benötigt mindestens LESE Rechte an der Richtlinie, die für den Benutzer gilt.
Wer sich durch das Beispiel klickt, wird keine Probleme kriegen, denn die "Authentiffizierten Benutzer" zu denen auch ein Computer gehört bleiben mit "Lesen" in der Delegation erhalten.
Sicherheitsfilterung neu erfunden - MS16-072 - Patchday 14.06.2016
MS16-072: Security update for Group Policy: June 14, 2016
Wenn das Objekt im Verwaltungsbereich der Richtlinie liegt, dann muss es das Recht "übernehmen" haben, um die Richtlinien auch anwenden zu dürfen. "Lesen" alleine reicht nicht aus. "Übernehmen" ist ein eigenes Recht, das es im AD genau für diesen Zeck gibt.
Ihr seht die Gruppen, die das Recht haben die Richtlinie zu übernehmen auf dem Reiter "Bereich" im mittleren Abschnitt "Sicherheitsfilterung". Ich empfehle euch einen kleinem Umweg über den Reiter "Delegation" dann unten rechts auf die Schaltfläche "Erweitert". Da wird es wesentlich deutlicher, was man tut und man kann an dieser Stelle im Gegensatz zum Reiter Bereich sogar mit "Verweigern" arbeiten, was ich aber sehr sparsam als Recht verwenden würde.
Ganz wichtig ist jetzt bei der Filterung, das die Reihenfolge der Richtlinien stimmt, wenn beide Richtlinien auf derselben Ebene definiert sind. Über die Schaltflächen kann diese Reihenfolge manipuliert werden und die Richtlinien können "von oben nach unten" sortiert werden. Das Konzept basiert auf LAST WRITER WINS. Der letzte, der den Wert schreibt bestimmt den Wert. Leider ist die GPMC dieser Regel in der Ansicht auf den ersten Blick nicht gefolgt. Der Entwickler hat es wie im Sport definiert: Wer auf Platz 1 (also ganz oben) steht gewinnt und diese Richtlinie bestimmt somit den Wert. Das bedeutet aber leider, das der "Letzte" in der gedachten Reihenfolge nich "unten" erscheint, sondern eben "oben".
Die Liste muss von unten nach oben betrachtet werden um die Ablaufreihenfolge zu sehen. Wie gesagt: Es ist wie im Sport.
Beispiel:
In meinem Beispiel geht es wie immer um den Bildschirmschoner. Dieser soll für alle gelten und nach 10 Minuten mit Kennwortschutz aktiviert sein. Es gibt aber in meinem Unternehmen immer wieder Situationen bei denen der Bildschirmschoner nicht angewendet werden darf oder er einfach nur stört: Produktionsmaschinen, Überwachungsmonitore, Leitsysteme, Präsentationsmaschinen, Wegweiser usw. Diese Anwender stecke ich in eine eigene Sicherheitsgruppe "BS_Ausnahme" und diese kriegen keinen Bildschirmschoner.
Lösung a)
Ich verweigere das "Übernehmen" für die Gruppe "BS_Ausnahme" auf der GPO "B_Bildschirmschoner 10 Minuten aktiv". Geht prima, aber Ich mag verweigern nicht ... man sieht es nicht in der Oberfläche und es setzt sich immer durch, was zu beides zu Folgefehlern führen kann.
Lösung b)
Ich arbeite mit 2 Richtlinien. Jeder bekommt einen Bildschirmschoner, aber ich schalte ihn nachträglich über die 2te Regel wieder aus, wenn ich Mitglied der Sicherheitsgruppe "BS_Ausnahme" bin. Das gefällt mir persönlich besser.
Todo:
- Erstelle und Verlinke die Richtlinie "B_Bildschirmschoner 10 Minuten aktiv"
- Erstelle und Verlinke die Richtlinie "AUSN-SEC-B_Bildschirmschoner aus" an derselben OU
- Auf der OU -> Reiter "Verknüpfte Gruppenrichtlinienobjekte" -> Sortiere die "AUSN-SEC-B_Bildschirmschoner aus" nach "oben" damit sie gewinnt
- Auf der GPO "AUSN-SEC-B_Bildschirmschoner aus" - Reiter "Delegation" -> Schaltfläche "Erweitert"
- Benutzergruppe "Authentifizierte Benutzer" auswählen -> Checkbox "Zulassen" bei "Übernehmen" entfernen
- Benutzergruppe "BS_Ausnahme" hinzufügen -> Checkbox "Zulassen" bei "Übernehmen" setzen
Im Bereich der Sicherheitsfilterung seht ihr jetzt nur noch die "BS_Ausnahme" und die "Authentifizierten Benutzer" stehen nicht mehr auf der Liste.
WMI als Filter
Wenn das Objekt im Verwaltungsbereich der Richtlinie liegt und es das Recht hat, die Richtlinien zu übernehmen, dann kann die Übernahme noch einmal aufgrund einer Hardwarevorraussetzung, Betriebsystemkondition oder jedes anderen beliebigen Werts, der über WMI zu finden ist gefiltert werden.
- Der Filter muss immer TRUE ergeben, wenn die Richtlinien übernommen werden soll, wenn es also ein bestimmter Wert explizit nicht sein darf, dann muss ich die Query entsprechend formulieren.
- Queries können mit "(" ")" ineinander verschachtelt werden und mit AND und/oder OR verknüpft sein.
- Mehrere Queries in demselben WMI Filter in der GPMC sind immer mit AND verknüpft, es gibt leider kein OR
Die größte Schwierigkeit ist nun: Wie ist die Syntax und wo kriege ich die Werte her
Die einfachste Antwort: Verwendet den WMICodeCreator von Microsoft. Uralt, aber gut.
WMI Code Creator v1.0
Todo:
- im WMICodeCreator: root\CIMv2 nehmen, Class auswählen, nach Properties suchen, den Value anklicken und die Zeile mit dem SELECT Befehl kopieren
- GPMC öffnen -> Knoten WMI Filter -> Neu: Neuer WMI mit Namen und Kommentar angeben
- Abfrage hinzufügen -> die SELECT Zeile einfügen
- Der WMI Filter steht nun auf jedem Richtlinien Objekt im Dropdown der WMI Filterung zur Verfügung
Ein paar klassische WMI Abfragen:
- Es ist ein Windows XP oder 2003
SELECT * FROM Win32_OperatingSystem WHERE BuildNumber < '4000'
- Es ist ein Windows Vista oder höher
SELECT * FROM Win32_OperatingSystem WHERE BuildNumber > '5000'
- Es ist eine Workstation (ProductType = 1), DomainController (=2) oder MemberServer (=3), OS unabhängig).
SELECT * FROM Win32_OperatingSystem WHERE ProductType = '1'
- 32 Bit oder 64 Bit adressieren:
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '32-Bit' SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '64-Bit'
- Die Kombination: Eine deutsche oder englische Windows 7 Workstation mit 64-Bit
SELECT * FROM Win32_OperatingSystem WHERE BuildNumber > '5000' AND ProductType = '1' AND OSArchitecture = '64-Bit' AND (CountryCode = '49' OR CountryCode = '01')
- Der Compuername beginnt mit "VPC-*"
SELECT * FROM Win32_ComputerSystem WHERE Name LIKE 'vpc-%'
- Es ist ein Deutsches Betriebsystem
SELECT * FROM Win32_OperatingSystem WHERE CountryCode = '49'
- Der Benutzer verwendet ein deutsches Tastaturlayout:
SELECT * FROM Win32_Keyboard WHERE Layout = '00000407'
- Es ist mindesten der IE8 installiert, egal ob auf Windows XP oder Windows 7
SELECT * FROM CIM_DataFile WHERE Filename = 'iexplore' AND version > '8.0' AND (path = '\\programme\\Internet Explorer\\' OR path = '\\program files\\Internet Explorer\\' )
- Das System hat eine Intel Netzwerkarte:
SELECT * FROM Win32_NetworkAdapter WHERE MACAddress LIKE '00:13:E8%'
ILT - Item Level Targeting - Zielgruppenadressierung auf Elementebene als Filter
Das ist eine neue Funktion, die nur innerhalb der Group Policy Preferences existiert und die Möglichkeit bietet innerhalb einer einzige Richtlinie PRO Eintrag einer Preference Filter über WMI und andere Techniken zu setzen. Die Client Side Extension der GPPs, kennt schon diverse Eckdaten des Systems und kann sie mit eigenen Variablen oder direkten Abfragen adressieren und abfragen.
Todo:
- Über den Reiter "Geimsam" -> Checkbox "Zielgruppenadressierung auf Elemetebene"
Hier können nicht nur einzelne Abfragen stattfinden, z.B.: nach der Sicherheitsgruppe, sondern es können mehrere Filter mit AND und OR kombiniert werden und mit "IST" und "IST NICHT" eingestellt werden, Zusätzlich gibt es noch die Möglichkeit eine Sammlung zu erstellen, Eine Sammlung bietet praktisch eine Klammer "("")" um die definierten Filter, die widerum in Summe auf "IST" und "IST NICHT" definiert werden kann. Einzelne Filter und Sammlungen können auch mit "AND" und "OR" kombiniert werden. Hier ist praktisch die Ausnahme in der Ausnahme mit einer Ausnahme möglich.