Zentrale Vergabe lokaler Berechtigungen

Autor: Mark Heitbrink - vom 15.01.2013 - Kategorie(n): Anleitungen Erste Schritte Topartikel

Lokale Administratoren braucht macht man nicht 

Noch immer gibt es Programme, die nicht als Benutzer ausgeführt werden können, da dem Benutzer im System Schreibrechte fehlen. Eine Lösung unter XP war nun diese Benutzer zu Hauptbenutzer zu machen oder gleich zu Administratoren. Ein Win7 konformes Programm wird nach einer UAC Elevation fragen und der Benutzer muss nun ein Konto mit Kennwort kennen, das berechtigt ist, die Anhebung der Rechte auszuführen. Wenn der Benutzer so ein Konto kennt, was hindert ihn dann daran sich selbst zum Administrator zu machen?
 

 
Es gibt neben der echten administrativen Tätigkeit nur 2 Gründe einen Benutzer zum lokalen Administrator zu machen

  • Der Benutzer ist Softwareentwickler
  • Die Software benötigt direkten Hardwarezugriff

 
Alle anderen Programme, kann man dazu bringen als Benutzer ausgeführt zu werden. Die lösung muss also sein, den Benutzer mit den notwendigen Rechte auszustatten, ohne gleich großzügig mit der Giesskanne Rechte auszuschütten. 99% aller Fehlerquellen sind ohne große Suche schnell gefunden. Sie liegen logischerweise in den Pfaden der Installation des Programmes:
 

  • C:\Programme\NameHersteller\NameAnwendung
  • HKLM\Software\NameHersteller\NameAnwendung 

 
Wenn ein Programm nicht als Benutzer ausgeführt werden kann, dann scheitert es in den meisten Fällen an fehlenden Schreibrechten im Programmordner der Anwendung. Das Programm möchte eine Konfigurationsdatei schreiben, eine Tempdatei anlegen oder Daten allgemein dort ablegen. Sobald ich also den Benutzern "Ändern" gewähre in dem Ordner kann das Programm ausgeführt werden. Kaum vergeben wir hier Schreibrechte, schon gehts. Es gibt jetzt noch ein paar Exoten, die immer noch *.ini Dateien im %systemroot% ablegen aber die kann man zur Not mit einem Process Monitor finden. Per Hand ist die Lösung also eigentlich schnell über den Explorer oder Regedit erledigt. Jetzt muss es nur noch zentralisiert werden.
 

Die Lösung der Gruppenrichtlinien findet ihr in der Computerkonfiguration. Es muss pro Computer definiert werden, weil das Konzept von Microsoft dem Benutzer ja keine Rechte "mitgibt", wenn er etwas ausführen möchte, sondern das Ziel entscheidet aufgrund einer lokal definierten Berechtigungsliste, welche Aktion ein Objekt aufgrund seiner SIDs ausführen darf. Die Entscheidung, findet immer auf der Ressource statt. Der Benutzer hat einen "Rucksack" an SIDs die in seinem Access Token anthalten sind und die zeigt er beim Zugriff.

 
Computerkonfiguration \ Richtlinien \ Windows-Einstellungen \ Sicherheitseinstellungen

 
Die wichtigsten Punkte sind:

  • Eingeschränkte Gruppen  (Definition der Lokalen Administratoren)
  • Systemdienste
  • Registrierung
  • Dateisystem



 
Jedes GP Objekt verfügt über eine Version. Das System erkennt anhand dieser, ob es diese Richtlinie schon verarbeitet hat. Mit jeder Änderung an der GPO erhöht sich die Version. Eine bekannte Version der Richtlinie muss das System nicht erneut verarbeiten, es ist ja schon gemacht wurden. Das System übernimmt also nur neuere Versionen.


Sonderfall Sicherheitsrichtlinien: Da Sicherheitseinstellungen sicherheitsrelevant sind, wird obwohl es zu keiner Änderung in der Version gekommen ist, die Einstellung spätestens nach 16 Stunden erneut verarbeitet, unabhängig von der Versionierung. Es ist ein minimaler Schutz vor Manipulation der Einstellungen.
 

 

Dateisystem

Hier können wie gewohnt lokale Dateisystemrechte definiert werden. Der Pfad kann entweder an dem System an dem ich die GPO editiere über die GUI gesucht werden, oder der Pfad wird per Hand eingetippt. "C:\Programme" wird automatisch in die Variable aufgelöst, sodass sie in jeder Sprache funktioniert. Aufpassen muss man jetzt nur in den Architekturen, denn ein Programm unter Windows XP liegt in "%programfiles%\NameAnwendung" in Windows 7 wird dieser sicherlich in "%programfiles (x86)" geändert werden müssen.

Neben dem Erlauben und Erweitern von Rechten kann man auch über diesen Weg Programme für einen Benutzer genauso gut von der Ausführung ausschliessen. Terminal/RemoteDesktopServer sind hier ein beliebtes Ziel oder auch die Klassiker, wie sol.exe, ob das nun Sinn macht oder nicht.

