Tags: Configuration-Management, PowerShell, Sicherheit
Desired State Configuration (DSC) ist nicht nur ein Mechanismus, mit dem sich eine gewünschte Systemkonfiguration auf Rechnern herstellen lässt. Die Technik kann man auch einsetzen, um festzustellen, ob PCs von einem gewünschten Standard abweichen. Neben den Bordmitteln ist das Modul DSCEA dabei behilflich.
Bekanntlich erweitert Desired State Configuration die PowerShell um eine spezielle function, mit der man in einer deklarativen Syntax die Einstellungen des Betriebssystems definieren sowie die Installation von Features und Anwendungen bewirken kann. Eine solche configuration erzeugt bei ihrer Ausführung eine *.mof-Datei, die man dann auf die Zielsysteme anwendet (siehe dazu: Desired State Configuration (DSC): Grundlagen und Funktionsweise).
DSC für Security-Checks der Windows-Umgebung
Allerdings dient eine solche gewünschte Konfiguration nicht ausschließlich dazu, die darin enthaltenen Vorgaben gleich zu implementieren. Vielmehr kann man sie auch dafür einsetzen, um sich einen Überblick über den Status quo zu verschaffen.
Eine sinnvolle Anwendung für DSC könnten somit Security-Scans sein, die Rechner auf mögliche Schwachstellen untersuchen, welche durch Fehlkonfigurationen oder veraltete Technologien entstehen. Ein aktuelles Beispiel wäre etwa die Prüfung von PCs darauf, ob bei ihnen noch SMB1 aktiviert ist.
Konfiguration prüfen mit Test-DscConfiguration
In diesem Beitrag habe ich beschrieben, wie man SMB v1 mit Hilfe von DSC entweder deinstalliert (ab Windows 8.1 und Server 2012 R2) oder über einen Registry-Eintrag deaktiviert (auf älteren OS-Versionen). Die resultierende .mof-Datei kann man aber auch verwenden, um die Rechner im Netz daraufhin zu untersuchen, ob SMBv1 abgeschaltet wurde.
Dieses Beispiel hier beschränkt sich auf Client-Systeme mit Windows ab der Version 8.1. Die configuration sieht dort beispielsweise so aus:
configuration DisableSMB1{ Node localhost{ Import-DscResource –ModuleName 'PSDesiredStateConfiguration' WindowsOptionalFeature 'SMB1' { # 'SMB1' ist der von uns vergebene Name Name = 'SMB1Protocol' # Name des Features in Windows 10 Ensure = 'Disable' } } }
Nach dem Aufruf von DisableSMB1 findet sich im gleichnamigen Unterverzeichnis die Datei localhost.mof, weil DSC für jeden Node eine eigene Konfigurationsdatei erstellt. In unserem Beispiel ist das nur eine für den lokalen Rechner. Auf diesem startet man nun den Befehl
Test-DscConfiguration .\DisableSMB1
Hier gilt die Annahme, dass man sich noch im gleichen Verzeichnis befindet, in dem man zuvor die configuration aufgerufen hat und die .mof-Datei sich also unter .\DisableSMB1 befindet.
Das Ergebnis ist relativ übersichtlich, es reduziert sich im Wesentlichen darauf, ob der genannte Rechner den Vorgaben entspricht oder nicht.
Möchte man nicht bloß den lokalen Host untersuchen, sondern remote mehrere Rechner im Netz, dann müsste man diese als Nodes im Script festlegen, so dass PowerShell für jeden von ihnen eine .mof-Datei erzeugt.
Die Datei localhost.mof lässt sich zwar auf jedem beliebigen Knoten ausführen, aber eben nur lokal. Sobald man Test-DscConfiguration mit dem Parameter ComputerName startet und ihm die Namen von Remote-Hosts übergibt, dann erwartet das Cmdlets für jedes Zielsystem eine .mof-Datei mit dem Namen des betreffenden Rechners.
DSCEA als Alternative
Flexibler bei der Verwendung und aufschlussreicher bei den Ergebnissen ist das Modul DSC Environment Analyzer (DSCEA), das Microsoft über Github und die PSGallery bereitstellt. Daher muss man es zuerst installieren, was sich über den Befehl
Install-Module -Name DSCEA
erledigen lässt. Dieser Schritt ist nur auf dem Rechner erforderlich, von dem aus man den Scan startet, aber nicht auf den Zielsystemen. Zu bedenken ist dabei, dass beispielsweise eine Prüfung eines Rechners mit Windows 8.1 und PowerShell 4 von einem PC mit Windows 10 nicht funktioniert. Umgekehrt gibt es jedoch keine Probleme.
Nach der Installation kann man sich die darin enthaltenen 4 Cmdlets mit
Get-Command -Module DSCEA
anzeigen lassen.
Abweichende Konfigurationen finden mit Start-DSCEAscan
Wie der Name von Start-DSCEAscan schon nahelegt, handelt es sich dabei um das Cmdlet, mit dem man Rechner auf Abweichungen von einer Konfiguration untersucht.
Der Parameter MofFile erwartet die .mof-Datei für die jeweilige Konfiguration, wobei man hier auch eine localhost.mof für Remote-Systeme nutzen kann. Letztere gibt man wie üblich dem Parameter ComputerName mit, und zwar durch Kommata getrennt, wenn es mehrere sind:
Start-DSCEAscan -MofFile .\DisableSMB1\localhost.mof `
-ComputerName Win10-VM1, Win10-VM2
Alternativ kann man dem Cmdlet eine Liste von Computern übergeben, indem man sie in eine Textdatei schreibt und diese über den Parameter InputFile spezifiziert. Dabei sollte jeder Name in einer eigenen Zeile stehen.
Für diese Option würde es sich etwa anbieten, alle Rechner mit Windows 10 aus dem Active Directory auszulesen und das Ergebnis in der Input-Datei zu speichern (siehe dazu Computer im Active Directory filtern und inventarisieren mit PowerShell).
Reports erstellen
Als Ausgabe erzeugt Start-DSCEAscan eine XML-Datei, aus der man anschließend Reports generieren kann. Zur Auswahl stehen dafür HTML oder Power BI von SQL Server. Außerdem kann man die Ergebnisse mit Convert-DSCEAresultsToCSV umwandeln.
Entscheidet man sich für das Erstellen eines HTML-Reports, dann dient das Cmdlet Get-DSCEAreport diesem Zweck. Man ruft es aus dem Verzeichnis auf, in dem Start-DSCEAscan die XML-Datei gespeichert hat.
Der Schalter Detailed zeigt alle Abweichungen bei den betroffenen Rechnern an. Die Ausgabe lässt sich zudem mit ComputerName oder ItemName auf bestimmte Rechner oder Konfigurationen einschränken.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
- PowerShell als Hacking-Tool: Missbrauch von Scripts verhindern
- Deep Scriptblock Logging: PowerShell-Kommandos im Eventlog aufzeichnen
- PowerShell-Logging: Befehle in Transcript-Datei aufzeichnen
- PowerShell-Scripts signieren mit Zertifikaten einer AD-Zertifizierungsstelle
- Constrained Language Mode: PowerShell-Risiken entschärfen
Weitere Links