Buon inizio di settimana a tutti. Oggi vi propongo la seconda parte della guida che Ermanno Goletto, della community SysAdmin.it e MVP Directory Services, ha scritto  per noi sugli strumenti per la gestione da locale e da remoto di Hyper-V.

Nella prima parte della guida abbiamo visto una panoramica degli strumenti di gestione di Hyper-V e alcuni degli strumenti locali, come PowerShell o la Console di Hyper-V.

In questa seconda parte della guida, Ermanno ci presenta alcuni degli strumenti per la gestione da remoto di Hyper-V, in particolare Remote Desktop, WinRM e WinRS. Trovate ora live anche la terza parte della guida: Hyper-V: gestione dell’hypervisor da remoto tramite RSAT, HVRemote, comandi WMI, Hyper-V Guest Console e System Center Virtual Machine Manager (SCVMM) .

Come sempre vi ricordo che se non avete ancora provato Hyper-V potete:

Buona lettura!

Renato F. Giorgini Segui i miei update su Twitter

Strumenti per gestione remota di Hyper-V

Di seguito analizzeremo i tool nativi e terze parti free che possono essere impiegati per la gestione del ruolo Hyper-V da remoto analizzando i vari approcci possibili sia in scenari in cui client remoto e server appartengano allo stesso dominio o a domini in trust che in scenari workgroup o di appartenenza a domini differenti.

Nella seguente tabella sono riassunti tool a disposizione e le loro caratteristiche d’utilizzo:

Tool

Tipo

Requisiti

Remote Desktop

Nativo

Occorre configurare il server per accettare le connessioni tramite RDP.

WinRM e WinRS

Nativo

Occorre configurare il servizio WinRM sul server.

Il sistema operativo del client deve essere Windows XP SP3, Windows Server 2003 SP2 o successivo.

Remote Server Administration Tools

(RSAT)

Nativo

Il sistema operativo del client deve essere Windows 7 o Windows Server 2008 R2 o successivo.

Su sistemi operativi Windows 7 occorre scaricare e installare gli RSAT

HVRemote

Terze parti

Hyper-V Guest Console

(HVGuestConsole)

Terze parti

Il sistema operativo del client deve essere Windows XP, Windows Server 2003 o successivo.

Sul cliente deve essere installato il NET Framework 3.5 o successivo.

Remote Desktop

Il modo più semplice per gestire remotamente Hyper-V è quello di accedere al server tramite RDP, gestendolo quindi come se si operasse in una sessione locale tramite i tool visti precedentemente.

Per configurare l’accesso tramite Desktop Remoto nella modalità Core è possibile utilizzare il Server Configuration tool (SConfig.cmd) selezionando l’opzione 7, oppure il Core Configurator.

In un’installazione in modalità Core è possibile abilitare la funzionalità di desktop remoto anche tramite lo script d sistema scregedit.wsf tramite il comando

cscript %windir%\system32\scregedit.wsf /ar 0

che non fa altro che impostare a 0 la chiave di registro HKLM\ System\ CurrentControlSet\ Control\ Terminal Server\ fDenyTSConnections e abilitare l’eccezione Remote Desktop del firewall, per ulteriori informazioni si veda Using Remote Desktop.

Per consentire l’accesso a tutti i client e non solo a quelli che supportano l’NLA (Network Level Authentication) è possibile utilizzare il comando

cscript %windir%\system32\ scregedit.wsf /cs 0 

si noti però che in questo modo si riduce la sicurezza del sistema.

Dal momento dopo l’installazione di un sistema Windows Server 2008 R2 le condivisioni amministrative e il servizio di Registro Remoto (RemoteRegistry) sono attive è possibile anche abilitare la funzionalità di desktop remoto da un client remoto tramite la seguente procedura eseguita dal Prompt dei comandi:

  • Connettersi al server tramite il comando net use \\server\ipc$ con le credenziali dell’amministratore locale.
  • Aprire l’editor di registro tramite il comando regedit.
  • Connettersi al server tramite la voce Connetti a registro di sistema in rete… del menu File.
  • Impostare a 0 la chiave di registro HKLM\ System\ CurrentControlSet\ Control\ Terminal Server\ fDenyTSConnections.
  • Impostare la chiave REG_SZ HKLM\ SOFTWARE\ Policies\ Microsoft\ WindowsFirewall\ FirewallRules\ RemoteDesktop-In-TCP a “v2.0|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|Name=@FirewallAPI.dll,-28753|Desc=@FirewallAPI.dll,-28756|EmbedCtxt=@FirewallAPI.dll,-28752|Edge=FALSE|” (questo consentirà l’accesso a tutti gli utenti)
  • Riavviare il server con il comando shutdown -m \\server -r -t 0

Attenzione: questa procedura non configura il protocollo RDP in modo sicuro è quindi consigliabile usarla solo nel caso in cui si abbia non accesso alla console. Per impostare in modo sicuro l’accesso tramite il protocollo RDP aprire una sessione di Desktop Remoto riconfigurare il protocollo RDP tramite il Server Configuration Tool.

La possibilità di poter accedere alle condivisioni amministrative e il servizio di Registro Remoto (RemoteRegistry) remotamente è consentita dal fatto che in ambiente Windows Server 2008 R2 sono abilitate per default le Inboud Rules relative al DFS che consentono il traffico in entrata per SMB (porta TCP 445).

Un altro modo di abilitare remotamente i servizi Remote Desktop è quello di sfruttare WMI e in particolare il metodo SetAllowTSConnections della classe Win32_TerminalServiceSetting. Questo approccio è quello su cui mi sono basato per sviluppare l’utility RDRemote (Remote Desktop remote configurator) che permette appunto la configurazione da remoto dell’abilitazione e disabilitazione dei servizi Remote Desktop e delle relative Firewall rules.

