Visualizzazione post con etichetta Enable-PSRemoting. Mostra tutti i post
Visualizzazione post con etichetta Enable-PSRemoting. Mostra tutti i post

lunedì 3 aprile 2023

Windows Server 2022: Abilitazione dell'amministrazione remota

Un server può essere amministrato da remoto tramite l'utilizzo di diversi strumenti tra cui Server Manager, PowerShell e Desktop Remoto. In quest'articolo verrà illustrato come attivare l'amministrazione remota su Windows Server 2022 con desktop experience e sui Server Core.

Windows Server 2022 con Desktop experience

In Windows Server 2022 con Desktop experience la gestione remota è abilitata per impostazione predefinita e consente l'amministrazione remota del server tramite PowerShell
Per quanto riguarda Desktop remoto è una funzione separata che consente di connettersi al server e di lavorarci come se ci si trovasse di fronte al suo schermo e alla sua tastiera, pur essendo fisicamente distanti. Per impostazione predefinita, questa opzione è disattivata e, per utilizzarla, è necessario attivarla manualmente. Per permettere la connessione al server tramite desktop remoto, inoltre, va abilitata la regola Desktop remoto - Modalità utente (TCP-In) elencata nelle Regole connessioni in entrata del firewall del server. 

Vediamo di seguito come procedere.
Da Server Manager, cliccare su Server locale nel menu a sinistra. Cliccare, quindi, sul collegamento ipertestuale Disabilitato accanto alla voce Desktop remoto (in alternativa eseguire SystemPropertiesRemote.exe).
Server Manager, Desktop remoto
FIG 1 - Server Manager, Desktop remoto
Nella finestra di Proprietà del sistema, selezionare Consenti connessioni remote al computer.
Proprietà del sistema
FIG 2 - Proprietà del sistema
Verrà visualizzata una finestra di dialogo che ci informa dell'attivazione di un'eccezione del firewall per Desktop remoto. Cliccare su OK.
Connessione Desktop remoto
FIG 3 - Connessione Desktop remoto
Se si desidera impostare l'accesso remoto per persone o gruppi specifici, fare clic sul pulsante Seleziona utenti.
Proprietà del sistema, Seleziona utenti
FIG 4 - Proprietà del sistema, Seleziona utenti
Fare clic su Aggiungi (FIG 5), scegliere la persona o il gruppo e fare clic su OK(FIG 6).

Utenti desktop remoto
FIG 5 - Utenti desktop remoto

Seleziona Utenti
FIG 6 - Seleziona Utenti
Cliccare sul pulsante OK nella finestra di dialogo Utenti desktop remoto per chiuderla.
Utenti desktop remoto
FIG 7 - Utenti desktop remoto

Fare nuovamente clic su OK nella schermata Proprietà del sistema per abilitare Remote Desktop.
Proprietà del sistema
FIG 8 - Proprietà del sistema
A questo punto aggiornando la pagina di Server Manager, vedremo che Desktop remoto è stato abilitato.
Server Manager
FIG 9 - Server Manager

Dopo aver abilitato Desktop remoto su Windows Server 2022, è possibile accedere e gestire il server da remoto. Se si desidera consentire a più utenti di accedervi contemporaneamente, è necessario installare il ruolo Servizi desktop remoto (Remote Desktop Services o RDS che, su Windows Server 2022, non viene installato per default).

Windows Server 2022 Core

La gestione remota è abilitata per impostazione predefinita in Windows Server 2022 Core in modo da permettere l'amministrazione del server da remoto con Server Manager. Se nel vostro ambiente è stata disattivata, è possibile attivarla  tramite SConfig o tramite PowerShell con il cmdlet Configure-SMRemoting (utilizzabile anche sulle versioni di Windows Server dotate di Desktop Experience). 

Abilitazione gestione remota tramite SConfig
Da SConfig digitare 4 seguito da Invio per selezionare la voce Gestione remota.
SConfig
FIG 10 - SConfig
Digitare 1 seguito da Invio per abilitare la gestione remota.
Configura gestione remota
FIG 11 - Configura gestione remota
Dopo qualche secondo un messaggio ci avvisa dell'avvenuta abilitazione. Premere Invio per ritornare alla homepage di Sconfig.
Gestione remota abilitata
FIG 12 - Gestione remota abilitata


