You are on page 1of 25

Rapport de stage

Etude des spcifications techniques d'utilisation du protocole RDP

Ralis par : Amine AL KADERI

Encadr par : Mr Belkasmi Redouane

Anne universitaire : 2008-2009

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Table des matires


Introduction

Chapitre 1 : Gnralits sur le protocole RDP 1) - Remote Desktop Protocol (RDP) : Vue d'ensemble 2) - Terminal Services 3) - Architecture du protocole RDP a. Connexion TCP standard au serveur travers le port 3389 b. Initialisation de la demande de connexion RDP c. Configuration du protocole MCS (T.125) d. Couche RDP Chapitre 2 : Mise en uvre du protocole RDP 1) - Plate-forme Windows a. Les clients Connexion au Bureau Distance Connexion Web Bureau Distance Remote Desktops Snap-In Assistance Distance b. L'architecture des "Terminal Services" sous Windows Server 2003 c. Windows Terminal Server API La programmation de l'API des Services Terminal Description des lments majeurs du fichier d'en-ttes "WTSAPI32.h" - Serveur - Utilisateurs et sessions - Processus - Divers Les Canaux Virtuels avec WTSAPI32 Modle de code source 2) - Plate-forme Linux : a. Un client Terminal Server sous Linux : RDesktop b. Un Terminal Server sous Linux : XRDP Conclusion

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Introduction
Dans le but denrichir les informations acquises pendant le cursus universitaire et de mieux connatre le domaine des tlcommunications, les tudiants de la premire anne du cycle ingnieur de lEcole National Des Sciences Appliques sont tenus effectuer un stage dinitiation dune dure d'un mois au sein dun tablissement (socit ou entreprise). Cette exprience constitue une tape importante et ncessaire afin dassurer une formation complte et continue aux tudiants. Mon stage a t effectu chez la socit MindWare1 Oujda et traite une tude des spcifications techniques d'utilisation du protocole RDP . Le travail a port sur ltude du protocole sous sa plate-forme originaire Windows et son implantation par la communaut OpenSource. Par ailleurs, larchitecture du protocole, linstallation des outils lui tant relatifs, sa mise en uvre et une ide gnrale sur sa programmation vont tre trait au fur et mesure dans ce rapport.

http://www.mindware.ma/

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Chapitre 1
Gnralits sur le protocole RDP
Remote Desktop Protocol (RDP) a t dvelopp par Microsoft en 1998 pour Windows NT 4.0 Terminal Server Edition. D'autres versions de ce protocole ont t introduites avec des systmes dexploitation Microsoft ultrieurs. La version actuelles de ce protocole est 6.1; elle est inclue dans Windows Server 2008. RDP est bas sur la famille des protocoles ITU T.120(*) et encapsul en TCP. C'est un protocole multi-canal implant dans une architecture client-serveur : il permet la transmission de donnes (linterface graphique, en loccurrence) partir du serveur et en contrepartie- les donnes chiffres saisies avec le clavier et la souris du client. RDP prend en charge jusqu' 64.000 canaux distincts pour la transmission de donnes.

____________________________________________________________________________
ITU T.120 : la famille T.120 des "Protocoles de donnes pour confrence multimdia" recommande par lUIT "l'Union Internationale des Tlcommunications" (en anglais : ITU pour "International Telecommunication Union" ).
(*)

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

1) - Remote Desktop Protocol (RDP) : Vue d'ensemble


Le protocole RDP fournit une capacit d'affichage et de contrle distance via des connexions rseau permettant une communication entre le serveur Terminal Server et le client Terminal Server. Ainsi, il inclut plusieurs caractristiques dont : a. Le chiffrement des donnes: Les connexions RDP peuvent tre chiffres avec un niveau de chiffrement RC4 bas, moyen ou lev. Avec un chiffrement bas, seul les canaux transmettant des donnes critiques, comme des mots de passes, sont chiffrs. Avec un chiffrement moyen, les paquets de l'Interface Utilisateur sont galement chiffrs. Enfin avec le chiffrement lev, les entres clavier et souris sont aussi chiffres. b. La mise en cache des bitmaps : La mise en cache des bitmaps permet de placer des bitmaps frquemment utilises, comme celles reprsentant les boutons "OK" et "Annuler", dans un fichier situ sur l'ordinateur client. Les performances seront donc amliores, car la quantit d'informations d'affichage devant transiter par une connexion sera rduite. c. La redirection du presse-papier : Les utilisateurs peuvent supprimer, copier et coller des textes et des graphiques entre les applications qui sont excutes sur l'ordinateur local et celles qui tournent dans une session Services Terminal Server, et entre les sessions. d. Les Canaux Virtuels : Les Canaux Virtuels sont des extensions de logiciel qui peuvent tre utilises pour ajouter des amliorations fonctionnelles une application de Terminal Services: Ils permettent une communication sans perte de donnes entre les composants du client et du serveur via la connexion RDP. Les Canaux Virtuels permettent, entre autres, les amliorations suivantes: redirection de l'impression, accs client au systme de fichiers local, support de types spcifiques de matriel, de l'audio, des ports COM...

