SRP
- Software
Restriction Policies
Verfasser Florian Frommherz
Kleine Anpassungen von Mark Heitbrink
Fast jeder IT-Administrator wird schon mal den Tag verflucht
haben, an dem Mitarbeitern der Zugriff auf das Internet gewährt wurde.
Oder spätestens den Tag, an dem der USB-Stick erfunden wurde. Wohl mit
genau diesen Tagen wird die Vorherrschaft der IT-Administration auf den
Rechnern in den Arbeitsplätzen beendet worden sein, denn Benutzer
bedienen sich der Möglichkeit, Software vom Internet oder vom
USB-Stick
von zu Hause auf den Arbeitsplatzrechner zu spielen; dass die
mitgebrachte oder im Internet besorgte Software nicht zwingend zur
Produktivität der Mitarbeiter beiträgt, leuchtet wird den meisten von
uns klar sein.
Wenn man Administrator eines Unternehmens ist, das nach
Microsoft Best-Practice arbeiten kann und den Mitarbeitern auf den
Arbeitsplatzmaschinen die lokalen Administratorrechte verwehrt, hat man
schon viel gewonnen: das Installieren der allermeisten Software aus dem
Internet oder das Kopieren von Daten in das Windows-Verzeichnis kann so
unterbunden werden. Zumindest lässt sich die Software nicht mehr
installieren, die Schreibzugriffe auf das Windowsverzeichnis und Teile
des HKEY_LOCAL_MACHINE-Registry-Hives
benötigt.
Natürlich kommt nicht immer nur "gute" Software auf die
Maschinen der Mitarbeiter, möglicherweise auch Trojaner, Viren und
andere Schadsoftware, die "versehentlich" mitgeschleppt und ausgeführt
wurde. Als Nicht-Administratoren haben diese Schädlinge nur eine
begrenzte Auswirkung für lokale Administratoren könnte das das
Ende
der Vertrauenswürdigkeit der betroffenen Maschine bedeuten!
Wie sichert man sich nun
gegen ungewollte Software auf Arbeitsplatzstationen ab?
Wie lässt sich vorgeben, was "gute" und somit erlaubte, und was "böse", somit unerwünschte Software ist?
Hilfe
bieten die Software Restriction
Policies/Softwareeinschränkungsrichtlinien.
Auf einer einfachen Basis
erklärt, ermöglichen Software Restriction Policies den
Administratoren
zu bestimmen, welche Software auf Arbeitsplatzstationen ausgeführt
werden darf und welche nicht. Beispielsweise kann das Ausführen von
VBS-Skriptdateien ganz verboten oder das Ausführen von ausführbaren
Programmen (.EXE-Dateien) von bestimmten Dateiservern vom Netzwerk aus
beschränkt werden.
Software Restriction Policies funktionieren nach einem
bestimmten Regelwerk. Prinzipiell gibt es erstmal zwei Standardregeln,
die je nach Philosophie des Administrators angewandt werden
können.
Unter
"Computer Configuration\Windows Settings\Security Settings\Software
Restriction Policies"
bzw. "User Configuration\Windows Settings\Security Settings\Software
Restriction Policies"
lässt sich, nach einem Rechtsklick eine neue Richtlinie erstellen.
Unter Sicherheitsstufen (Security Levels) wählt man das
Regelwerk seiner Wahl. "Nicht
erlaubt" (Disallowed) verbietet das
Ausführen von jeglicher Software, die nicht durch eine weitere Regel
als "erlaubt" gekennzeichnet wird, während "Nicht
eingeschränkt" (Unrestricted) das
Ausführen
jeglicher Software erlaubt; die nicht explizit ausgeschlossen wurde.

