Remote Desktop Services, anciennement Terminal Services, est un composant de Microsoft Windows (dans les versions clientes et serveur) qui permet à un utilisateur d'accéder à des applications et des données sur un ordinateur distant, via n'importe quel type de réseau. Son utilisation est optimisée sur des réseaux locaux (LAN) ou régionaux (MAN), fournissant des meilleurs latences et débits que des réseaux plus larges comme Internet.
Le composant Terminal Services consiste en la mise en œuvre par Microsoft d'une architecture terminal-serveur pour client léger, où les applications Windows ou même également le bureau entier de l'ordinateur exécutant les services de terminal sont rendus disponibles à l'aide d'un terminal client à distance. Le client peut aussi bien être un ordinateur à part entière exécutant n'importe quel système d'exploitation tant que le protocole réseau qui permet la transmission des services de terminal soit supporté. Un ordinateur de type barebone assez puissant peut aussi supporter le protocole réseau utilisé par Terminal Services (tel que Windows FLP). Avec Terminal Services, seule l'interface utilisateur d'une application est présentée au poste client. Chaque opération est redirigée au travers du réseau vers le serveur où toutes les opérations des applications sont effectuées. Terminal Services représente un contraste avec les systèmes de virtualisation d'applications tel que de Microsoft, avec lesquels les applications (stockées sur un serveur central) sont diffusées sur les postes clients à la demande et ensuite gérées par le poste client.
Historique Terminal Services a été initialement introduit sous Windows NT 4.0 Edition Terminal Server. Il a été amélioré de façon significative pour Windows 2000 et Windows Server 2003. Le protocole sous-jacent ainsi que le service ont été à nouveau modifiés pour Windows Vista et Windows Server 2008. Windows intègre deux applications clientes qui utilisent le service de terminal: L'Assistance à distance et Le Bureau à distance. La version initiale, disponible dans toutes les versions de Windows, permet à un utilisateur d'assister un autre utilisateur. La version actuelle, qui est disponible dans les versions Professionnelle et Media Center de Windows XP ainsi que les versions Windows Vista Business, Enterprise et Ultimate, permet à un utilisateur de se connecter à distance sur le système et d'accéder au bureau, aux applications et aux données sur le système mais également de contrôler celui-ci à distance. Dans la version cliente de Windows, le service de terminal ne permet qu'une seule connexion utilisateur à la fois, tandis que la version serveur des systèmes d'exploitation permet des connexions concurrentes.
Au départ, Remote Desktop Services (RDS) ou Services Bureau à distance est le nom donné à l'architecture centralisée qui permet à un utilisateur de se connecter sur un ordinateur distant utilisant Microsoft Terminal Services. Il utilise Remote Desktop Protocol (RDP) pour l'affichage sur le Terminal Léger (TL) ainsi que la communication des périphériques. Il a été implémenté à partir de la version R2 de Windows Server 2008.
En somme, RDS permet la virtualisation d'un poste en séparant l'environnement utilisateur de l'ordinateur (appelé TL) le résumant a un simple terminal. Un élément permet de gérer les machines virtuelles, et de répartir la charge des sessions utilisateur (en renvoyant la connexion utilisateur vers la machine virtuelle concernée) : le Connexion Broker.
RDS fait partie de la Virtual desktop infrastructure (VDI) mise en place par Microsoft.
Logiciel client Microsoft fournit le logiciel client Connexion au Bureau à Distance (appelé initialement Client Terminal Server), disponible dans la plupart des éditions 32 bits de Windows, y compris Windows Mobile, et Mac OS X d'Apple, qui permet à un utilisateur de se connecter à un serveur exécutant le service de terminal. Sous Windows, le client Terminal Services et le protocole Remote Desktop Protocol (RDP) utilisent par défaut le port TCP 3389, qui peut être modifié dans la base de registre. Il inclut également un contrôle ActiveX afin d'intégrer la fonctionnalité dans d'autres applications ou également une page Web. Une version Windows CE du logiciel client est également disponible. Les versions serveurs de Windows intègrent également le client Administration du bureau à distance (un mode spécifique du client Bureau à distance), qui permet d'établir une connexion à distance sur le serveur en ouvrant une nouvelle session, ou à partir de la version Windows 2003 Server sur la session 0 correspondant à la console du serveur. De là toutes les applications en ligne de commande peuvent être lancées. Des développeurs tiers ont créé des logiciels clients pour d'autres types de plate-forme, y compris le client open source rdesktop pour les plates-formes Unix.
Utilisation en entreprise Pour une entreprise, le service de terminal permet aux services informatiques d'installer des applications sur un serveur central. Par exemple, au lieu d'installer une base de données ou un logiciel de comptabilité sur tous les bureaux, l'application peut être installée sur un seul serveur et les utilisateurs distants se connectent et utilisent l'application à travers Internet ou le réseau. Cette centralisation simplifie les mises à jour, le dépannage et la gestion des logiciels. À partir du moment où les employés ont le client Bureau à Distance, ils pourront utiliser les logiciels d'entreprise. Le service de terminal peut également être couplé avec l'authentification Windows afin d'empêcher les utilisateurs non autorisés d'accéder aux applications et aux données.
Microsoft possède un accord de longue date avec Citrix Systems afin de faciliter le partage de technologie et de brevets de licence entre Microsoft Terminal Services et Citrix Virtual Apps (initialement Citrix MetaFrame). Dans cet arrangement, Citrix a accès au code source clé pour la plate-forme Windows permettant ainsi à leurs développeurs d'améliorer la sécurité et les performances des plates-formes Terminal Services. Fin les deux sociétés ont annoncé le renouvellement de cet accord pour 5 ans afin de couvrir les besoins pour Windows Vista.
Architecture
Le composant serveur du service de terminal (Terminal Server) écoute sur le port réseau TCP 3389 (termdd.sys). Lorsqu'un client RDP se connecte au serveur sur ce port, il se voit attribuer une ID de session unique (SessionID) et se voit associer à une nouvelle console de session (Session 0, clavier, souris et interface utilisateur uniquement). Le sous-système d'ouverture de session (winlogon.exe) et le sous-système graphique GDI sont ensuite initialisés et gèrent ensuite l'opération d'authentification et de présentation de l'interface utilisateur graphique (GUI). Ces binaires sont exécutés dans une nouvelle session plutôt que la session Console. Lors de la création d'une nouvelle session, les pilotes graphique et clavier/souris sont remplacés par des pilotes RDP spécifiques: RdpDD.sys et RdpWD.sys. Le fichier RdpDD.sys correspond au pilote de périphérique et encapsule les opérations de l'interface utilisateur dans un format qui est transmissible via le protocole RDP. RdpWD.sys agit comme le pilote de la souris et du clavier; il perçoit les entrées clavier et souris au travers de la connexion TCP et les présente au serveur comme des entrées clavier/souris. Il permet également la création de tunnels virtuels, qui permet à d'autres périphériques tels que les lecteurs, l'audio, les imprimantes, et les ports COM d'être redirigés (i.e.: le tunnel se substitue à ces périphériques. Le tunnel se connecte au client au travers de la connexion TCP; lorsque le tunnel est accédé pour des données, le client est informé de la requête qui est ensuite transmise au travers de la connexion TCP à l'application. Ce processus est entièrement réalisé par le client et le serveur de terminal avec l'aide du protocole RDP négociant le transfert correctement, et est entièrement transparent pour l'application). Les communications RDP sont chiffrées à l'aide du chiffrement RC4 128-bit. Avec l'arrivée de Windows Server 2003, le service de terminal peut utiliser un schéma de chiffrement compatible FIPS 140.
Une fois qu'un client initie une connexion et est informé du succès de l'invocation de la couche de service de terminal sur le serveur, il charge les périphériques ainsi que les pilotes clavier et souris. Les données de l'interface utilisateur reçues au travers de la connexion RDP sont décodées et retranscrites en Interface Utilisateur tandis que les entrées clavier et souris au niveau du client sont récupérées par le pilote et transmises via RDP au serveur. Il crée également les autres tunnels virtuels et met en place les redirections de périphériques. Les connexions RDP peuvent être chiffrées avec un niveau de chiffrement bas, moyen ou élevé. Avec un chiffrement bas, seuls les tunnels transmettant des données critiques, comme des mots de passe, sont chiffrés. Avec un chiffrement moyen, les paquets de l'Interface Utilisateur sont également chiffrés. Enfin avec le chiffrement élevé, les entrées clavier et souris sont aussi chiffrées.
Terminal Server
Terminal Server correspond au composant serveur du service de terminal. Il gère les opérations d'authentification des clients et rend les applications disponibles à distance. Il s'occupe également de restreindre les accès clients en fonction du niveau d'accès qui leur est attribué. Le serveur de terminal respecte les stratégies de restriction logicielle en place, comme la limitation d'accès à certains logiciels à un groupe spécifique d'utilisateurs. Les informations de la session distante sont stockées dans un dossier spécifique appelé Session Directory qui est localisé sur le serveur. Les dossiers de session sont utilisés afin de stocker l'état de la connexion distante et peuvent être utilisés pour reprendre une session interrompue. Le serveur de terminal doit également gérer ces dossiers. Les serveurs de terminal peuvent également être utilisés en mode cluster.
Dans Windows Server 2008, le service de terminal a été grandement amélioré. Lors de l'ouverture de session, si l'utilisateur a ouvert une session sur le poste client local avec un compte utilisateur de domaine, alors les mêmes informations d'ouverture de session peuvent être utilisées pour ouvrir la session distante. Cependant cela requiert que Windows Server 2008 soit le système d'exploitation du serveur de terminal et que celui du poste client soit Windows Server 2008 ou Windows Vista. De plus, le serveur de terminal peut fournir l'accès à une application unique plutôt qu'au bureau distant complet, et ce en utilisant une fonctionnalité appelée RemoteApp. L'accès Web au service de terminal (TS Web Access) permet d'accéder à une session de type RemoteApp via un Navigateur web. Windows 2008 inclut également le module de contrôle TS Web Access Web Part qui maintient la liste d'applications de type RemoteApps déployée sur le serveur et maintient également cette liste à jour. Une session d'un serveur de terminal peut également être encapsulée dans un tunnel au travers d'une passerelle via le service Passerelle Terminal Server (TS Gateway). Il permet l'accès au serveur de terminal depuis l'Internet par l'encapsulation du protocole RDP dans un tunnel sécurisé HTTPS. Windows Server 2008 ainsi que Windows Server 2003, y compris Windows Home Server peuvent agir en tant que passerelle Terminal Server. Le serveur de terminal peut également incorporer le gestionnaire de ressources Windows afin d'affiner l'utilisation des ressources par les applications distantes