Skriptsicherheit

 

Gilt für: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Letztes Änderungsdatum des Themas: 2007-02-12

In diesem Thema wird erläutert, wie Skriptsicherheit in der Exchange-Verwaltungsshell dazu beitragen kann, dass verhindert wird, dass schädliche oder auf andere Weise unerwünschte Skripts in Ihrer Organisation ausgeführt werden. Außerdem wird beschrieben, welche Optionen verfügbar sind, um die Skriptsicherheit so zu ändern, dass die Anforderungen Ihrer Organisation erfüllt werden.

Skripts stammen normalerweise aus drei Quellen: von Ihnen, von einer anderen Person in Ihrer Organisation oder von Skripterstellern außerhalb Ihrer Organisation, z. B. aus dem Internet. Wenn Sie ein Skript schreiben, gehen Sie davon aus, dass das Skript die Aufgaben erledigt, für die es konzipiert wurde. Wenn Sie das Skript mit anderen Administratoren in Ihrer Organisation gemeinsam verwenden, ist das Skript für diese Personen ebenfalls vertrauenswürdig – aber nur, weil sie Ihnen vertrauen.

Wenn Skripts aus anderen Quellen stammen, z. B. aus dem Internet, ist die Skriptsicherheit fraglich. Die einzige Methode, Skripts zu vertrauen, die aus Quellen außerhalb Ihrer Organisation stammen, besteht im direkten Untersuchen des Skriptcodes und im Testen des Skripts in einer isolierten Testumgebung. Dieser Vorgang kann zeitaufwendig und mühsam sein. Es ist jedoch ein empfohlenes Verfahren, um die versehentlich Ausführung von böswilligem oder zerstörerischem Code zu verhindern.

Die Exchange-Verwaltungsshell unterstützt die empfohlene Verwendung digitaler Signaturen zum Sicherstellen, dass ein Skript nach seiner Erstellung nicht verändert wurde. Weitere Informationen zu digitalen Signaturen finden Sie im Abschnitt "Grundlagen der Codesignierung" weiter unten in diesem Thema

Skriptausführungsmodi

Vier Modi der Skriptausführung kann die Exchange-Verwaltungsshell abhängig von der Art ihrer Signierung und ihrer Herkunft aus bekannten oder unbekannten Quellen steuern. In der folgenden Tabelle werden diese Skriptausführungsmodi beschrieben.

Skriptausführungsmodi

Modus Beschreibung

Restricted-Modus

Es werden selbst dann keine Skripts ausgeführt, wenn sie von einem vertrauenswürdigen Verleger signiert sind.

AllSigned-Modus

Alle Skripts müssen von einem vertrauenswürdigen Verleger signiert worden sein, bevor sie ausgeführt werden können.

RemoteSigned-Modus

Alle Skripts, die lokal erstellt werden, können ausgeführt werden. Skripts, die von nicht vertrauenswürdigen Remotespeicherorten wie z. B. dem Internet heruntergeladen werden, werden nicht ausgeführt. Dies ist der Standardmodus für die Skriptausführung.

Unrestricted-Modus

Alle Skripts werden unabhängig von einer digitalen Signatur und ihrer Vertrauenswürdigkeit ausgeführt. Der Unrestricted-Modus wird nur empfohlen, wenn Sie das Skript in einer kontrollierten Testumgebung ausführen, die keine Produktionsumgebung ist.

Zum Ändern des Skriptausführungsmodus aus dem standardmäßigen RemoteSigned-Skriptausführungsmodus verwenden Sie das Cmdlet Set-ExecutionPolicy in der Exchange-Verwaltungsshell. Führen Sie beispielsweise den folgenden Befehl aus, um die Ausführungsrichtlinie in den AllSigned-Modus zu ändern:

Set-ExecutionPolicy AllSigned

Die Exchange-Verwaltungsshell erkennt die Änderung der Richtlinie sofort.

Große Organisationen, die einen einheitlichen Skriptausführungsmodus für alle Computer festlegen möchten, auf denen die Exchange-Verwaltungsshell ausgeführt wird, sollten die Einstellung für den Skriptausführungsmodus mithilfe einer Active Directory-Gruppenrichtlinie festlegen. Die Active Directory-Gruppenrichtlinie wird zum Festlegen des ExecutionPolicy-Werts, der sich unter dem HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell-Registrierungsschlüssel befindet, auf den gewünschten Skriptausführungsmodus konfiguriert.

CautionAchtung:
UNRESOLVED_TOKEN_VAL(exRegistry)

Grundlagen der Codesignierung

Digitale Signaturen werden mithilfe eines Signaturalgorithmus mit öffentlichen Schlüsseln erstellt, der zwei verschiedene kryptografische Schlüssel verwendet, die als Schlüsselpaar bezeichnet werden: der öffentliche und der private Schlüssel. Der private Schlüssel ist nur seinem Besitzer bekannt, der öffentliche Schlüssel ist für jedermann verfügbar. In digitalen Signaturen generiert der private Schlüssel die Signatur, und der entsprechende öffentliche Schlüssel überprüft die Signatur.