Beim Thema "Ersetzen" von Dateisystemrechten müsst ihr nun vorsichtig sein, denn die Sicherheitseinstellungen werden wie im Sonderfall genannt alle 16 Stunden angewendet und wenn in dem Verzeichnis 1.000.000 1kb GIF Dateien liegen, dann habt ihr ne wunderschöne neue Power LED (die HDD Lampe) bei jedem Start am Morgen ...



(klick-vergrößern)
 

Registry

 

Gleiches Spiel wie im Dateisystem. Entweder kann man den Pfad über die GUI auswählen, oder man gibt ihn per Hand ein. Theoretisch reicht es in den meisten Fällen in den Erweiterten Rechten nur das Recht "Wert ändern" zu vergeben, aber dafür muss man jetzt x-fach klicken und "Vollzugriff" in der Registry sehe ich nicht so kritisch wie im Dateisystem. Der Anwender wird mir dort im Gegensatz zum Dateisystem dort kaum sinnlose Daten hinterlegen.
 

Systemdienste

Hier befindet sich nicht nur die Definition, welche Dienste Automatisch oder Manuell starten, bzw. Deaktiviert sind, sondern hier können auch Rechte an einem Dienst geändert werden.
Ihr möchtest verhindern, daß ein LOKALER Administrator die "Windows Updates" beendet? Dann gebt den "Administratoren" nur noch "Lesen" an dem  Dienst und fügt stattdessen die "Domänen Administratoren" oder eure "Level 1 Supporter" mit Vollzugriff hinzu. Jetzt muss der Lokale Administrator schon in einer der Gruppen sein, um den Dienst zu beenden ... natürlich kann er sich das Recht immer wieder geben, er ist ja Administrator, aber er muss wissen wie das geht. Besitzübernahme im Dateisystem kann jeder, Besitzübernahme an einem Dienst ist schon sehr gutes Fachwissen.
Eiin Klassiker in den Diensten ist sicherlich die Druckwarteschlange. Die muss öfter mal neugestartet werden und ihr habt in einem Aussenbüro einen Server stehen, aber keinen "echten" Administrator. Der Kollege von dort ruft jetzt 2mal die Woche an, weil der Spooler neugestartet werden muss. Das kann der doch selber ;-)
Ihr könnt ihm, bzw. einer Gruppe das Recht geben "Starten, anhalten und unterbrechen". In Kombination mit der "sc.exe" könnt ihr ihm einen Shortcut auf seinem Desktop erstellen und er kann das a nun selber, ohne gleich eine komplette RDP Session (RemoteFX seit 2012) zu öffnen und ihm womöglich eine Adminkennung zu geben.
Leider tauchen in der GUI nur Dienste auf, die auf dem System installiert sind, auf dem ihr Arbeitet. Weitere Dienste lassen sich nicht hinzufügen. Da muss man etwas tricksen:
Siehe: Offline Sicherheitsrichtlinien editieren - Erstellen einer eigenen Sicherheitsvorlage



(klick-vergrößern)
 

Eingeschränkte Gruppen

Vorweg: Wesentlich besser und einfacher mit den Group Policy Preferences Lokale Benutzer und Gruppen zu verwalten.
Siehe: Verwaltung der lokalen Administratoren
 

Der Name ist auch in englisch mit "Restricted Groups" nicht so ganz eindeutig. Wieso geht es um Einschränkung, wenn ich jemanden zum lokalen Administrator machen möchte? Microsoft denkt andersherum. Sie gehen davon aus, das man damit die Anzahl der Administratoren reduziert und sie wieder zu "Eingeschränkten Benutzern" macht. Schade. Ein einfacher Name hätte für weniger Konfusion gesorgt. Es geht also um die Manipulation der lokalen Gruppen. Diese Technik kann ich "Ersetzend" oder "Zusammenführend" einsetzen. Ich kann also entweder alle per Hand definierten Einträge mit meiner GPO überschreiben und bereinigen, oder nur welche zusätzlich hinzufügen, damit ich weiterhin die Chance habe per Hand welche zu definieren.
Die GUI zur Konfiguration ist irreführend und nicht ganz eindeutig, der verständlichere Weg geht über eine Tabelle:
 

GruppennameMitglieder Mitglied von
Modus
Administratoren Domänen-Admins Ersetzend
Co-Admins Administratoren
Zusammenführend
Hautpbenutzer   alles entfernen

 
Ersetzend:
Ich wähle zuerst den Namen der Lokalen Gruppe aus und definiere "oben" die "Mitglieder dieser Gruppe"
 
Zusammenführend:
Ich wähle zuerst die Gruppe aus, die ich integrieren möchte und füge sie "unten" als "Diese Gruppe ist Mitglied von" hinzu
 
Alle Einträge entfernen:
Ich wähle den lokalen Gruppennamen und mache keinerlei Einträge.

Das Konstrukt funktioniert sogar in einer einzige Richtlinie.

  • Ihr räumt auf und werft alle Benutzer aus der Gruppe raus. (Administratoren, Mitglieder = Domänen-Admins). Keine Panik: der Administrator mit der RID -500 wird immer Administrator sein.
  • Ihr fügt eure Level1-Supporter hinzu (Co-Admins, Mitglied von Administratoren)
  • Ihr entfernt alle Hauptbenutzer (leere Definition)



(klick-vergrößern)