Die PowerShell ist ein mächtiges Werkzeug, mit der Microsoft-Netzwerke und auch Clouddienste umfassend gesteuert werden können. Auch andere Anbieter haben APIs für die PowerShell, sodass eine Absicherung der Zugriffe sehr sinnvoll ist.
In diesem Video-Tipp zeigen wir, wie man die Sicherheit der PowerShell durch Skriptüberwachung, ConstrainedLanguage-Modus und andere Methoden weiter verbessern kann.
(Bild: putilov_denis - stock.adobe.com)
Die PowerShell ist ein mächtiges Werkzeug, wenn es um die Verwaltung von Microsoft-Netzwerken geht. Neben lokal betriebenen Servern, lassen sich auch Clouddienste mit der PowerShell verwalten. Immer mehr Drittanbieter stellen APIs bereit sowie PowerShell-Module, mit denen weitere Dienste verwaltet werden können. Microsoft hat in der PowerShell viele Sicherheitsfeatures integriert, die wir bereits in verschiedenen Beiträgen thematisiert haben. Um die Sicherheit für und mit der PowerShell in Microsoft-Netzwerken zu optimieren, sollte sich daher unbedingt auch die Tipps und Anleitungen in diesen Beiträgen näher anschauen:
Im folgenden Text zeigen wir weitere Möglichkeiten, wie die PowerShell möglichst sicher betrieben werden kann.
Effektivere Überwachung der PowerShell: Skriptblöcke und Skriptausführung
Eine wichtige Basis für den sicheren Betrieb der PowerShell ist die Überwachung der Aktionen, die Admins in der PowerShell durchführen. Wir haben bereits im Beitrag „Cyber-Attacken via PowerShell verhindern“ beschrieben, wie sich die Überwachung generell aktivieren lässt. Die PowerShell bietet dazu aber noch mehr.
Die Richtlinien-Einstellung „Protokollierung von PowerShell-Skriptblöcken aktivieren“ im Pfad „Computerkonfiguration\ Richtlinien\ Administrative Vorlagen\Windows-Komponenten\ Windows PowerShell“ stellt sicher, dass auf dem Computer nicht nur interaktive Befehle aus der PowerShell heraus überwacht werden, sondern auch Skriptblöcke, Funktionen und ganze Skripte, die automatisiert starten. Die Daten sind im Anschluss in der Ereignisanzeige zu finden und lassen sich umfassend analysieren. Hier ist es parallel natürlich sinnvoll auf Überwachungslösungen zu setzen, mit denen sich die Ereignisanzeigen von Windows-Servern umfassend analysieren lassen.
Wie man die Sicherheit der PowerShell durch Skriptüberwachung, ConstrainedLanguage-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.
Neben diesen Möglichkeiten kann über die Richtlinien-Einstellung „Skriptausführung aktivieren“ direkt über Gruppenrichtlinien die Ausführungsrichtlinie für Skripte in der PowerShell konfiguriert werden. Das geht zwar auch in der PowerShell, ist mit Gruppenrichtlinien aber sicherer. Mehr dazu ist im Beitrag „Cyber-Attacken via PowerShell verhindern“ zu finden. Es ist generell sinnvoll die Ausführung von PowerShell-Skripten direkt über Gruppenrichtlinien zu steuern.
Module überwachen und einschränken
Parallel dazu kann es sinnvoll sein, bestimmte Module in der PowerShell zu überwachen. Die Einstellungen dazu sind bei „Modulprotokollierung aktivieren“ im Pfad „Computerkonfiguration\Richtlinien\ Administrative Vorlagen\Windows-Komponenten\Windows PowerShell“ zu finden. Die Einstellung an dieser Stelle ist automatisch für alle Sitzungen auf den jeweiligen Rechnern aktiviert. Eine Liste aller verfügbaren Module auf einem Rechner kann mit dem folgenden Befehl in der PowerShell angezeigt werden:
Get-Module -ListAvailable
Die Module, die in einer Sitzung bereits importiert wurden, können mit dem folgenden Cmdlet angezeigt werden:
Get-Module
Grundsätzlich kann es sinnvoll sein nicht benötigte Module aus der PowerShell zu entfernen, um die Sicherheit von Servern zu verbessern. Das lässt sich zum Beispiel mit dem folgenden Befehl erledigen:
Remove-Module <module-name>
In diesem Zusammenhang kann es sinnvoll sein zu überprüfen, in welchen Pfaden Module gespeichert sind, die in der PowerShell zum Einsatz kommen können. Auch auf diesem Weg kann Malware in einem System eindringen. Das geht zum Beispiel durch das Abfragen der entsprechenden Umgebungsvariablen als Befehl in der PowerShell:
$env:PSModulePath
Wie man die Sicherheit der PowerShell durch Skriptüberwachung, ConstrainedLanguage-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.
PowerShell mit dem Constrained-Language-Modus absichern
In vielen Fällen ist es nicht notwendig, dass auf Servern in allen Sitzungen alle Funktionen der PowerShell zur Verfügung stehen. Dazu hat Microsoft den Constrained-Language-Modus integriert. Wir haben im Beitrag „Cyber-Attacken via PowerShell verhindern“ beschrieben, wie sich der Modus aktivieren lässt. Dieser spielt eine so wichtige Rolle, dass Microsoft die Überwachung dazu im Windows Admin Center direkt im Dashboard des jeweiligen Servers eingebunden hat.
Nach dem Start des Windows Admin Centers ist bei „Übersicht“ im Bereich „PowerShell-Sprachmodus“ zu erkennen, ob auf dem Server eine Absicherung stattgefunden hat. Wenn das nicht der Fall ist, sollte das in jedem Fall nachgeholt werden.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Dateilose Bedrohungen: Microsoft Defender und die PowerShell
Im Beitrag „Windows 10/11 braucht keinen externen Virenschutz“ zeigen wir, mit welchen Möglichkeiten der Virenschutz auch mit Bordmitteln optimiert werden kann. Das gilt übrigens auch für Windows Server 2019/2022. Die PowerShell arbeitet direkt mit Microsoft Defender zusammen und nutzt dazu Windows Antimalware Scan Interface (AMSI). Befehle und Skripte, die in der PowerShell ablaufen, werden durch diese API von Microsoft Defender nach Malware untersucht. Generell werden alle Skripte vor der Ausführung mit AMSI zunächst überprüft, bevor die PowerShell diese ausführt.
Beim Download von Dateien in der PowerShell überprüft Microsoft Defender ebenfalls, ob der heruntergeladene Inhalt Malware enthält oder eine Gefahr für den Computer darstellt. Das funktioniert auf Arbeitsstationen mit Windows 10/11 genauso wie auf Servern mit Windows Server 2019/2022. Testen lässt sich das durch den versuchten Download des Eicar-Testvirus. Diesen blockiert Microsoft Defender, wenn er in der PowerShell heruntergeladen werden soll:
Windows Defender Application Control für die PowerShell nutzen
Bestandteil von Windows 10/11 und Windows Server 2019/2022 ist neben der Steuerung von Anwendungen mit Applocker auch die Windows Defender-Anwendungssteuerung (Windows Defender Application Control, WDAC). Application Control stellt eine Alternative zu Applocker dar.
Diese arbeitet ebenfalls mit der PowerShell zusammen. Im Erzwingungsmodus wird dabei sichergestellt, dass ein Server maximal vor gefährlichen Skripten und Anwendungen geschützt ist, auch aus der PowerShell heraus. In Windows Server vNext, dem Nachfolger von Windows Server 2022 ist diese Funktion bereits automatisch aktiv.
Windows Server 2022 verfügt ebenfalls über WDAC, wie Windows 10/11 auch, allerdings ist hier der Erzwingungsmodus nicht aktiviert. Das sollte möglichst schnell nachgeholt werden. Die Einstellungen sind bei „Computerkonfiguration\Administrative Vorlagen\System\Device Guard“ zu finden. Hier gibt es die Option „Windows Defender-Anwendungssteuerung bereitstellen“. Hier ist es besonders interessant auf die aktuelle Version der PowerShell zu setzen. Ab PowerShell 7.3 lassen sich PowerShell-Skriptdateien über die WDAC-API blockieren oder zulassen.
Wie man die Sicherheit der PowerShell durch Skriptüberwachung, ConstrainedLanguage-Modus und andere Methoden weiter verbessert, zeigen wir hier im Video-Tipp und in der Bildergalerie.