2) - Terminal Services
Terminal Services (appel dans les dernires versions de Windows "Remote Desktop Services") est un ensemble de services permettant un serveur Windows sur lequel ils sont en cours d'excution de recevoir simultanment plusieurs sessions distantes, prsenter l'interface utilisateur des applications aux postes clients (Windows ou tiers) et rediriger chaque opration, au travers du rseau, vers le serveur qui sous lequel elles sont excutes. De ce fait, Terminal Services et RDP exigent une architecture Client lger/Serveur Terminal (Thin client/Terminal Server) pour fonctionner.

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

3) - Architecture du protocole RDP


A l'origine, RDP a t conu pour supporter plusieurs topologies rseau. Dans son tat actuel, il ne peut tre excut que via les rseaux TCP/IP, et similairement plusieurs protocoles rseau, il est intrieurement divis en plusieurs couches. La figure suivante prsente un modle simplifi de la pile du protocole RDP, version 5.1 :

Figure 1

La structure de cette pile a t vrifie en analysant une capture du trafic rseau obtenu avec le logiciel Wireshark lors de ltablissement dune connexion entre le client (192.168.0.1:4325) et le serveur (192.168.0.3:3389) avec loutil de Connexion Bureau distance (voir plus loin) de Microsoft.

Figure 2

Dans ce qui suit, une description de la pile RDP (du bas vers le haut) et les diffrents types des paquets intervenant lors d'une session de communication.

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