Abilitazione gestione remota tramite PowerShell
Per abilitare la gestione remota da PowerShell eseguire il comando
 Configure-SMRemoting -Enable  
Configure-SMRemoting
FIG 13 - Configure-SMRemoting


Per poter amministrare il server in remoto con PowerShell, sono necessari due comandi aggiuntivi: Enable-PSRemoting e WinRM QuickConfig

Enable-PSRemoting configura PowerShell per ricevere i comandi remoti inviati al sistema. Il comando non fornisce alcune risultato in caso di successo ma verrà semplicemente riproposto il prompt dei comandi di PowerShell. Eseguire il comando
 Enable-PSRemoting -Force  
Enable-PSRemoting
FIG 14 - Enable-PSRemoting


WinRM QuickConfig analizza e configura automaticamente il servizio WinRM (Gestione remota Windows). Il comando avvia il servizio WinRM se non è già avviato e assicura che WinRM sia impostato per l'avvio automatico. Si assicura, inoltre, che il firewall di Windows consenta il traffico HTTP e HTTPS in entrata e configura un listener per le porte che inviano e ricevono messaggi di protocollo WS-Management usando HTTP o HTTPS. Eseguire il comando
 WinRM QuickConfig   
Dopo aver eseguito l'analisi, ci può essere richiesto di confermare o meno alcune modifiche necessarie (come impostare l'avvio automatico del servizio WinRM e l'attivazione di un'eccezione firewall). Alle richieste di conferma rispondere affermativamente digitando Y seguito da Invio.
WinRM QuickConfig
FIG 15 - WinRM QuickConfig
Se durante l'analisi tutto è risultato corretto, al posto delle conferme di modifica, verrà visualizzato un messaggio che WinRM è già in esecuzione ed è già impostato per la gestione remota.
WinRM in esecuzione
FIG 16 - WinRM in esecuzione

Abilitazione Desktop remoto tramite SConfig
Per abilitare Desktop remoto utilizzando SConfig, digitare 7 seguito da Invio per selezionare la voce Desktop remoto.
Sconfig
FIG 17 - Sconfig
Digitare A seguito da invio per abilitare Desktop remoto.
Abilita Desktop remoto
FIG 18 - Abilita Desktop remoto
Selezionare l'opzione Consenti solo client che eseguono Desktop remoto con Autenticazione a livello di rete (sicurezza superiore) digitando 1 seguito da Invio.
Consenti client
FIG 19 - Consenti client
Un messaggio ci avvisa che l'operazione è stata completata. Premere Invio per ritornare nella schermata principale di SConfig.
Configurazione Desktop remoto completata
FIG 20 - Configurazione Desktop remoto completata
Nella homepage di SConfig alla voce Desktop remoto apparirà Abilitato (client con livello di sicurezza superiore).
Desktop remoto abilitato
FIG 21 - Desktop remoto abilitato

Abilitazione Desktop remoto tramite PowerShell
Per abilitare Desktop remoto tramite PowerShell è necessario eseguire i seguenti comandi.
 Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -value 0  
 Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\' -Name "UserAuthentication" -Value 1  
 Enable-NetFirewallRule -DisplayGroup "Desktop remoto"  
Abilitazione Desktop remoto tramite PowerShell
FIG 22 - Abilitazione Desktop remoto tramite PowerShell

Come si intuisce dai comandi, il primo abilita effettivamente Desktop remoto, il secondo abilita l'autenticazione a livello di rete (sicurezza superiore) mentre il terzo abilita la regola Desktop remoto - Modalità utente (TCP-In) elencata nelle Regole connessioni in entrata del firewall del server.

È possibile utilizzare PowerShell per concedere le autorizzazioni all'uso di Desktop remoto. Gli amministratori possono accedere in remoto per impostazione predefinita. Per dare agli utenti non amministratori il permesso di utilizzare Desktop remoto, basta aggiungerli al gruppo locale Utenti Desktop Remoto con il comando
 Add-LocalGroupMember -Group "Utenti Desktop Remoto" -Member Administrator  
ovviamente sostituendo Administrator con l'utente/gruppo che si intende abilitare.


