All posts tagged RemoteSigned

Hallo zusammen,

das wichtigste zuerst, wenn man sich nun intensiver mit PowerShell beschäftigen möchte, muss man seine Umgebung anpassen, um lokal Skripte ausführen zu können/dürfen.

Dazu dient das cmdlet „Set-ExecutionPolicy

Es gibt 5 verschieden Policy Einstellungen

Restricted = Die Powershell führt keine Skripte aus. Das ist der Defaulwert für die Powershell.
AllSigned = Die Powershell startet nur Skripte, die eine digitale Signatur haben.
RemoteSigned = Die Powershell wird keine Skripte ausführen, die aus dem Internet stammen – außer sie haben eine digitale Signatur.
Unrestricted = Die Powershell ignoriert die digitalen  Signatur, fragt aber nach, ob ein Skript, das aus dem Internet stammt, ausgeführt werden soll.
Bypass = Alle Skripte werden ohne Nachfrage ausgeführt (Sehr unsicher)

Undefined = Setzt den Defaultwert auf Restricted, sobald Gruppenrichtlinien im Einsatz sind, hat dieser Schalter keine Auswirkung.

Wenn man nun lokal Skripte ausführen möchte, setzt man dementsprechend seine ExecutionPolicy

Sobald man aber in einen Firmenumfeld Powershell Skripte einsetzen möchte, sollte man seine fertigen Skripte mit einem Zertifikat signieren. Ob das Sinnvoll ist oder nicht, muss natürlich jeder für sich selbst entscheiden. Es gibt natürlich auch hier Mittel und Wege das ganze auszuhebeln, aber für unerfahrene Mitstreiter eine kleine Lebensaufgabe.

Hier die Vorbereitung um Firmenweit seine Powershellskripte zu signieren:
Als erstes erstelle ich eine neue Gruppenrichtlinien für die Domain, diese Gruppenrichtlinie verknüpfe ich mit der Domain.

Computerkonfiguration –> Richtlinien –> Administrative Vorlagen –> Windows-Komponenten –> Windows Powershell –> Skriptausführung aktivieren (Nur signierte Skripte zulassen)

GPO

 

 

 

 

 

GPO_Shortcut

 

 

 

 

 

Wenn man nun mit gpupdate /force die Gruppenrichtlinien aktualisiert, bekommt man beim Öffnen von PowerShell eine Fehlermeldung. (Bei mir war bereits eine PowerShell Profildatei hinterlegt)

PowershellError

 

 

 

 

 

Danach erstelle ich mir in Active Directory eine neue Rollengruppe und füge alle Mitglieder hinzu, die PowerShellSkripte signieren dürfen.

Rollengruppe

 

 

 

 

 

Jetzt öffne ich meine AD Zertifizierungsstelle und lege eine neue Zertifikatsvorlage an. Diese Zertifikatsvorlage Veröffentliche ich im Anschluss.

Zertifikatsvorlage1

 

 

 

 

 

Zertifikatsvorlage2

 

 

 

 

 

Zertifikatsvorlage3

 

 

 

 

 

Alle Benutzer die berechtigt sind, Skripte zu signieren. Öffnen nun eine neue MMC Konsole und fügen sich das SnapIn Zertifikate/Eigenes Benutzerkonto hinzu.

Unter Eigene Zertifikate –> Zertifikate –> Neu Aufgaben –> Neues Zertifikat anfordern, fordern nun die Benutzer ein Codesigning Zertifikat an.

Zertifikat_anfordern1

 

 

 

 

 

Zertifikat_anfordern2

 

 

 

 

 

Und mit folgenden beiden Befehlen kann man seine Skripte signieren

Script_Signieren

 

 

 

 

 

Powershell_ohne_Error

 

 

 

 

 

Sobald die Gruppenrichtlinie AllSigned gesetzt wurde, kann man diese nicht mehr !vorübergehen! außer Kraft setzen.

keine_aenderung_moeglich

 

 

 

 

 

Viel Spaß und bis die Tage
Helmut