a. Connexion TCP standard au serveur travers le port 3389 : Le serveur effectue une ouverture passive en attendant une connexion un port TCP spcifi (3389 par dfaut). Aprs, le client tablit une ouverture active en ngociant une connexion avec le serveur. Par consquent, aprs deux paquets ARP pour la rsolution des adresses, trois segments TCP incluant la demande de synchronisation [SYN] et laccus de rception [ACK] sont changs. Remarque : En analysant le premier segment TCP, on constate les numros des ports ouverts par le client et le serveur afin dtablir une connexion TCP entre eux. b. Initialisation de la demande de connexion RDP : Au niveau de cette couche, une connexion ISO-sur-TCP/IP est tablit travers un protocole X.224(*) et ce en changeant deux paquets encapsuls dans le protocole TPKT(*). Connection Request : Demande de connexion envoye au serveur. Connection Confirm : Confirmation de la connexion envoye au client. Cette couche fournit un canal de transmission pour les paquets MCS de la couche suivante. c. Configuration du protocole MCS (T.125) : Il s'agit d'un trafic de paquets volumineux pour la configuration de la connexion afin de dmarrer la session RDP. Aprs la confirmation de la connexion X.224 de la couche prcdente, deux paquets T.125(*) remarquables sont transmis : MCS Connect-Initial (envoy au serveur): un paquet contenant un jeu de paramtres dterminer par le serveur (exemples: nombre maximal de canaux rserver au client, nombre maximal d'utilisateur..). Les valeurs maximales et minimales possible pour chaque paramtres sont aussi inclues dans le paquet.

________________________________________________________________________________
X.224 : Ce protocole assure le service de transport en mode connexion du model OSI. Il est ncessaire car la famille des protocoles T.120, sur laquelle est bas le protocole RDP, ncessite un protocole de transport compatible avec X.224. Ce protocole est quivalent la norme internationale ISO DP 8073 dcrite par la RFC 905 de l'IETF. TPKT : un protocole utilisant TCP comme son protocole de transport avec un trafic travers le port 102. Spcifiquement, RDP utilise le protocole TPKT comme protocole de transport, mais sur le port 3389 (par dfaut) au lieu de 102. T.125 : un protocole de la famille T.120 ; il dcrit le protocole de Service de Communication Multipoint MCS (Multipoint Communication Service Protocol). T.125 dfinit des procdures pour le transfert de donne et les informations de contrle, ainsi que leur structure et chiffrement.
(*) (*) (*)

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

MCS Connect-Response (envoy au client): une rponse la requte prcdente (initialisation) prcisant la valeur exacte pour chaque paramtre. Ce paquet contient aussi les informations de chiffrement RSA.

Quelques paquets transmis aprs sont destins gnralement la gestion du domaine et la demande d'un identifiant pour l'utilisateur qui sera utilis dans d'autres requtes. Ainsi quune srie de requtes/confirmations de jointure de chaque canal de connexion. d. Couche RDP : C'est la couche au niveau de laquelle une session RDP proprement dite est dmarre : il y est dfini comment les diffrents types de donnes sont envoys et exploits. Le protocole majoritaire ici est une proprit de Microsoft. Les oprations effectues chacun des deux extrmits peuvent tre rsums ainsi : Client -> Serveur : les donnes du clavier et la souris sont transmises via les canaux pralablement allous. Ces donnes sont encapsules dans des paquets TPKT. Serveur -> Client : Transfert des informations d'affichage et les redirections (du son, du presse-papier... etc.). Le protocole mis en uvre ici est RDP (notamment partir de la version 5, si on tient compte d'un support plus large des redirections/canaux virtuels).

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Chapitre 2
Mise en uvre du protocole RDP
Ce chapitre reprsente la partie la plus pratique du stage. Il porte sur l'utilisation des services du protocole RDP dans diffrents outils de connexion au bureau distance ainsi que leur mcanisme l'intrieur du serveur. Par ailleurs, il y a une mise au point des lments de programmation permettant l'accs aux fonctionnalits du Serveur Terminal partir des applications personnelles dveloppes. Le but principal est de montrer la mise en uvre de RDP sous Windows compare son quivalent sous Linux, toute en soulignant dans cette dernire- l'extension de son implantation et la mise en valeur de la compatibilit entre les deux plates-formes. Les outils utiliss pour mener cette tude seront prciss au fur et mesure de ce chapitre.

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

1) - Plate-forme Windows :
a. Les clients Terminal Server : Microsoft fournit plusieurs clients pour la Connexion au Bureau Distance permettant un utilisateur distant de se connecter un serveur excutant les Services Terminal. Un contrle ActiveX(*) est galement inclus afin d'intgrer la fonctionnalit dans d'autres applications ou galement une page Web. Les principaux outils de connexion au bureau distance : Connexion au Bureau Distance : Le logiciel client standard de connexion au bureau distance. Appel initialement Client Terminal Server (mstsc.exe) ; il permet un utilisateur d'tablir et maintenir une connexion un serveur excutant les Services de Terminal. Connexion Web Bureau Distance : L'outil de Connexion Web Bureau Distance offre virtuellement la mme fonctionnalit que le client Connexion au Bureau Distance, mais en la publiant sur le web. Lorsqu'il est inclus dans une page web, la connexion Web Bureau distance peut ouvrir une session distance sur le serveur Terminal. Ce composant doit tre install sur un serveur Web sur lequel les Services Internet (IIS) et les Pages Active Server (ASP) sont activs. Remote Desktops Snap-In : Le composant logiciel enfichable Bureaux distance ou Remote Desktops snap-in) permet de grer plusieurs ordinateurs avec une seule machine distante. En utilisant "Remote Desktops snap-in", il est possible d'tablir une Connexion au Bureau Distance plusieurs serveurs (y compris les serveurs Terminal) utilisant Windows 2000 Server ou Windows Server 2003. Assistance Distance : L'assistance distance est un outil prsent sur Windows XP qui permet un utilisateur distant d'afficher le bureau d'un autre utilisateur. Avec l'autorisation de ce dernier, il peut mme prendre le contrle de l'ordinateur hte afin de rsoudre des problmes distance. Dans ltude relative Windows, je me suis content dutiliser le client Connexion au Bureau Distance.