Disabiliare Desktop remoto tramite PowerShell
Per disattivare Desktop remoto tramite PowerShell basta eseguire i comandi
 Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 1  
 Disable-NetFirewallRule -DisplayGroup "Remote Desktop"  







lunedì 20 marzo 2023

PowerShell: Eseguire comandi su un sistema remoto

Il sistema operativo Windows 10 integra diversi strumenti per l'accesso remoto e sono disponibili anche numerosi strumenti di terze parti. La funzione di accesso remoto è molto utile ma può rappresentare un rischio per la sicurezza. Per questo motivo bisogna prestare attenzione che tali strumenti vengano utilizzati correttamente e solo dalle persone precedentemente abilitate. La maggior parte degli strumenti utilizzati per l'accesso remoto, tra cui anche PowerShell, richiede l'abilitazione da parte dell'utente per poter essere utilizzati.

PowerShell rappresenta uno strumento molto potente in ambiente Windows grazie al supporto completo del Common Information Model (CIM), all'accesso a Windows Management Instrumentation (WMI) e alle API .NET e Component Object Model (COM). Una delle caratteristiche più importanti per gli amministratori Windows, è probabilmente la possibilità di eseguire comandi PowerShell su sistemi remoti.

Fin dalle prime versioni di PowerShell, Microsoft ha aggiunto il supporto per l'esecuzione di cmdlet su sistemi remoti utilizzando il parametro -ComputerName (una funzionalità di .Net). La documentazione Microsoft per l'accesso remoto tramite -ComputerName indica che questa funzionalità di accesso remoto, in determinati cmdlet PowerShell, utilizza "diversi protocolli di comunicazione". Negli ambienti moderni in cui è consentito solo un accesso limitato a SMB, l'accesso remoto con alcuni cmdlet potrebbe non funzionare. Microsoft, invece, ha indicato che l'accesso remoto in PowerShell sarà realizzato con il protocollo WS-Management utilizzando HTTPS e il protocollo Simple Object Access Protocol (SOAP) utilizzando strutture dati XML.

I comandi messi a disposizione da Microsoft per l'accesso remoto ai sistemi Windows con PowerShell sono:
  • Enable-PSRemoting/Disable-PSRemoting
  • Enter-PSSession/Exit-PSSession
  • Invoke-Command
  • New-PSSession/Remove-PSSession

Nei sistemi Windows 10 e Windows 11, a differenza di Windows Server 2012R2 e successivi, l'accesso remoto PowerShell è disattivato per impostazione predefinita. Per attivare tale funzionalità è necessario eseguire il comando 
 Enable-PSRemoting -Force  
da PowerShell avviato come amministratore.

Il comando apporterà diverse modifiche alla configurazione locale di Windows:
  • Avvia il servizio WinRM, in ascolto sulla porta TCP 5985.
  • Modifica l'avvio automatico di WinRM.
  • Apporta modifiche al firewall di Windows per consentire l'accesso alla porta TCP 5985.
  • Configura la funzione di accesso remoto di WS-Management per l'uso di PowerShell.
PowerShell, Enable-PSRemoting
FIG 1 - PowerShell, Enable-PSRemoting
Nota: il remoting di PowerShell è accessibile solo quando il firewall di Windows è attivato su Rete di dominio o Rete privataWinRM non è disponibile per l'accesso alla rete pubblica.
Windows Firewall
FIG 2 - Windows Firewall
Per accedere alla sessione PowerShell remota, è necessario disporre dell'accesso come amministratore al sistema remoto. Ciò significa che l'utente collegato ha accesso come amministratore al sistema remoto o che, se il sistema fa parte di un dominio, si dispone dell'accesso come amministratore di dominio.

Per l'accesso remoto a PowerShell è possibile eseguire il cmdlet Enter-PSSession e specificate il nome dell'host di destinazione o l'indirizzo IP usando -ComputerName
 Enter-PSSession -ComputerName PC2

Se l'utente collegato non ha i privilegi di accesso remoto e si desidera utilizzare credenziali alternative, salvare le credenziali in una variabile con Get-Credential quindi fornire la variabile come argomento a Enter-PSSession utilizzando l'opzione -Credential
 $cred = Get-Credential  
 Enter-PSSession -ComputerName PC2 -Credential $cred  

Per terminare la sessione remota di PowerShell e tornare l sistema host, eseguire 
Exit-PSSession