Welches
Standardregelwerk man letztlich wählt, hängt von der Umgebung
ab, in der die Arbeitsplatzcomputer stehen. In einem Netzwerk, das
hohen Sicherheitsanforderungen entsprechen muss, wird man eher zur
"Disallowed" ("nichts ist erlaubt ausser das, was ich explizit durch
andere Regeln freischalte") greifen, während man in anderen Umgebungen
jegliche Software "unrestricted" laufen lassen wird und nur
unerwünschte Programme (wie zum Beispiel Peer-to-Peer-Filesharing
Tools
oder ähnliches) zu unterbinden.
Wie bereits erwähnt, ist es mit dem Standardregelwerk noch
nicht getan. Natürlich möchte man nicht jegliche Software in einem
Netzwerk erlauben oder verbieten, man möchte auch Ausnahmen definieren
können. Um Ausnahmen beschreiben zu können, bieten die Software
Restriction Policies vier erweiterte Regeln an, mit denen Software
identifiziert und kategorisiert und das Verhalten auf
Arbeitsplatzrechnern gesteuert werden kann. Das System definiert vier
Standardregeln vor, die auf jeden Fall, um Windows vor Problemen zu
schützen. Wenn man sich diese Regeln ansieht, stellt man fest, dass
der
Zugriff auf wichtige Systempfade erlaubt bleibt.
Stellt man "aus Versehen" das System auf "Nicht erlaubt" ein, dann sind
zumindest die "normalen" Programme (unter
C:\Windows und C:\Programme) nicht davon betroffen.

Die für
Administratoren möglichen Regeln zu Definition von Ausnahmen
sind die folgenden:
Die Hashregel
Mit der Hash-Regel ist es möglich, Software anhand
eines
Hashes zu identifizieren. Ein Hashwert ist eine mathematische Funktion,
mit der die Einsen und Nullen eines Programmes zu einem eindeutigen
Wert umgerechnet werden. Als Administrator gibt man die ausführbare
Datei des Programmes an und erhält vom Gruppenrichtlinieneditor einen
Hashwert. Zusätzlich wird noch angegeben, ob das auf den Hashwert
zutreffende Programm ausgeführt werden darf oder nicht. Passt der im
GRE erstellte Hashwert eines Programmes auf einem Arbeitsplatzcomputer
laufenden Programm überein, wird entsprechend der erstellten
Richtlinie
gehandelt ("Disallowed" oder "Unrestricted").
Der Hash wird über die Datei selbst, ihre Version und ihr
Erstelldatum generiert. Ausserdem wird, durch Doppelpunkte getrennt,
nach dem Hashwert die Grösse der Datei in Bytes und die ID des
Algorithmus angegeben, mit dem der Hash der Datei erzeugt wurde. Mit
diesen Angaben ist eine Datei eindeutig identifizierbar. Was heisst das
nun?
Zum einen heisst das, dass ein Benutzer eine Datei beliebig
umbenennen und an einen anderen Ort im Dateisystem schieben kann, ohne
dass die Regel beeinträchtigt wird. Da der Pfad und der Dateiname
nicht
berücksichtigt werden, ist ein Verschieben oder Umbenennen zwecklos.
Dieses Verfahren heisst aber auch weiterhin, dass eine neuere Version
der Applikation (eingespielt durch ein Softwareupdate oder ein neues
Release des Programmes) unsere Hashregel unwirksam macht, da sich zum
einen die Version, das Erstelldatum und die Dateigrösse geändert hat.
Klassisch ist
auch das
Problem, dass Hashregeln, die mit Windows Server 2003 erzeugt wurden,
auf Windows XP nicht funktionieren. Grund
dafür ist, dass eine Applikation auf einem Windows Server 2003-System
einen anderen Hash erzeugt, als sie auf dem Windows XP Rechner
existiert. Das Gleiche gilt auch für Applikationen auf x86 und
x64-Maschinen. Und das, obwohl die Versionen gleich sind. Hierfür muss
man den leidigen Umweg gehen und mit der Group Policy Management
Console (GPMC) die Hashregel auf einem Zielsystem erstellen, damit die
Hashes auch wirklich übereinstimmen. Es ist sowieso ratsam, von den
Typen der Gruppenrichtlinien-Zielsysteme immer eine "Adminstation" zu
haben, um spezielle Richtlinien dort erstellen zu können und
betriebssystemspezifische, neue Features (siehe Windows-Firewall)
problemlos administrieren zu können.
Der HASH wird direkt gebildet, sobald eine Datei über
"Durchsuchen" ausgewählt wird.

Die
Zertifikatregel
Für die Zertifikatregel ist es erforderlich, dass ein
Herstellerzertifikat angegeben wird, gegen das beim Ausführen von
Programmen geprüft wird. Beispielsweise ist es möglich, alle
Applikationen von Microsoft einer bestimmten Regel zu unterziehen,
Applikationen von einem anderen Hersteller einer anderen. Es ist auch
möglich, seine eigenen Applikationen zu signieren und sich selbst als
"Vertrauenswürdigen Hersteller" anzugeben.

Die
Zonenregel
Zonenregeln können einschränken, welche Software über
Internet Explorer Zonen heruntergeladen werden können. Internet
Explorer kategorisiert Webseiten und Netzwerkpfade anhand von Zonen.
Mögliche Zonen sind
"Internet", "Intranet", "Eingeschränkte Sites", "Vertraute Sites" und
"Arbeitsplatz".
Leider ist die Zonenregel nicht wirklich hilfreich bei Einschränkungen
für Softwareausführungen, da sie nur auf MSI-Pakete gilt.
Es ist zwar möglich, das Herunterladen von MSI-Paketen vom
Internet
oder eingeschränkten Sites zu verbieten, es ist aber nicht möglich,
das
Herunterladen von von .EXE oder anderen Dateien leider nicht.

Die
Pfadregel
Die wohl in der Praxis am meisten benutzte Regel für
Softwareeinschränkungen. Hier kann man als Administrator Pfade zum
Dateisystem angeben, die einer bestimmten Regel unterzogen werden
sollen. Auch möglich ist das Verwenden von Jokerzeichen wie dem Stern
(*) für beliebig viele oder das Fragezeichen (?) für einzelne Zeichen
möglich.
Hier einige valide Pfadbeispiele:
C:\Programme\meineApplikation\*.doc
diese Pfadangabe wird alle DOC-Dateien im
angegebenen
Ordner treffen.
\\FileServer0??\meinShare\Dateien
dieser Pfad wird alle Dokumente und Dateien auf den Maschinen
"Fileserver000" bis "Fileserver099" im Ordner "Dateien" treffen (aber
auch "Fileserver0a3" oder "Fileserver08D" wären möglich). Für die
Fragezeichen kann jeweils ein beliebiges Zeichen eingesetzt werden.
C:\temp\evil.*
dieser Pfad wird alle Dateien im Ordner "Temp" treffen, die
den Namen "evil" tragen. Hierbei sorgt der Stern dafür, dass die
Dateiendung egal ist.
Selbst Umgebungsvariablen können für die Pfadregeln
verwendet
werden:
%WINDIR%\system32\*.vbs
alle Dateien mit der Dateieindung VBS im Ordner "%WINDIR%\system32
werden hier behandelt. %WINDIR% ist in sofern interessant, als dass
Windows in verschiedennamigen Ordnern installiert worden sein kann
("Windows", "WINNT", ...). Auch %HOMEDRIVE%, %HOMEPATH% oder
%PROGRAMFILES%, sowie %TEMP% funktionieren einwandfrei.

Bei der Verwendung
von Pfadregeln sollte auf die Verarbeitung der
Pfadregeln geachtet werden. Es könnte doch sein, dass mehrere
Pfadregeln auf eine bestimmte ausführbare Datei zutreffen. Welche wird
dann angewandt?
Es gilt: die am spezifischsten formulierteste Regel
gewinnt. Je genauer die Regel also
formuliert ist, desto sicherer ist ihre Anwendung. Trifft keine Regel
auf einen Pfad zu, wird natürlich unser Standardregelwerk ("Alles
erlauben" <-> "Alles verbieten") angewendet.
Die
Reihenfolge der Genauigkeit
kann hier eingesehen werden:
C:\Ordner\Ordner2\meineDatei.ext
C:\Ordner\Ordner2\*.ext
C:\Ordner\Ordner2\filename.*
*.ext
C:\Ordner\Ordner2\
Abarbeitung
Natürlich ist es möglich, mehrere unterschiedliche Richtlinien für
ein
spezielles Problem oder einen bestimmten Pfad zu erstellen. Die
Abarbeitung der Richtlinien ist wiederum von der Genauigkeit der
Richtlinie abhängig:
Hashregeln
Zertifikatregeln
Pfadregeln
Zonenregeln
Sobald eine
Regel exakt passt, wird sie angewendet, egal was danach kommt. Sollte
also eine Hashregel exakt auf ein Programm passen, wird sie angewendet
und die anderen Richtlinien gar nicht mehr beachtet. Trifft keine
Hashregel auf die aufgerufene Applikation zu, werden die
Zertifikatsregeln durchsucht. Die Reihenfolge wird eingehalten bis zum
Schluss, falls keine definierte Regel zutrifft, das Standardregelwerk
greift.
Die Anwendung der
Softwareeinschränkungsrichtlinien
Die Verarbeitung von Software Restriction Policy-Richtlinien wird über
eine eigene Client Side Extension (CSE) abgewickelt, sie können in
einem Windows 2000 Active Directory eingesetzt werden, wenn eine XP
Maschine zur Konfiguration der Gruppenrichtlinien dient, aber sie
werden nur auf Maschinen übernommen, auf denen XP, 2003 oder Vistas,
bzw. 2008 installiert ist. Auf einem 2000 Client werden die
Einstelllungen ignoriert.
"How Software Restriction
Policies Work"
http://technet2.microsoft.com/windowsserver/en/library/d24bc8c8-27cc-47ba-9b02-78d9d801e9371033.mspx?mfr=true
"Using Software Restriction
Policies to Protect Against Unauthorized Software"
http://technet.microsoft.com/en-us/library/bb457006.aspx"
Das Verhalten von SRPs nach dem Anwenden sorgt ab und an für
Konfusion,
da das Verbieten oder Erlauben von Applikationen nicht von Windows
selbst sondern von der Shell abhängt.
Wir sitzen an einer Windows XP Maschine. Wir haben einige
Möglichkeiten, eine Applikation zu starten. Wenn wir Windows Solitär
starten möchten können wir das über
Start->Programme->Zubehör->Spiele->Solitär
tun. Wir haben auch die Möglichkeit, über Start->Ausführen
und
"sol.exe" zu starten. In beiden Fällen benutzen wir die Windows Shell
(explorer.exe), um das Spiel zu starten. Explorer.exe wird also für
sol.exe starten und für uns bereit stellen. In der Windows XP SRP CSE
gibt es keine Routine, die die Windows Shell dazu zwingt, sich die
neuesten Einschränkungen einzulesen anstelle eines dynamischen
einlesens werden die Neuigkeiten der SRP in die Registry geschrieben
und die Shell liest sie beim Start aus. Wenn wir also an unserem
Windows XP-Rechner eingeloggt sind und über "gpupdate /force" eine
neue
Richtlinie anwenden, die sol.exe verbietet, wird etwas merkwürdiges
passieren:
Obwohl die Richtlinie angewendet worden ist und das Verbot
von sol.exe in der Registry steht, sind wir in der Lage, sowohl über
Start->Ausführen als auch über
Start->Programme->... Solitär zu starten! Das kommt
daher, dass die Explorer.exe beim unserem Login geladen wurde und von
der SRP zum Verbot von sol.exe nichts mitbekommen hat. Wie soll sie
auch, sie prüft ja nur einmal beim Start. Versuchen wir die CMD zu
öffnen und von dort aus sol.exe zu starten, werden wir eine
Fehlermeldung erhalten. Klar, wir haben die CMD geöffnet und sie hat
beim Start in der Registry das Verbot von sol.exe wahrgenommen. Loggen
wir uns aus und wieder ein oder starten wir den Rechner neu, wird alles
so sein, wie wir es uns erhofft haben: die Explorer.exe hat nun, nach
dem Logout/login oder dem Neustart das Verbot von sol.exe mitbekommen
und wird Solitär, genau so wie es CMD zuvor tat, verbieten.
Dieses Verhalten ist nur in Windows XP einschliesslich
Service
Pack 2 gegeben Windows Server 2003 verhält sich anders. Hier wird
die
Shell darüber informiert, dass es neue Einschränkungen gibt und die
Ausführung von Applikationen wird gemäss der Richtlinien, ohne
Neustart
oder Logoff/Login, ausgeführt.
(c) 2003 - heute, Mark
Heitbrink, weitere Informationen unter WebSite-Info\Copyright