________________________________________________________________________________
ActiveX : une technique de composants logiciel (comme les DLL) cre par Microsoft. Elle est utilise en programmation pour permettre le dialogue entre programmes.
(*)

10

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

b. L'architecture des "Terminal Services" sous Windows Server 2003 : A titre d'exemple, on va rsumer dans cette partie l'architecture du fonctionnement des Services Terminal (Terminal Services) sous Windows Server 2003, depuis le dmarrage jusqu' l'tablissement de la connexion et l'ouverture des sessions distantes : Aprs le dmarrage de Windows Server 2003, le processus du service Terminal Server (termsrv.exe) est lanc. Chaque connexion au sreveur Terminal Server se voit attribu un identifiant de session unique (SessionID) et chaque processus cr au niveau d'une session se voit associ au SessionID. La session console (clavier, souris et interface utilisateur uniquement) est toujours la premire se connecter au serveur, ainsi SessionID 0 lui est attribu. Cette session dmarre comme une session Windows Server 2003 normale en chargeant les pilotes vido, souris et clavier configurs de Windows. Dans une autre session (avec un nouvel SessionID) qui va recevoir les connections venant des clients, le sous-systme d'ouverture de session (winlogon.exe) et le sous-systme graphique GDI sont initialiss et vont ensuite grer respectivement l'opration d'authentification et de prsentation de l'interface utilisateur graphique (GUI). Contrairement la session console, les pilotes graphique et clavier/souris des sessions du client Terminal Server sont des pilotes RDP spcifiques: RdpDD.sys et RdpWD.sys. Le fichier RdpDD.sys correspond au pilote graphique; il encapsule les oprations 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 peroit les entres clavier et souris au travers de la connexion TCP et les prsente au serveur comme des entres clavier/souris. Il permet galement la cration de canaux virtuels qui permettent la redirection des ressources de telle sorte que les applications distantes peuvent utiliser les ressources de l'ordinateur client. Les pilotes dpDD.sys et RdpWD.sys permettent au client RDP d'tre disponible interactivement distance. Par ailleurs, le Terminal Server est configur par dfaut couter sur le port TCP 3389 les connexions des clients RDP via le pilote du protocole RDP termdd.sys.

Remarque : Tous les services et outils lis aux Services Terminal ont t renomms spcialement dans Windows Server 2008 R2. Le tableau suivant liste la fois les anciens et les nouveaux noms en anglais :

11

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Ancien Nom Terminal Services Terminal Server Terminal Services Client Terminal Services Licensing (TS Licensing) Terminal Services Gateway (TS Gateway) Terminal Services Session Broker (TS Session Broker) Terminal Services Web Access (TS Web Access) Terminal Services Virtualization

Nouveau Nom Remote Desktop Services Remote Desktop Session Host Server (RD Session Host Server) Remote Desktop Connection Remote Desktop Licensing (RD Licensing) Remote Desktop Gateway (RD Gateway) Remote Desktop Connection Broker (RD Connection Broker) Remote Desktop Web Access (RD Web Access) Remote Desktop Virtualization Host (RD Virtualization Host)

c. Windows Terminal Server API : L'API des Services Terminal est un ensemble d'appels de fonctions dans la bibliothque de liaison dynamique "WTSAPI32.dll" (pour "Windows Terminal Services Application programming interface 32-bits"). Cette DLL est prsente dans plusieurs systmes dexploitation Microsoft Windows (versions Client et Serveur). "WTSAPI32.dll" redirige les appels aux fonctions du Serveur Terminal vers les composants du systme Windows appropris. Donc, l'appel aux fonctions TS API permet l'accs aux fonctionnalits du Serveur Terminal partir des applications personnelles dveloppes. La programmation de l'API des Services Terminal : Les principes gnraux de la programmation des Services Terminal sont: 1) Rcuprer les noms des Serveurs Terminal requis. 2) Ouvrir un identificateur (handle) vers un serveur terminal spcifique. 3) Excuter les tches spcifies, telles que l'numration et la gestion des sessions utilisateurs ou des processus. 4) Librer les ressources alloues, telles que la mmoire tampon. 5) Fermer les identificateurs (ouverts) vers le serveur terminal. Comme outils de dveloppement, jai utilis : - Microsoft Visual C++ 9.0 Express Edition, comme environnement de dveloppement intgr. - Microsoft Platform SDK for Windows Server 2003 R2, contenant l'ensemble des bibliothques et documentations ncessaires.

