In quest'articolo, continuando a percorrere la strada dell'integrazione tra sistemi operativi trattata più volte in questa sezione di HTML.it, vedremo come collegarsi ad un server Windows da un client Linux sfruttando il protocollo RDP (Remote Desktop Protocol).
Questo protocollo, sviluppato da Microsoft, consente di accedere ad un altro computer mediante interfaccia grafica. Una volta stabilita la connessione tra le due macchine, tramite LAN o attraverso rete pubblica, potremo visualizzare il desktop del server ed utilizzare tastiera e mouse come se fossimo fisicamente seduti davanti ad esso. Risulta quindi ideale per interventi di amministrazione remota o quando si voglia eseguire un'applicazione lato server ed i client debbano comportarsi come semplici terminali.
RDP nacque come estensione del protocollo di condivisione delle applicazioni ITU-T T.128, noto anche come T.SHARE, e fu introdotto da Microsoft con Windows NT 4.0 Server - Terminal Server Edition. Il suo funzionamento si basa su un software server, denominato Remote Desktop Services, in passato conosciuto come Terminal Services ed un programma client Remote Desktop (Connection), precedentemente chiamato Terminal Service Client. A partire da Windows XP la casa di Redmond ha incluso il programma RDC tra le dotazioni software di base dei propri client.
Per fortuna ne esistono implementazioni anche per altri sistemi operativi come Linux, Unix, MacOS X. Da quando Microsoft ha deciso di rendere pubbliche le specifiche del protocollo è risultato più semplice lo sviluppo di validi client alternativi.
Dall'iniziale versione 4.0 all'attuale 7.0 di Windows Server 2008 R2 e di Windows 7, le caratteristiche si sono moltiplicate e sono migliorate. Basti solo pensare alla profondità del colore nella visualizzazione del desktop remoto, nelle prime versioni limitata agli 8 bit (256 colori). Tra le varie funzionalità offerte dal protocollo possiamo citare:
- Rindirizzamento delle stampanti: all'interno di una sessione RDP è possibile l'utilizzo della stampante locale.
- Rindirizzamento dell'audio: è possibile eseguire sul desktop remoto un programma con output sonoro e sentirlo sulla macchina locale.
- Rindirizzamento del file system: da una sessione terminal possono risultare accessibili i file locali.
- Rindirizzamento delle porte: è possibile sfruttare le porte seriali e parallele locali.
- La condivisione degli Appunti (Clipboard) tra computer locale e remoto.
- L'utilizzo della crittografia (TLS 1.0) nella trasmissione dei dati tra client e server. Le versioni precedenti alla 6 soffrono però di alcune vulnerabilità.
Riassunte in breve le caratteristiche del Remote Desktop Protocol, vediamo come sia possibile interagire con un server Windows 2003 da un client Linux con distribuzione Fedora 11. Nel caso dobbiate configurare eventuali filtri presenti tra le due macchine, tenete presente che il server utilizzerà di default la porta TCP 3389.
Installiamo rdesktop
Per raggiungere il nostro scopo installeremo il client RDP open source rdesktop. Il software è rilasciato con licenza GNU GPL ed è sostanzialmente compatibile con tutti i sistemi Unix-like che utilizzano X Window. Rdesktop supporta Windows NT Server 4.0, Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows XP, Windows Vista (con molta probabilità anche Windows 7). Le caratteristiche del programma non sono esattamente allineate con quelle dei più recenti client Microsoft. Risultano comunque implementate la maggior parte delle specifiche di RDP versione 5, sufficienti a renderlo un utile strumento di lavoro.
Possiamo prelevare i sorgenti dell'ultima versione stabile 1.6.0 da Source Forge, che ospita il progetto. Oppure, più semplicemente, utilizzare il software d'installazione automatica dei pacchetti precompilati della nostra distribuzione preferita. Poiché negli esempi ci riferiremo a Fedora 11 sfrutteremo gli automatismi di YUM assumendo i privilegi di root e digitando al prompt dei comandi:
$ yum install rdesktop
Al termine dell'operazione il programma dovrebbe essere disponibile in /usr/bin/. Qualora preferissimo utilizzare i file sorgenti, per un'installazione standard sarà sufficiente la consueta sequenza ./configure & make & make install
.
A questo punto non ci resta che lanciare rdesktop specificando il nome del server a cui vogliamo collegarci o il suo indirizzo IP:
$ rdesktop server.miodominio.it
Se tutto funziona correttamente il programma mostrerà la finestra di login della macchina Windows remota in modo simile alla figura seguente.
Inserendo le corrette credenziali avremo accesso al desktop dell'utente specificato e potremo eseguire le operazioni di assistenza o manutenzione come se ci trovassimo seduti davanti a quel computer.
Le opzioni di rdesktop
Nel precedente paragrafo ci siamo limitati a lanciare rdesktop nel modo più semplice possibile, in realtà la sua sintassi risulta più articolata:
rdesktop [options] server[:port]
Oltre all'eventuale porta di ascolto del server diversa dalla configurazione standard, possiamo specificare alcune opzioni che consentono di personalizzare l'avvio dell'applicazione. Di seguito un semplice esempio:
$ rdesktop -k it -g 1024x768 server.miodominio.it
Per emulare il layout della tastiera italiana abbiamo utilizzato l'opzione -k it
. Mentre con -g 1024x768
indichiamo, nella forma larghezza x altezza, la geometria del desktop desiderata.
Troverete l'elenco completo delle opzioni consultando la pagina del manuale:
$ man rdesktop
Qui sono descritte operazioni più sofisticate come i sopra menzionati rindirizzamenti di stampanti, porte, audio o accesso al file system.
In conclusione con rdesktop non dobbiamo rinunciare alla nostra linux box per interagire con i sistemi Microsoft, anzi il programma ci permette di muoverci sul terreno stesso di Windows sfruttandone le peculiarità. Al solito, rispetto a soluzioni non commerciali sia lato server che lato client, come ad esempio VNC, dobbiamo fare i conti con i costi delle necessarie licenze.
Un ultimo aspetto, non marginale, da tenere in considerazione è la sicurezza. Poiché la versione 5 del protocollo RDP è vulnerabile ad attacchi man-in-the-middle il sistema da implementare deve adottare adeguate contromisure. Una possibile soluzione è utilizzare rdesktop all'interno di un tunnel VPN. Rimanendo in ambito open source è possibile demandare ad OpenVPN la protezione della connessione ed utilizzare il programma solo per la gestione del desktop remoto. Tra l'altro tra le varie opzioni possibili c'è anche quella di eliminare la cifratura tra client e server riducendo il lavoro richiesto ad rdesktop e meglio svolto dalla VPN.