Leerdoelen
- Het remote uitvoeren van PowerShell cmdlets
PowerShell Remoting
- Connecten aan een remote machine(s)
- Kan 1 of meerdere (25000) machines zijn
- Waarop je tegelijktijd hetzelfde commando kan uitvoeren
- De tool voor beheer van meerdere servers
- Gebruikt WS-MAN protocol
Hoe remoting werkt
- Start een PowerShell sessie (1) op je computer
- Connect met een PowerShell sessie (2) op een remote systeem
- Cmdlets worden uitgevoerd op de remote computer (2)
- De uitvoer van het commando wordt terug gestuurd naar de verzender (1)
Een verbinding maken
Windows Remote Management
- Om een verbinding te maken moet er iets luisteren
- We hebben een service nodig die connecties kan aannemen
- WinRM is zo'n service
- Gebruikt het WS-Management Protocol (WS-MAN)
- Een veilige en betrouwbare methode voor het beheer van computers
- Maakt gebruik van HTTP(s)
Wat is er nodig
- Minimaal 2 machines met PowerShell
- Minimaal 1 machine die toegang geeft tot remoting
- Service die remote connecties toestaat
- Firewall die verbindingen doorlaat
Test setup: Clonen van een VM
- Clone Windows 11 Pro VM
- Regenerate het MAC-adres
- VMWare: Settings → Network Adapter
- Klik op Advanced
- Bij MAC-address klik op Generate
- Noteer de MAC-adressen
- Start Windows:
- Ga naar Settings → System
- Bij systeem naam klik op Rename
- Je systeem moet herstarten...
Test setup: Add Interface(s)
- VMWare: Voeg aan beide windows systemen een netwerkkaart toe
- Settings
- Klik: + Add
- Select: Network Adapter
- Klik: Finish
- Select: LAN Segment
- Klik: Save
- Noteer de MAC-adressen
Client en Server
- We hebben 2 machines
- Van de ene maken we een server
- Is degene die de commando's gaat ontvangen
- Van de andere maken we de client
- Is degene waarop wij werken
Test setup: Private network
- De nieuwe adapters vormen een "eigen" netwerk
- Het netwerk wordt het 192.168.242.0/24 netwerk
- Zet op de client het IP op de nieuwe adapter:
Set-NetIPAddress -InterfaceAlias "Ethernet1"
-IPAddress 192.168.242.1 -PrefixLength 24
- Zet op de server het IP op de nieuwe adapter:
Set-NetIPAddress -InterfaceAlias "Ethernet1"
-IPAddress 192.168.242.2 -PrefixLength 24
- Vertel beide machines dat dit een private network is:
Set-NetConnectionProfile -InterfaceAlias "Ethernet1" \
-NetworkCategory Private
Test setup: testing
- Kan je 2 kanten op pingen?
- Niet:
- Controleer MAC-adressen en IP adressen
- Controleer de firewall
- Zet de firewall uit en test
- Allow ping door de firewall voor hele subnet:
Set-NetFirewallRule -Name 'CoreNet-Diag-ICMP4-EchoRequest-In' \
-enabled True -RemoteAddress 192.168.242.0/24
Enable remoting on server
Enable-PSRemoting
Set-WSManQuickConfig
- Wie heeft er toegang tot remoting?
- Vervang <computer...> door je client
Set-Item -Path WSMan:\localhost\Client\TrustedHosts \
-Value "<computer1>,<computer2>"
Test server configuration
winrm enumerate winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 127.0.0.1, 192.168.185.136, 192.168.242.2,\
::1, fe80::6f58:7b93:f93a:2e64%11,\
fe80::9f6f:45e4:714f:2b7f%3
Config remoting op de client
winrm quickconfig
- Wie mag er data terug sturen?
- Vervang <computer...> door je server
Set-Item -Path WSMan:\localhost\Client\TrustedHosts \
-Value "<computer1>,<computer2>"
Get-Item WSMan:\localhost\Client\TrustedHosts
Test de verbinding
- Vanaf de client connect naar de server
Test-WsMan -ComputerName <IP server>
wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor : Microsoft Corporation
ProductVersion : OS: 10.0.26200 SP: 0.0 Stack: 3.0
Domain of geen domain
- Normaal doe je dit in een domain
- Accounts beschikbaar op alle machines
- Machines zijn getrust in het domain
- Maar het kan ook zonder...
- ... was wel rocket science...
Server: Allow HTTP en Basic auth
cd WSMan:\localhost\Service
dir
Set-Item .\allowunencrypted $true
cd Auth
dir
Set-Item .\Basic $true
Client: Allow HTTP en Basic auth
cd WSMan:\localhost\Client
dir
Set-Item .\allowunencrypted $true
cd Auth
dir
Set-Item .\Basic $true
Test login
Test-WsMan -ComputerName win11rem01 -Authentication basic \
-credential dleeu
Test remote command
Invoke-Command -Authentication basic -ComputerName win11rem01 \
-ScriptBlock { Get-ChildItem C:\ } -credential dleeu
Start een remote sessie
Enter-PSSession -ComputerName win11rem01 \
-Authentication basic -Credential dleeu
Single Sign-On
$Cred = Get-Credential
Enter-PSSession -ComputerName win11rem01 \
-Authentication basic -Credential $Cred
Naar meerdere machines
Enter-PSSession -ComputerName rem01, rem02, rem03, rem04 \
-Authentication basic -Credential dleeu {
Get-Service -Name W32time
}
- Account en password moet op elke machine hetzelfde zijn
- Alleen handig in een domain
Samenvatting
- We hebben Remote Management geconfigureerd
- We hebben via een prive-netwerk gewerkt
- We hebben gewerkt met een onveilige verbinding
- We hebben gewerkt met een basic authenticatie