12

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Ces deux outils sont tous gratuits et tlchargeables depuis le site web officiel de Microsoft. Les en-ttes des fonctions WTSAPI32 sont dclars dans le fichier "WtsApi32.h", et la bibliothque utiliser est "WtsApi32.lib". Description des lments majeurs du fichier d'en-ttes "WtsApi32.h" : Les tableaux suivants donnent une description gnrale des fonctions de l'API des Services Terminal. Comme lensemble des dfinitions et explications est disponible sur la documentation de la Platform SDK est sur le site web officiel de la MSDN : http://msdn.microsoft.com/fr-fr/library/aa383468(en-us,VS.85).aspx je me suis content de catgoriser et donner une brve description pour chacune des fonctions. Remarque : Pour lister toute les fonctions appelables de la DLL WtsApi32, il est possible dutiliser la commande de Visual Studio 9.0 dumpbin sous la forme suivante :
> dumpbin /exports c:\windows\system32\wtsapi32.dll

Serveur :

Nom de la fonction
WTSCloseServer

Dfinition Ferme un identificateur (handle) ouvert vers un Serveur Terminal. Ouvre un identificateur vers un serveur terminal spcifi. Retourne la liste de tous les Serveurs Terminal dans un domaine Windows NT.

WTSOpenServer

WTSEnumerateServers

13

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Sessions :
Nom de la fonction
WTSDisconnectSession

Dfinition Dconnecte l'utilisateur enregistr de la session Terminal Services sans fermer la session. Rcupre la liste des sessions sur un Serveur Terminal spcifi. Obtient laccess token (*) principal de lutilisateur enregistr spcifi par le sessionID ___________________________________________
Access token : est un objet contenant les descripteurs de scurit dune session didentification et de lutilisateur enregistr.
(*)

WTSEnumerateSessions

WTSQueryUserToken

WTSQuerySessionInformation

Rcupre les informations sur une session spcifi sur un Serveur Terminal bien dtermin. Cette fonction peut tre utilise pour vrifier les informations d'une session sur un Serveur Terminal local ou distant. Dconnecte une session des Services Terminal. Rcupre les informations de configuration pour un utilisateur sur un contrleur de domaine ou un Serveur Terminal spcifi. Modifie les informations de configuration pour un utilisateur sur un contrleur de domaine ou un Serveur Terminal spcifi. Enregistre la fentre spcifie afin de recevoir des notifications de changement de session. Annule lenregistrement dune fentre spcifie de sorte qu'elle ne reoit plus de nouvelles notifications de changement de session.

WTSLogoffSession WTSQueryUserConfig

WTSSetUserConfig

WTSRegisterSessionNotification

WTSUnRegisterSessionNotification

14

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Processus :
Nom de la fonction
WTSEnumerateProcesses

Dfinition Retourne des informations propos des processus actifs sur un Serveur Terminal spcifi. Met fin un processus spcifi sur un Serveur Terminal bien dtermin.

WTSTerminateProcess

Divers :
Nom de la fonction
WTSFreeMemory WTSSendMessage

Dfinition Libre la mmoire alloue par une fonction des Services Terminal. Affiche une bote de message sur le bureau du client dune session Services Terminal spcifie. Eteint et redmarre optionnellement le Serveur Terminal spcifi. Ce type de fonctions requiert un privilge chez lutilisateur pour quelles puissent tre excutes distance. Attend un vnement des Services Terminal avant de retourner lappelant.

WTSShutdownSystem

WTSWaitSystemEvent

15

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Les Canaux Virtuels avec WTSAPI32 : Gres par le pilote RdpWD.sys lors d'une connexion au bureau distance, les applications des Canaux Virtuels comportent deux parties: un composant client et un composant serveur : Le composant serveur : c'est tout composant d'une application excutable sur le Serveur Terminal et utilisant les Canaux Virtuels. Il doit tre une application -lance auparavant- en mode utilisateur qui tourne dans une session client sur le serveur Terminal.

L'application serveur peut appeler la fonction WTSVirtualChannelOpen pour ouvrir un identificateur (handle) de Canal Virtuel. L'application va pouvoir aprs utiliser l'identificateur dans l'appel une des fonctions suivantes :