Ein Zertifikat ist ein digitales Dokument, das im Allgemeinen für die Authentifizierung sowie zum Sichern von Informationen in offenen Netzwerken verwendet wird. Ein Zertifikate bindet einen öffentlichen Schlüssel sicher an die Entität, die den entsprechenden privaten Schlüssel besitzt. Zertifikate werden von der ausstellenden Zertifizierungsstelle digital signiert. Mithilfe eines codesignierenden Zertifikats fügt der Autor eines Skripts der Skriptdatei eine digitale Signatur hinzu. Währen dieses Vorgangs wird ein unidirektionaler Hash des Skript erstellt und mithilfe des privaten Schlüssels verschlüsselt. Der verschlüsselte Hash ist eine digitale Signaturzeichenfolge, die der Skriptdatei hinzugefügt wird. Diese digitale Signaturzeichenfolge wird auskommentiert, damit sie die Skriptfunktion nicht beeinträchtigt.

Wenn dieses Skript in einer Exchange-Verwaltungsshellumgebung ausgeführt wird, in der Codesignierung erforderlich ist, wird ein neuer unidirektionaler Hash der Skriptdatei erstellt. Dieser unidirektionale Hash wird mit dem verschlüsselten Hash verglichen, der in der Skriptdatei enthalten ist, nachdem diese mithilfe des öffentlichen Schlüssels entschlüsselt wurde. Wenn das Skript nach seiner Signierung nicht verändert wurde, stimmen die Hashes überein. Der Computer versucht dann, zu bestätigen, dass die Signatur von einem vertrauenswürdigen Verleger stammt, indem eine Zertifikatkette zu einer vertrauenswürdigen Zertifizierungsstelle erstellt wird. Wenn die Vertrauensstellung bestätigt wird, wird das Skript ausgeführt.

Ob ein Skript aus einer vertrauenswürdigen Quelle stammt, hängt vom Ursprung des codesignierenden Zertifikats ab, das zum digitalen Signieren des Skripts verwendet wurde. Im Allgemeinen sind zwei Arten von Zertifikaten verfügbar:

  • Zertifikate, die von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt werden.   Die Zertifizierungsstelle überprüft die Identität des Anforderers, bevor sie ein codesignierendes Zertifikat ausstellt. Die ausstellende Zertifizierungsstelle kann extern, ein öffentlicher Drittanbieter, der Zertifikate verkauft, oder eine interne Zertifizierungsstelle sein, die von Ihrer Organisation gehostet wird. Wenn Sie ein Skript mithilfe dieser Art von Zertifikat signieren, können Sie das Skript mit anderen Benutzern auf anderen Computern gemeinsam verwenden, die die Zertifizierungsstelle, die das Zertifikat ausgestellt hat, kennen und ihr vertrauen.

  • Selbstsignierte Zertifikate.   Für diese Art von Zertifikat ist Ihr Computer die Zertifizierungsstelle, die das Zertifikat erstellt. Der Vorteil eines selbstsignierten Zertifikats besteht darin, dass Sie Skripts auf Ihrem Computer schreiben, signieren und ausführen können. Sie können das Skript jedoch nicht für die Ausführung auf anderen Computern freigeben, weil diese Ihren Computer nicht als vertrauenswürdige Zertifizierungsstelle anerkennen. Wenn sie Ihrem Computer nicht vertrauen, können sie Ihre selbstsignierte Signatur nicht überprüfen, und das Skript wird nicht ausgeführt.

Cmdlets zum Verwalten der Codesignierung

Die Exchange-Verwaltungsshell enthält zwei Cmdlets zum Verwalten der Codesignierung. Das Cmdlet Set-AuthenticodeSignature wird zum Hinzufügen digitaler Signaturen zu Skriptdateien verwendet. Das Cmdlet Set-AuthenticodeSignature nimmt den Namen der zu signierenden Datei als ersten Positionsparameter an. Wenn sich die Datei nicht im aktuellen Arbeitsverzeichnis befindet, müssen Sie den Pfad der Datei angeben. Der zweite Eingabeparameter für dieses Cmdlet ist das Zertifikat, das zum Signieren verwendet wird. Dieses Zertifikat ist im lokalen Zertifikatspeicher gespeichert. Sie müssen diesen Parameter in Form einer Zeichenfolge zur Verfügung stellen, die auf ein Zertifikat verweist. Auf das Zertifikat kann über das Laufwerk Cert: zugegriffen werden.

Das zweite Cmdlet zum Verwalten der Codesignierung ist das Cmdlet Get-AuthenticodeSignature. Verwenden Sie das Cmdlet Get-AuthenticodeSignature zum Überprüfen und Bestätigen des aktuellen Codesignierungsstatus für die Datei, die als Parametereingabe zur Verfügung gestellt wird. Wenn bei der Verwendung eines codesignierten Skripts ein Problem auftritt, stellt die Ausgabe des Cmdlets Get-AuthenticodeSignature nützliche Problembehandlungsinformationen zur Verfügung.

Wenn Sie Skripts von externen Quellen, z. B. von Microsoft ausführen möchten, müssen Sie die Skripts gemäß den Skriptausführungsmodi Ihrer Umgebung anpassen. Sie können Skripts als .txt-Basisdateien empfangen, diese in .ps1-Skriptdateien umbenennen und dann – nachdem die erforderliche Signierung angewendet wurde – so ausführen, als hätten Sie das Skript selbst geschrieben.

Führen Sie den folgenden Befehl in der Exchange-Verwaltungsshell aus, um weitere Informationen zum digitalen Signieren und zu Skriptausführungsrichtlinien zu erhalten: Get-Help About_Signing. Dieser Befehl gibt Hilfeinformationen zurück, z. B. ausführliche Anweisungen zum digitalen Signieren von Skripts.