RDRemote

Anche in questo caso la possibilità di poter accedere remotamente alla configurazione dei servizi di Remote Desktop è consentita dal fatto che in ambiente Windows Server 2008 R2 sono abilitate per default le Inboud Rules relative al DFS che consentono il traffico in entrata per WMI (porta TCP 135 per il servizio rpcss e TCP Any per il servizio winmgmt).

Per ulteriori informazioni su RDREmote si veda RDRemote V1.0.0, me un’analisi dettagliata del funzionamento delle chiamate WMI e della loro interazione con Firewall rules si veda Windows Server 2008 R2/Hyper-V Server 2008 R2 e connessioni WMI.

WinRM e WinRS

Un’altra possibilità per la gestione remota di Hyper-V è quella di configurare sul server il servizio WinRM che rappresenta l’implementazione del protocollo WS-Management per sistemi operativi Windows e che consente di gestire da remoto in modo sicuro un sistema, tramite protocollo HTTP/HTTPS e Web Services.

Windows Remote Management Architecture

La componente client della tecnologia Windows Remote Management è costituta da WinRS, che implementa una Shell testuale per permette l’ esecuzione di comandi e script su di una macchina remota in cui è stato abilitato WinRM. Di seguito un esempio dei comandi remoti utilizzabili:

winrs -r:machinename dir
winrs -r:machinename msiexec.exe /i c:\install.msi /quiet

Per aumentare le potenzialità offerte da una gestione remota basata su WinRM è possibile configurare il server per l’esecuzione di script PowerShell e l’utilizzo della libreria PSHyperV, in questo modo sarà possibile gestire tramite WinRs il ruolo Hyper-V tramite riga di comando.

Configurazione di WinRM sul server

Per configurare WinRM è possibile utilizzare il comando

winrm qc

che provvede ad eseguire le seguenti operazioni:

  • Avvia il servizio WinRM e lo configura per l’avvio automatico
  • Crea un listener http
  • Crea un’eccezione nel firewall per WinRM

Dopo l’esecuzione del comando winrm rimarrà in ascolto sulla porta TCP 5985 utilizzando il protocollo http.

Nella modalità Core è possibile configurare WinRM anche tramite il Server Configuration tool (SConfig.cmd) selezionando l’opzione 4 e quindi l’opzione 3 oppure tramite il Core Configurator.

Configurazione WinRM tramite Core Configurator

Per impostazione predefinita WinRM utilizza Kerberos per l’autenticazione se il client è in dominio e NTLM se è in workgroup, per avere l’elenco delle impostazioni di autenticazione utilizzare il comando

winrm get winrm/config

Inoltre se sul server è disponibile un certificato digitale, anche autofirmato, per il computer locale con CN uguale all’hostname è possibile configurare WinRM per l’utilizzo di HTTPS (su porta TCP 5986) per criptare la sessione tramite il comando

winrm quickconfig -transport:https

Per ulteriori approfondimenti si vedano:

Configurazione di WinRS sul client

Per connettersi tramite WinRS ad un server in cui è stato configurato il servizio WinRM occorre che siano rispettate le seguenti condizioni:

  • I comandi inviati tramite WinRS devono essere eseguiti sul server con credenziali aventi privilegi di amministratore locale.
  • Il sistema operativo del client deve essere Windows XP SP3, Windows Server 2003 SP2 o successivo.
  • Sul client deve essere disponibile WinRS 2.0 nativamente inclusa in Windows Server 2008 R2 e Windows 7, mentre per Windows XP SP3, Windows Server 2003 SP2, Vista SP1 e Windows Server 2008 SP2 è disponibile il Windows Management Framework Core package (Windows PowerShell 2.0 and WinRM 2.0).
  • I comandi o gli script eseguiti tramite WinRS non devono avere interfaccia grafica, questo significa che eventuali MessageBox informative o che richiedono conferme non verranno visualizzate interrompendo il comando o lo script (si noti quindi che alcuni comandi offerti dal Server Configuration Tool quali ad esempio il riavvio non potranno essere utilizzati).

Di seguito vengono riassunti i requisiti necessari per poter avviare dal client una sessione WinRS tramite il comando:

winrs –r:ServerHostname command

dove ServerHostname è il nome NetBIOS o FQDN del server, ad esempio:

winrs –r:srvhv01 cmd.exe

Scenario

Requisiti

Client e Server in dominio

Oppure

Client e Server in domini diversi con relazione di Trust

· Se l’account su cui si è connessi sul client non ha privilegi di amministratore locale sul server utilizzare una password di rete per connettersi al server con credenziali aventi privilegi di amministratore locale (*).

Client in workgroup e Server in dominio

Oppure

Client e Server in workgroup

Oppure

Client e Server in domini differenti senza relazioni di Trust

· Utilizzare una password di rete per connettersi al server con credenziali aventi privilegi di amministratore locale (*).

· Aggiungere sul client il nome del server all’elenco dei TrustedHosts ad esempio utilizzando la policy locale Configurazione computer\Modelli amministrativi\Componenti di Windows\Gestione remota Windows\Client Gestione remota Windows\Host trusted (la policy è supportata su Vista e successivi)

· In alternativa è possibile configurare i TrustedHost tramite il comando winrm set winrm/config/client '@{TrustedHosts ="Hostname"}'
(per consentire l’accesso a qualunque server utilizzare il carattere *)

(*) Per maggiori informazioni sull’utilizzo delle password di rete si veda Gestione delle password di rete.

Per ulteriori informazioni sulla configurazione di WinRM e WinRS si vedano Using WinRS e Remotely managing your Server Core using WinRM and WinRS.

 

Ermanno Goletto