Function WTSVirtualChannelClose WTSVirtualChannelPurgeInput

Description Ferme lidentificateur dun canal virtuel ouvert. Clients Citrix ICA: Supprime toutes les donnes dentre en attente envoyes depuis le client vers le serveur sur un canal virtuel spcifique.

WTSVirtualChannelPurgeOutput Clients Citrix ICA: Supprime toutes les donnes de sortie en attente envoyes depuis le client vers le serveur sur un canal virtuel spcifique. WTSVirtualChannelQuery Retourne des informations propos dun canal virtuel spcifique. Lit des donnes depuis lextmit-serveur dun canal virtuel spcifique. Envoie (Ecrit) des donnes partir de l'extrmit-client du canal virtuel vers une application associe sur l'extrmitserveur.

WTSVirtualChannelRead

WTSVirtualChannelWrite

Le composant client : cest une DLL charge en mmoire vive durant l'initialisation des Services Terminal sur l'ordinateur Client.

Si le composant serveur est lanc, il est possible de le rendre disponible aux ordinateurs clients avec le Contrle ActiveX de l'Accs au Bureau Distance (Remote Desktop ActiveX contrle: Mstscax.dll). C'est dire que l'on peut remplacer le client RDP standard (Mstsc.exe) par un nouveau client imbriquant le contrle ActiveX RDP.

16

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Figure 3

Remarque : Ils existent d'autres fonctions et structures n'appartenant pas l'API des Services Terminal et qui sont utilisables pour la programmation des canaux virtuels : - Les fonctions et structures dclares dans le fichier "CChannel.h" sont utilises pour l'API du Client Canal Virtuel (composant client). - Les fonctions et structures dclares dans le fichier "PChannel.h" concernent l'en-tte du protocole du Canal Virtuel. Ce fichier contient des lments communs au client et au serveur. Modle de code source :
int main(int argc, char* argv[]) { char* serverName = "TerminalServer1"; HANDLE serverHandle; PWTS_PROCESS_INFO pProcessInfo; DWORD* nbrWPIStructs; // Rcuprer le nom du serveur terminal // Ouvrir un identificateur (handle) vers un serveur terminal serverHandle = WTSOpenServer(ServerName); // Excuter les tches spcifies printf("Handle du serveur en cours : %d\n",WTS_CURRENT_SERVER_HANDLE); printf("Handle du serveur TerminalServer1 : %d\n",serverHandle); WTSEnumerateProcesses(serverHandle,0,1,pProcessInfo,nbrWPIStructs); // Librer les ressources alloues WTSFreeMemory(pProcessInfo); // Fermer les identificateurs (ouverts) vers le serveur terminal. WTSCloseServer(serverHandle); system("pause"); return 0; }

17

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Commentaires : - TerminalServer1 est le nom de hte dun ordinateur local excutant les Services Terminal Server. - PWTS_PROCESS_INFO est un pointeur sur un tableau de structures WTS_PROCESS_INFO (type dfinit) contenant des informations propos des processus en cours d'xecution sur des Serveurs Terminal spcifis. - nbrWPIStructs est ici un pointeur sur une DWORD (mot de 32 bits) constituant un paramtre de la fonction WTSEnumerateProcesses et qui contient le nombre de strucutures WTS_PROCESS_INFO retournes dans le tampon PWTS_PROCESS_INFO. - WTS_CURRENT_SERVER_HANDLE est une constante contenant un identificateur vers le Serveur Terminal sur lequel lappliquation est en cours dexcution.

2) - Plate-forme Linux :
Cette dernire partie porte sur la mise en uvre du protocole RDP dans un rseau mixte Linux/Windows. La mise en rseau des machines (clients et serveurs) a t simule avec le logiciel VirtualBox. L'architecture tudie est reprsente dans la figure 4 :

Figure 4

