Abilitare Remote Desktop remotamente

Il Remote Desktop è sicuramente il modo più comodo per amministrare i sistemi Windows, ma volte possono presentarsi scenari in cui non è abilitato e non abbiamo la possibilità immediata di eseguire la configurazione tramite una sessione in console.

Si pensi ad esempio al caso di un server istallato (magari non da noi) e portato i server farm senza aver abilitato l’accesso amministrativo via RDP o ancora ad un server in una sede remota.

Dopo l’installazione di un sistema Windows comprese le installazioni in modalità e Hyper-V Server sono abilitate per default le condivisioni amministrative e il servizio di Registro Remoto (RemoteRegistry). Ciò permette di abilitare remotamente il Remote Desktop a patto di avere le credenziali di amministratore locale del sistema remoto.

Le problematiche che occorre risolvere per per abilitare RDP sono l’abilitazione della connessioni via RDP e la configurazione di un’eccezione sul firewall per consentire il traffico via RDP.

Di seguito illustrerò 2 due metodi testati sul un Hyper-V Server 2008 R2 Sp1 appena installato dove al termine dell’installazione è stata impostata solo la password di Amministratore locale senza eseguire altre impostazioni.

Metodo 1:

Eseguire la seguente procedura dal client da cui si intende connettersi via RDP al server remoto:

  1. Aprire un Prompt dei comandi.
  2. Connettersi al server tramite il comando net use \\server\ipc$ specificando quando richiesto le credenziali dell’amministratore locale.
  3. Aprire l’editor di registro tramite il comando regedit.
  4. Connettersi al server remoto tramite la voce Connetti a registro di sistema in rete… del menu File. (inserire le credenziali dell’amministratore locale se richieste).
  5. Impostare a 0 la chiave di registro HKLM\System\CurrentControlSet\Control\Terminal Server\fDenyTSConnections.
  6. 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|
  7. Riavviare il sever remoto con il comando shutdown -m \\server -r -t 0

Va precisato che questa configurazione abilita l’accesso per tutti gli utenti e quindi non configura RDP in modo sicuro è quindi consigliabile accedere successivamente tramite RDP al server remoto rimuovere le chiavi di registro impostate e abilitare RDP nel modo classico (nel caso di istallazioni in modalità Core tramite il Server Configuration Tool).

Metodo 2:

Un’altra possibilità è quella di sfruttare PSExec il tool a riga di comando che permette di eseguire comandi remoti.

Eseguire la seguente procedura dal client da cui si intende connettersi via RDP al server remoto:

  1. Aprire un Prompt dei comandi.
  2. Connettersi al server tramite il comando net use \\server\ipc$ specificando quando richiesto le credenziali dell’amministratore locale.
  3. Eseguire il seguente comando per abilitare le connessioni remote tramite RDP:
    psexec \\server reg add “hklm\system\currentcontrolset\control\terminal server” /f /v fDenyTSConnections /t REG_DWORD /d 0
  4. Eseguire il seguente comando per abilitare l’eccezione  connessioni remote tramite RDP:
    psexec \\server netsh firewall set service remotedesktop enable

Anche in questo caso è comunque preferibile riconfigurare poi una volta connessi via RDP il servizio di Desktop Remoto nel modo classico (nel caso di installazioni in modalità Core tramite il Server Configuration Tool).

Volendo esiste anche un terzo metodo che si basa sull’utilizzo di WMI e quindi di chiamate autenticate tramite RPC (che per default sono consentite). Infatti è possibile utilizzare il metodo SetAllowTSConnections della classe Win32_TerminalServiceSetting. Questo può essere lo spunto per costruire una piccola applicazione/script che automatizzi la configurazione.

Per ulteriori approfondimenti vi lascio come al solito alcuni link: