Teil 2: PowerShell Remoting - Constrained Endpoint Configuration
Im ersten Teil dieser Reihe haben Sie erfahren, wie Sie mithilfe der PowerShell andere Computer fernsteuern oder auf diesen PowerShell-Befehle von einem anderen Ort aus zur Ausführung bringen können. Heute werde ich Ihnen näherbringen, wie man diese Verbindungen mittels selbst konfigurierter Endpunkte verwalten und einschränken kann.
Jeder Benutzer, der über die PowerShell eine erfolgreiche Verbindung zu einem entfernten Computer aufgebaut hat, kommt auf diesem an einem bestimmten PowerShell Endpunkt heraus. Je nach Konfiguration dieses Endpunktes auf dem Zielrechner stehen dem Benutzer dann gewisse Zugriffsrechte zur Verfügung. So kann beispielsweise der verfügbare Befehlssatz an Cmdlets und Funktionen oder die Verwendung von .NET Sprachfeatures eingeschränkt werden. Nützlich ist dies vor allem dann, wenn man gewissen Benutzern zwar Fernzugriff auf Computer oder Server für einen bestimmten Tätigkeitsbereich gestatten, gleichzeitig aber keinen vollen Zugriff auf das System exponieren möchte. Im Folgenden zeige ich Ihnen nun, wie Sie eine solche Endpunktkonfiguration mittels einer Konfigurationsdatei vornehmen können.
Alle Dateien mit der Endung .pssc (PowerShell Session Configuration) beschreiben PowerShell Endpunktkonfigurationen. Sie sind ähnlich wie PowerShell Modulmanifeste aufgebaut und bestehen aus einer Hashtabelle, welche bestimmten Eigenschaften bestimmte Werte zuordnet. Bei diesen Eigenschaften handelt es sich um die speziellen Konfigurationsparameter des Endpunktes.
Das Erstellen einer solchen Datei lässt sich einfach über das Cmdlet New-PSSessionConfigurationFile bewerkstelligen. Geben Sie über den -Path Parameter einfach einen gültigen Namen an:
New-PSSessionConfigurationFile -Path EndpointConfigurationTest.pssc
Wenn Sie die nun entstandene Datei öffnen, werden Sie mit einem ähnlichen Inhalt wie diesem konfrontiert:
@{
# Version number of the schema used for this configuration file SchemaVersion = '1.0.0.0'
# ID used to uniquely identify this session configuration. GUID = '2f1bb4a4-eb5c-48a3-b997-dbf36905e5d2'
# Specifies the execution policy for this session configuration ExecutionPolicy = 'Restricted'
# Modules that will be imported LanguageMode = 'FullLanguage'
# Initial state of this session configuration SessionType = 'Default'
# Environment variables defined in this session configuration # EnvironmentVariables =
# Author of this session configuration Author = 'Tobias'
# Company associated with this session configuration CompanyName = 'Unknown'
# Copyright statement for this session configuration Copyright = '(c) 2015 Tobias. All rights reserved.'
# Description of the functionality provided by this session configuration # Description =
...
Hier können Sie nun durch Eintragen/Ändern der Werte den Endpunkt nach Belieben konfigurieren. Ein paar wichtige Eigenschaften und Werte seien im Folgenden aufgeführt, weiterführende Informationen diesbezüglich sowie eine Liste aller Eigenschaften und Werte inklusive Erklärung finden Sie unter [1]:
ExecutionPolicy - Beschreibt die im Kontext des Endpunktes geltende ExecutionPolicy [2].
Language - Einschränkungen von Sprachfeatures. FullLanguage bedeutet keine Einschränkung, NoLanguage verhindert den Zugriff auf PowerShell Variablen, .NET Typen etc.
SessionType - Einschränkungen der grundsätzlich verfügbaren Befehle. RestrictedRemoteServer lässt als Grundkonfiguration nur die 7 essentiellen Befehle zu, welche für die Remote Session vonnöten sind.
VisibleCmdlets - Legt explizit die Cmdlets fest, welche neben den durch SessionType implizierten verfügbar gemacht werden sollen.
ModulesToImport - Grundsätzlich sind keine Module verfügbar und es können auch keine importiert werden. Legen Sie hier explizit fest, welche Module in den Kontext des Endpunktes importiert werden sollen.
VisibleFunctions - Gibt explizit die Funktionen aus den geladenen Modulen an, welche verfügbar gemacht werden sollen. Das Wildcardsymbol * importiert alle.
Über das Cmdlet Register-PSSessionConfiguration kann der Endpunkt nun registriert werden. Geben Sie über den -Name Parameter einen Namen für den Endpunkt und über -Path den Namen der Konfigurationsdatei an. Über den zusätzlichen Switch -ShowSecurityDescriptorUI kann mittels des bekannten Windows Dialogs festgelegt werden, welche Benutzer den Endpunkt mit welchen Zugriffsrechten benutzen dürfen:
Register-PSSessionConfiguration -Name Test -Path EndpointConfigurationTest.pssc -ShowSecurityDescriptorUI
Hier geht es zum ersten Teil der Blogeintragsreihe PowerShell Remoting.
- ASP.NET 1
- Active Directory 41
- Administration Tools 1
- Allgemein 60
- Backup 4
- ChatBots 5
- Configuration Manager 3
- DNS 1
- Data Protection Manager 1
- Deployment 24
- Endpoint Protection 1
- Exchange Server 62
- Gruppenrichtlinien 4
- Hyper-V 18
- Intune 1
- Konferenz 1
- Künstliche Intelligenz 7
- Linux 3
- Microsoft Office 11
- Microsoft Teams 1
- Office 365 11
- Office Web App Server 1
- Powershell 21
- Remote Desktop Server 1
- Remote Server 1
- SQL Server 8
- Sharepoint Server 12
- Sicherheit 1
- System Center 10
- Training 1
- Verschlüsselung 2
- Virtual Machine Manager 1
- Visual Studio 1
- WSUS 7
- Windows 10 12
- Windows 8 9
- Windows Azure 4
- Windows Client 1
- Windows Server 24
- Windows Server 2012 7
- Windows Server 2012R2 15
- Windows Server 2016 7
- Windows Server 2019 2
- Windows Server 2022 1
- Zertifikate 4