a. Un client Terminal Server sous Linux : RDesktop Etant une proprit de Microsoft, la mise en uvre Open-Source du protocole RDP a d faire appel l'ingnierie inverse. Par consquent, RDesktop a t la premire implantation de ce protocole dans le monde de Linux/Unix : c'est un client libre pour les Services Terminal de Windows capable d'accder au bureau d'un utilisateur Windows distant. Il supporte plusieurs serveurs dont : Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows XP, Windows Vista et Windows NT Server 4.0. Jai utilis Rdesktop sur la machine (Debian, 192.168.0.2) pour accder la fois au Serveur Terminal Windows (Windows XP #1, 192.168.0.3) et au Serveur Terminal Linux (CEntOS, 192.168.0.4).

18

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Exemple de lignes de commandes : Accder au Serveur Terminal Windows (Windows XP #1, 192.168.0.3) :
$ rdesktop -k fr -g 700x500 -u xpamindeed -p motdepasse 192.168.0.3

-k fr : clavier franais -g : gometrie, resolution de l'ecran Accder au Serveur Terminal Linux (CEntOS, 192.168.0.4) :
$ rdesktop -f 192.168.0.4

-f : mode plein ecran.

b. Un Terminal Server sous Linux : XRDP XRDP est un logiciel Open-Source, bas sur RDesktop, utilisant le protocole RDP afin de prsenter une interface graphique l'utilisateur distant. Le but du projet XRDP est d'laborer un Serveur Termianl Linux compltement fonctionnel, capable de recevoir des connexions venant de RDesktop et les clients d'accs au bureau distance de Microsoft. Installation du logiciel : Elments pr requis : Les diffrents outils et composants pr requis pour l'installation de XRDP sont les suivants : build-essentials (gcc et make): Outils ncessaires pour la compilation des codes C. libpam-dev (ou: pam-devel): les fichiers d'enttes et les bibliothques statiques pour le dveloppement des applications base de PAM(*). libssl-dev (ou: openssl-devel): les fichiers d'enttes, les bibliothques et la documentation pour le dveloppement des applications base de SSL. Subversion (svn) : le systme de gestion de versions. Essentiel pour pouvoir installer le composant X11rdp partir d'un dpt SVN (voir aprs).

________________________________________________________________________________
PAM : Pluggable Authentication Modules (Modules d'Authentification Enfichables) est un mcanisme flexible d'authentification d'utilisateurs labor par Sun Microsystems et support par plusieurs architectures Linux/Unix. Il permet d'intgrer diffrents schmas d'authentification (cls publiques, login/mot de passe...) de bas niveau dans des programmes de haut niveau, permettant de ce fait de rendre indpendants du schma les logiciels rclamant une authentification.
(*)

19

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Configurations : Configuration du pare-feu : our que les clients RDP puissent accder au serveur XRDP, le port TCP/UDP numro 3389 doit tre autoris travers le pare-feu. Pour ce faire, jai ajout les deux lignes suivantes au fichier de configuration du pare-feu et des rgles d'iptables "/etc/sysconfig/iptables" :
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 7777 -j ACCEPT

avant la dernire ligne :


-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

Remarque : Ces configurations sont valables juste pour les distributions Linux base de RedHat, comme CEntOS et Fedora.

Installation du serveur x11rdp: X11rdp est Le Serveur Terminal Linux proprement dit; il n'est pas compil/install avec le paquetage XRDP, donc il faut le faire sparment. Pour ce, il est possible de tlcharger partir du dpt SVN du projet XRDP un code-source modifi de Xorg 7.1 qui, une fois compil, va gnrer le fichier binaire X11rdp. Tlcharger le code source :
$ svn co svn://server1.xrdp.org/srv/svn/repos/main/x11rdp_xorg71

Compiler le code :

$ sh buildx.sh

Description des composants et du fonctionnement de XRDP : Les diffrents fichiers de XRDP sont par dfaut dans deux emplacements principaux : /etc/xrdp et /usr/local/xrdp. Le tableau suivant dcrit en bref les fonctions des fichiers les plus importants.

Nom du fichier
/etc/xrdp/xrdp.ini

Fonction
Il contient des configurations pour XRDP concernant les paramtres pour chaque type de session. Fichier des paramtres de la langue du clavier.

/etc/xrdp/rsakeys.ini

20

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

/usr/local/xrdp/sesman

Il gre les sessions dutilisateurs en les authentifiant et puis dmarrant le serveurX appropri. Un fichier de configuration de sesman. Il contient plusieurs sections : [Globals] : configurations globales de sesman. [Logging] : paramtres du journal des vnements. [Security] : paramtres de contrle d'accs. [Sessions] : paramtres de gestion de session. Un serveurX sous Linux du protocole RDP

/etc/xrdp/sesman.ini

/usr/local/xrdp/xrdp

/usr/local/xrdp/sesrun

Dmarre une session en utilisant sesman. Il est utile pour faire des tests.

/usr/local/xrdp/sessvc Superviseur de sessions /usr/local/xrdp/xrdp_control.sh Script de contrle de XRDP : dmarrage, arrt et redmarrage : #./xrdp_control.sh start #./xrdp_control.sh restart #./xrdp_control.sh sotp /usr/local/xrdp/sesman.log

Le journal des vnements qui se seront produits lors de lidentification de lutilisateur. Bibliothque permettant de rediriger lutilisateur vers un autre serveur RDP sur lequel il sera authentifi. Bibliothque permettant laccs au serveur (*) VNC via RDP Bibliothque permettant daccder au Serveur X Terminal (X11rdp). Script dmarrant le gestionnaire de fentre du serveur lors dune session. Il est par dfaut configur dmarrer un bureau KDE.

/usr/local/xrdp/librdp.so

/usr/local/xrdp/libvnc.so

/usr/local/xrdp/libxup.so

/usr/local/xrdp/startwm.sh

Dans ce qui suit, une description du fonctionnement de XRDP et du gestionnaire des sessions sesman avec les diffrents processus impliqus depuis lauthentification de lutilisateur.

________________________________________________________________________________
(*)

VNC : un logiciel d'affichage graphique distant multi plate-forme se fondant sur le protocole Remote Frame Buffer (RFB) qui est

un protocole simple transmettant les affichages graphiques qui sont sous forme de groupe de pixels mis en mmoire tampon.

21

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Figure 5

La figure 5 reprsente le mcanisme des diffrents types daccs au Serveur Terminal proposs lors dune connexion depuis un client. Authentification : Comme elle relve du fonctionnement des serveurs RDP, lauthentification -avec la saisie dun nom dutilisateur et dun mot de passe- nest considre comme option supplmentaire ici que pour laccs aux serveurs VNC qui ne requiert lorigine quun mot de passe. Passerelle : permettant une redirection vers le serveur VNC/RDP spcifi (par une adresse IP). Si on regroupe cette fonction avec la prcdente, on peut dire quil sagit dune passerelle dauthentification . VNC : accs au serveur VNC spcifi en saisissant un mot de passe. Cette fonction permet un affichage graphique distant VNC travers le protocole RDP (au lieu du protocole RFB).

22

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Figure 6

La figure 6 explique le fonctionnement de XRDP en plus des diffrents processus impliqus avec les options possibles depuis le dmarrage des services XRDP jusqu le dbut de la session graphique distante.

23

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Conclusion
En guise de conclusion, lobjet de ce travail tait de tracer les ralisations effectues lors de mon stage d'initiation effectu chez la socit MindWare Oujda. Le sujet qui ma t affect est l'tude des spcifications techniques d'utilisation du protocole RDP . Les diffrentes dimensions de cette tude taient: l'architecture, la programmation, l'utilisation et lextension du protocole en question. Le travail sur le sujet taient trs riche du moment que jai fait appel plusieurs autres lments dont je cite : - La mise en pratique de l'installation d'un rseau mixte Linux/Windows. - La configuration des services rseaux sur des plateformes diffrentes : Windows XP, Debian et CEntOS. - La pratique de lanalyse du trafic rseau et des paquets changs l'aide du logiciel Wireshark. - La mise en uvre de quelques outils de programmation gratuitement disponibles comme Microsoft Visual C++ 9.0 Express Edition et Platform SDK. - Des configurations des IPtables et du pare-feu sous Linux. - ... Finalement, malgr les difficults que jai rencontres lors de llaboration de cette tude, jai pu tirer le mieux de ma priode de stage, chose laquelle je me suis du de veiller tout au long de mon travail.

24

http://www.amindeed.com/

Etude des spcifications techniques d'utilisation du protocole RDP Rapport de stage

Webographie
Reverse Engineering of RDP : http://efod.se/media/thesis.pdf http://msdn.microsoft.com http://en.wikipedia.org http://fr.wikipedia.org

25

http://www.amindeed.com/

You might also like