Benutzer-Werkzeuge

Webseiten-Werkzeuge


winrm

Inhaltsverzeichnis

WinRM (Windows Remote Management) ist ein einfaches in Windows integriertes Remote-Verwaltungsprotokoll. WinRM nutzt das SOAP (Simple Object Access Protokoll), um Verbindungen zu entfernten Computern und Anwendungen aufzubauen.

WinRM wird über die Kommandozeile gesteuert und für folgende Aufgaben eingesetzt.

  Remote-Kommunikation zu allen kompatiblen Betriebssystemen
  Ausführung von Befehlen auf Computern die nur remote erreichbar sind also über das Netzwerk
  Überwachen, verwalten und konfigurieren von Computern sei es ein Server oder eine Workstation

WinRM muss ab Windows 10 explizit aktiviert und konfiguriert werden. Das ist nicht immer so einfach. Es hängt stark von der Umgebungssicherheit ab. Sprich, nutzt man WinRM in einer Domäne oder in einem lokalen Netzwerk. Setzt man Zertifikate ein oder doch nur bestimmte Authentifizierungsmechanismen.

WinRM ist nicht allein. Es gibt noch die WinRS (Windows Remote Shell). WinRS ist quasi die Clientkomponente auf einem System, das die Befehle ausführt, also die eigentliche Funktionalität zum Ausführen von Befehlen und Prozessen bereitstellt.

Windows Remote Management setzt bei der Kommunikation auf die Ports 5985 und 5986. Wobei der letzte Port (HTTPS) einsetzt. Früher wurden die Ports 80 und 443 für diese Aufgabe eingesetzt. Aber dadurch das der Port 80 überwiegend, aus Sicherheitsgründen gesperrt wurde, setzt man heute auf die neuen Ports.

Powershell

# Show config
winrm get winrm/config
winrm get winrm/config/client
winrm get winrm/config/service

# Aktivieren
winrm quickconfig

# Ports öffnen (optional)
Enable-PSRemoting -Force
New-NetFirewallRule -Name "WinRM-HTTP" -DisplayName "WinRM (HTTP)" -Enabled True -Profile Any -Action Allow -Protocol TCP -LocalPort 5985

# Lokalen User in Gruppe geben
Add-LocalGroupMember -Group "Remote Management Users" -Member <username>

# Bei Domänen User
winrm set winrm/config/service/Auth @{Basic="true"}

# Dann Zugriff via IP begrenzen
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Service" -Name "IPv4Filter" -Value "*,1.1.1.1,2.2.2.2/24"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Service" -Name "IPv6Filter" -Value "*"

# Listener einstellen
winrm enumerate winrm/config/listener

# Dienst starten/stoppen
Start-Service -Name WinRM
Stop-Service -Name WinRM
Get-Service WinRM

# Dienst automatisch starten
Set-Service -Name WinRM -StartupType Automatic

# Trusted Hosts einstellen
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "server1,server2"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" # Never!
Get-Item WSMan:\localhost\Client\TrustedHosts

# Reset config
winrm invoke restore winrm/config

Other

write-output "Running User Data Script"
write-host "(host) Running User Data Script"
 
Set-ExecutionPolicy Unrestricted -Scope LocalMachine -Force -ErrorAction Ignore
 
# Don't set this before Set-ExecutionPolicy as it throws an error
$ErrorActionPreference = "stop"
 
# Remove HTTP listener
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
 
# WinRM
write-output "Setting up WinRM"
write-host "(host) setting up WinRM"
 
cmd.exe /c winrm quickconfig -q
cmd.exe /c winrm quickconfig '-transport:http'
cmd.exe /c winrm set "winrm/config" '@{MaxTimeoutms="1800000"}'
cmd.exe /c winrm set "winrm/config/winrs" '@{MaxMemoryPerShellMB="1024"}'
cmd.exe /c winrm set "winrm/config/service" '@{AllowUnencrypted="true"}'
cmd.exe /c winrm set "winrm/config/client" '@{AllowUnencrypted="true"}'
cmd.exe /c winrm set "winrm/config/service/auth" '@{Basic="true"}'
cmd.exe /c winrm set "winrm/config/client/auth" '@{Basic="true"}'
cmd.exe /c winrm set "winrm/config/service/auth" '@{CredSSP="true"}'
cmd.exe /c winrm set "winrm/config/listener?Address=*+Transport=HTTP" '@{Port="5985"}'
cmd.exe /c netsh advfirewall firewall set rule group="remote administration" new enable=yes
cmd.exe /c netsh advfirewall firewall add rule name="Open Port 5985" dir=in action=allow protocol=TCP localport=5985
cmd.exe /c net stop winrm
cmd.exe /c sc config winrm start= auto
cmd.exe /c net start winrm 
winrm.txt · Zuletzt geändert: 2025/03/15 15:18 von jango