Servizi Desktop remoto
Il componente server chiave di RDS è Terminal Server (termdd.sys
), che è in ascolto sulla porta TCP 3389. Quando un client RDP (Remote Desktop Protocol) si connette a questa porta, viene contrassegnato con un SessionID univoco e associato a una sessione di console appena generata (solo Sessione 0, tastiera, mouse e interfaccia utente in modalità carattere). Il sottosistema di accesso (winlogon.exe) e viene quindi avviato il sottosistema grafico GDI, che gestisce il lavoro di autenticazione dell’utente e presentazione della GUI., Questi eseguibili vengono caricati in una nuova sessione, anziché nella sessione della console. Quando si crea la nuova sessione, i driver di periferica grafica e tastiera / mouse vengono sostituiti con driver specifici per RDP: RdpDD.sys
e RdpWD.sys
. RdpDD.sys
è il driver di periferica e cattura le chiamate di rendering dell’interfaccia utente in un formato trasmissibile su RDP. RdpWD.sys
agisce come driver di tastiera e mouse; riceve input di tastiera e mouse tramite la connessione TCP e li presenta come input di tastiera o mouse., Consente inoltre la creazione di canali virtuali, che consentono ad altri dispositivi, come dischi, audio, stampanti e porte COM di essere reindirizzati, ovvero i canali fungono da sostituti di questi dispositivi. I canali si connettono al client tramite la connessione TCP; quando si accede ai canali per i dati, il client viene informato della richiesta, che viene quindi trasferita tramite la connessione TCP all’applicazione. L’intera procedura viene eseguita dal terminal server e dal client, con il RDP che media il trasferimento corretto, ed è completamente trasparente per le applicazioni., Le comunicazioni RDP sono crittografate utilizzando la crittografia RC4 a 128 bit. Windows Server 2003 in poi, può utilizzare uno schema di crittografia conforme a FIPS 140.
Una volta che un client avvia una connessione e viene informato di una chiamata riuscita dello stack dei servizi terminal sul server, carica il dispositivo e i driver della tastiera / mouse. I dati dell’interfaccia utente ricevuti tramite RDP vengono decodificati e resi come interfaccia utente, mentre gli input della tastiera e del mouse nella finestra che ospita l’interfaccia utente vengono intercettati dai driver e trasmessi tramite RDP al server., Crea anche gli altri canali virtuali e imposta il reindirizzamento. La comunicazione RDP può essere crittografata; utilizzando la crittografia bassa, media o alta. Con crittografia bassa, l’input dell’utente (dati in uscita) viene crittografato utilizzando un codice RC4 debole (40 bit). Con la crittografia media, i pacchetti UI (dati in entrata) vengono crittografati utilizzando anche questo codice debole. L’impostazione ” Crittografia elevata (non esportazione) “utilizza la crittografia RC4 a 128 bit e” Crittografia elevata (esportazione) ” utilizza la crittografia RC4 a 40 bit.
Terminal ServerEdit
Terminal Server è il componente server dei servizi Terminal., Gestisce il lavoro di autenticazione dei client, oltre a rendere le applicazioni disponibili in remoto. È anche affidato il compito di limitare i clienti in base al livello di accesso che hanno. Il Terminal Server rispetta i criteri di restrizione del software configurati, in modo da limitare la disponibilità di determinati software solo a un determinato gruppo di utenti. Le informazioni della sessione remota vengono memorizzate in directory specializzate, chiamate Directory di sessione che vengono memorizzate sul server., Le directory di sessione vengono utilizzate per memorizzare le informazioni sullo stato di una sessione e possono essere utilizzate per riprendere le sessioni interrotte. Il terminal server deve anche gestire queste directory. I Terminal Server possono essere utilizzati anche in un cluster.
In Windows Server 2008, è stato notevolmente revisionato. Durante l’accesso, se l’utente ha effettuato l’accesso al sistema locale utilizzando un account di dominio Windows Server, le credenziali dello stesso accesso possono essere utilizzate per autenticare la sessione remota., Tuttavia, ciò richiede che Windows Server 2008 sia il sistema operativo terminal server, mentre il sistema operativo client è limitato a Windows Server 2008, Windows Vista e Windows 7. Inoltre, il terminal server può essere configurato per consentire la connessione a singoli programmi, piuttosto che all’intero desktop, tramite una funzionalità denominata RemoteApp. Terminal Services Web Access (TS Web Access) rende una sessione RemoteApp invocabile dal browser Web. Include il controllo Web Part di TS Web Access che mantiene l’elenco di RemoteApps distribuiti sul server e mantiene l’elenco aggiornato., Terminal Server può anche integrarsi con Windows System Resource Manager per limitare l’utilizzo delle risorse delle applicazioni remote.
Terminal Server è gestito dallo snap-in di Terminal Server Manager Microsoft Management Console. Può essere utilizzato per configurare i requisiti di accesso e per applicare una singola istanza di sessione remota. Può anche essere configurato utilizzando Criteri di gruppo o Strumentazione di gestione di Windows., Tuttavia, non è disponibile nelle versioni client del sistema operativo Windows, in cui il server è preconfigurato per consentire una sola sessione e applicare i diritti dell’account utente sulla sessione remota, senza alcuna personalizzazione.
Remote Desktop GatewayEdit
Il componente del servizio Remote Desktop Gateway, noto anche come RD Gateway, può eseguire il tunnel della sessione RDP utilizzando un canale HTTPS. Ciò aumenta la sicurezza di RDS incapsulando la sessione con Transport Layer Security (TLS). Ciò consente anche l’opzione di utilizzare Internet Explorer come client RDP., Il client ufficiale MS RDP per macOS supporta RD Gateway a partire dalla versione 8. Questo è disponibile anche per iOS e Android.
Questa funzionalità è stata introdotta nei prodotti Windows Server 2008 e Windows Home Server.
Desktop remoto HTML5 Web ClientEdit
Alla fine del 2018 Microsoft ha rilasciato il desktop remoto HTML5 Web Client. Il client consente agli utenti di connettersi alle proprie app remote o ai propri desktop remoti senza utilizzare un client desktop remoto installato., Il client Web utilizza la porta protetta TLS 443 e non utilizza il gateway RD per trasportare il traffico, ma si basa esclusivamente sull’aspetto host della sessione desktop remoto dei servizi desktop remoto.
RolesEdit
Remote Desktop Gateway Consente agli utenti autorizzati di connettersi a desktop virtuali, programmi di app remote e desktop basati su sessioni su una rete privata o su Internet. Il ruolo di Remote Desktop Connection Broker Consente agli utenti di riconnettersi al desktop virtuale esistente, ai programmi RemoteApp e ai desktop basati su sessioni., Consente la distribuzione uniforme del carico tra i server host di sessione RD in una raccolta di sessioni o tra i desktop virtuali in pool in una raccolta di desktop virtuali in pool e fornisce l’accesso ai desktop virtuali in una raccolta di desktop virtuali. Remote Desktop Session Host Consente a un server di ospitare programmi RemoteApp come desktop basati su sessioni. Gli utenti possono connettersi ai server host di sessione RD in una raccolta di sessioni per eseguire programmi, salvare file e utilizzare risorse su tali server. Gli utenti possono accedere al server host di sessione Desktop remoto utilizzando il client di connessione desktop remoto o utilizzando i programmi RemoteApp., Remote Desktop Virtualization Host Consente agli utenti di connettersi ai desktop virtuali utilizzando RemoteApp e Connessione desktop. Remote Desktop Web Access Consente agli utenti di accedere a RemoteApp e Connessione Desktop tramite il menu Start o tramite un browser Web. RemoteApp e Desktop Connection fornisce agli utenti una visualizzazione personalizzata di programmi RemoteApp, desktop basati su sessioni e desktop virtuali. Le licenze desktop remoto Consentono a un server di gestire le licenze di accesso client RDS (RDS CALs) necessarie per ogni dispositivo o utente per connettersi a un server host di sessione desktop remoto., Le CAL RDS vengono gestite utilizzando l’applicazione Remote Desktop Licensing Manager.
RemoteAppEdit
RemoteApp (o TS RemoteApp) è una modalità speciale di RDS, disponibile in Windows Server 2008 R2 e versioni successive, in cui la configurazione della sessione remota è integrata nel sistema operativo client. Il client RDP 6.1 viene fornito con Windows XP SP3, KB952155 per gli utenti Windows XP SP2, Windows Vista SP1 e Windows Server 2008. L’interfaccia utente per RemoteApp viene visualizzata in una finestra sul desktop locale ed è gestita come qualsiasi altra finestra per le applicazioni locali., Il risultato finale di questo è che le applicazioni remote si comportano in gran parte come le applicazioni locali. Il compito di stabilire la sessione remota e di reindirizzare le risorse locali all’applicazione remota è trasparente per l’utente finale. Più applicazioni possono essere avviate in una singola sessione RemoteApp, ognuna con le proprie finestre.
Un RemoteApp può essere impacchettato come un.rdp
file o distribuito tramite un.msi
Pacchetto di installazione di Windows., Se confezionato come un.rdp
file (che contiene l’indirizzo del server RemoteApp, schemi di autenticazione da utilizzare, e altre impostazioni), un RemoteApp può essere lanciato facendo doppio clic sul file. Richiamerà il client di connessione desktop remoto, che si connetterà al server e renderà l’interfaccia utente. Il RemoteApp può anche essere confezionato in un database di Windows Installer, l’installazione che può registrare il RemoteApp nel menu Start, nonché creare collegamenti per lanciarlo. Un RemoteApp può anche essere registrato come gestore per i tipi di file o URI., L’apertura di un file registrato con RemoteApp invocherà prima la connessione Desktop remoto, che si collegherà al terminal server e quindi aprirà il file. Qualsiasi applicazione a cui è possibile accedere tramite Desktop remoto può essere servita come RemoteApp.
Windows 7 include il supporto integrato per la pubblicazione di RemoteApp, ma deve essere abilitato manualmente nel registro di sistema, poiché non esiste una console di gestione RemoteApp nelle versioni client di Microsoft Windows.,
Condivisione desktop di Windows
In Windows Vista in poi, Terminal Services include anche una funzionalità di condivisione desktop multi-party nota come Condivisione desktop di Windows. A differenza di Terminal Services, che crea una nuova sessione utente per ogni connessione RDP, Windows Desktop Sharing può ospitare la sessione remota nel contesto dell’utente attualmente connesso senza creare una nuova sessione e rendere disponibile il Desktop o un sottoinsieme di esso su RDP. Condivisione desktop di Windows può essere utilizzato per condividere l’intero desktop, una regione specifica, o una particolare applicazione., Windows Desktop Sharing può essere utilizzato anche per condividere desktop multi-monitor. Quando si condividono le applicazioni singolarmente (piuttosto che l’intero desktop), le finestre vengono gestite (siano esse minimizzate o massimizzate) indipendentemente dal server e dal lato client.
La funzionalità viene fornita solo tramite un’API pubblica, che può essere utilizzata da qualsiasi applicazione per fornire funzionalità di condivisione dello schermo. Windows Desktop Sharing API espone due oggetti: RDPSession
per la sessione di condivisione eRDPViewer
per il visualizzatore., È possibile creare un’istanza di più oggetti visualizzatore per un oggetto Sessione. Un visualizzatore può essere un visualizzatore passivo, che è solo in grado di guardare l’applicazione come uno screencast, o un visualizzatore interattivo, che è in grado di interagire in tempo reale con l’applicazione remota. L’oggettoRDPSession
contiene tutte le applicazioni condivise, rappresentate comeApplication
oggetti, ciascuno conWindow
oggetti che rappresentano le finestre sullo schermo. I filtri per applicazione catturano le finestre dell’applicazione e le impacchettano come oggettiWindow
., Un visualizzatore deve autenticarsi prima di poter connettersi a una sessione di condivisione. Questo viene fatto generando un Invitation
usandoRDPSession
. Contiene un ticket di autenticazione e una password. L’oggetto viene serializzato e inviato agli spettatori, che devono presentare Invitation
durante la connessione.
L’API di condivisione desktop di Windows viene utilizzata da Windows Meeting Space e Windows Remote Assistance per fornire funzionalità di condivisione delle applicazioni tra peer di rete.