FreeRDP – xrdp

Introduction

Je vous propose ici d’utiliser conjointement les deux outils que sont FreeRPD et xrdp à des fins de reverse proxy RDP.

De même que pour les reverse proxy web, l’idée ici est de proposer l’accès à une ou des sessions RDP à vos utilisateurs sans pour autant exposer le ou les serveurs RDP eux-même.

En plus des avantages en terme de sécurité induits par le concept de reverse proxy, la solution présentée ici propose quelques possibilités intéressantes comme le blocage de certains canaux RDP (audio, presse-papier, disque déporté, etc…).

L’implémentation ressemblerai à ceci :

  1.  Le client ouvre une session sur le reverse proxy RDP.
  2. Le reverse proxy RDP ouvre une session sur le serveur ciblé et la présente au client.

Installation

Je traite ici de l’installation par la compilation depuis les sources plutôt que par un gestionnaire de paquets, simplement parce qu’étant orienté Debian les paquets à ma disposition dans Squeezee sont trop vieux pour supporter la dernière version du protocole RDP. Mais vous allez voir que pour une fois c’est facile ;-)

FreeRDP 1.0.1

Commençons d’abord par télécharger les sources : ici ou directement sur github

Installons ensuite les paquets nécessaires :

aptitude install unzip build-essential git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev libavutil-dev libavcodec-dev autoconf libtool pkg-config libpam0g-dev libpulse-dev libcunit1-dev libdirectfb-dev xmlto doxygen libxtst-dev libpcsclite-dev libxrandr-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libdirectfb-dev libneon27-dev

Une fois l’archive décompressée, placez vous dans le répertoire crée puis lancez les commandes suivantes :

cd /usr/local/src

wget http://www.lassipourlesnuls.fr/wp-content/uploads/2012/09/FreeRDP-FreeRDP-1.0.1-923-gbf02b5b.zip

unzip FreeRDP-FreeRDP-1.0.1-923-gbf02b5b.zip

cd FreeRDP-FreeRDP-bf02b5b

cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_DEBUG_CERTIFICATE=ON -DWITH_DEBUG_CHANNELS=ON WITH_DEBUG_CLIPRDR=ON -DWITH_DEBUG_DVC=ON -DWITH_DEBUG_GDI=ON -DWITH_DEBUG_KBD=ON -DWITH_DEBUG_LICENSE=ON -DWITH_DEBUG_NEGO=ON -DWITH_DEBUG_NLA=ON -DWITH_DEBUG_NTLM=ON -DWITH_DEBUG_ORDERS=ON -DWITH_DEBUG_RAIL=ON -DWITH_DEBUG_RDP=ON -DWITH_DEBUG_REDIR=ON -DWITH_DEBUG_RFX=ON -DWITH_DEBUG_SCARD=ON -DWITH_DEBUG_SVC=ON -DWITH_DEBUG_TRANSPORT=ON -DWITH_DEBUG_TSG=ON -DWITH_DEBUG_WND=ON -DWITH_DEBUG_X11=ON -DWITH_DEBUG_X11_CLIPRDR=ON -DWITH_DEBUG_X11_LOCAL_MOVESIZE=ON -DWITH_DEBUG_XV=ON -DWITH_FFMPEG=ON -DWITH_JPEG=ON -DWITH_MANPAGES=ON -DWITH_PCSC=ON -DWITH_PROFILER=ON -DWITH_PULSEAUDIO=ON -DWITH_SERVER=ON -DWITH_SSE2=ON -DWITH_SSE2_TARGET=ON -DWITH_THIRD_PARTY=ON -DWITH_ALSA=ON -DWITH_XTEST=ON .

make

make install

echo « /usr/local/lib/freerdp » > /etc/ld.so.conf.d/freerdp.conf

ldconfig

Voilà, c’est fini pour FreeRDP !!!

pam_userpass 1.0.2

Nous aurons besoin de ce module PAM pour une partie de l’authentification.

Téléchargez le ici ou directement sur openwall.

Décompressez l’archive, entrez dans le répertoire puis :

cd /usr/local/src

wget http://www.lassipourlesnuls.fr/wp-content/uploads/2012/09/pam_userpass-1.0.2.tar.gz

tar -xzf pam_userpass-1.0.2.tar.gz

cd pam_userpass-1.0.2

make

make install

xrdp 0.6.0

Une nouvelle fois, commençons par télécharger les sources : ici ou directement sur github

Une fois l’archive décompressée, placez vous dans le répertoire crée puis lancez les commandes suivantes :

cd /usr/local/src

wget http://www.lassipourlesnuls.fr/wp-content/uploads/2012/09/FreeRDP-xrdp-fa3088a.zip

unzip FreeRDP-xrdp-fa3088a.zip

cd FreeRDP-xrdp-fa3088a

./bootstrap

./configure –enable-freerdp1 –enable-jpeg –enable-simplesound –enable-pamuserpass

make

make install

Voilà c’est fini pour xrdp !!!

Configuration

Les fichiers de configuration sont regroupé dans /etc/xrdp, mais ce coup-ci parce qu’on a vraiment beaucoup de chance il n’y a rien changé, la conf par défaut convient à l’utilisation que nous souhaitons en faire.

Lacez votre client RDP et connectez vous sur l’addresse de votre reverse proxy RDP, vous verrez ceci :

Entrez l’IP de votre serveur RDP cible, vos login/password sur ce dernier et une fois validé vous devriez avoir une session dessus :-)

Conclusion

Cette solution vous permet donc de proposer des accès RDP sans exposer l’hôte, de contrôler certaines capacités du protocole RDP, et encore d’autre fonctionnalités que je mettrai bientôt en ligne…

Voici une petite vidéo de ce que vous dervriez avoir :

Download Video: WebM

 

3 comments

  1. igor

    Ben moi j’ai une erreur

    CMake Error :
    The path to the source directory:

    /usr/src/FreeRDP-FreeRDP-75b919a/DWITH_DEBUG_CLIPRDR=ON

    contains unsupported character ‘=’.

    Please use a different source directory name.

    Ben, je fais quoi là svp? Merci.

  2. Toni

    Bonjour,

    Merci pour ce tuto.
    J’ai suivi à la lettre les instructions et tout semble bien installé.
    Cependant, en lançant le bureau à distance sur le serveur FreeRDP, il n’arrive pas à se connecter.
    En regardant le fichier freerdp.conf, le chemin enregistré grâce à la commande echo n’existe pas. Il n’y a pas de répertoire freerdp dans /usr/local/lib
    Le fait que cela ne fonctionne pas peut-il venir de là?
    Merci.

  3. CaSa

    erreur de syntaxe dans le make, remplacer

    WITH_DEBUG_CLIPRDR=ON
    par
    -DWITH_DEBUG_CLIPRDR=ON

    ;-)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


sept × = 14

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>