Aggiornato al : dic 29, 2008



Nell’articolo precedente avevamo visto come Accedere alla sessione grafica corrente da remoto attraverso il protoccollo VNC.

Vogliamo adesso vedere come rendere “sicuro” VNC.

Possiamo dire che VNC non offre sicurezza, considerando che le informazioni sono inviate in “plain text”. Per ovviare a questo problema è possibile incapsulare il traffico di VNC all’interno di un tunnel SSH, che cifri le informazioni per rendere “sicura” la connessione. L’idea di base è schematizzata nella figura seguente:

vncsicuro_schemaNegli esempi finora visti il client VNC si connette direttamente al server VNC, con i problemi di sicurezza che ne derivano. Adesso invece creeremo una connessione SSH tra il client e il server e faremo in modo che il client VNC mandi le sue informazioni al client SSH, che le invia tramite una connessione cifrata al server SSH, che a sua volta le trasferisce al server VNC. Per ottenere tutto ciò bisogna effettuare i seguenti passaggi:

  • Configurazione del server VNC
  • Creazione connessione SSH tra client e server: effettuare la connessione SSH al server, facendo in modo che una porta locale sia redirezionata sulla porta del server su cui ascolta il server VNC (ad esempio la 5901), in modo che ad esempio una chiamata locale alla porta 5901 abbia l’effetto di chiamare il server alla porta 5901.
  • Uso del client VNC: con la connessione SSH effettuata al punto 1) ancora aperta, bisogna aprire il client VNC che utilizziamo ed inserire come indirizzo localhost, specificando come porta quella stabilita al punto precedente che redirezionerà i dati sulla porta remota su cui ascolta il server VNC.

Vediamo adesso più nel dettaglio come effettuare queste operazioni.
La parte server è identica a quanto specificato nell‘articolo precedente.
Per quanto riguarda il client la prima cosa da fare è creare il tunnel SSH. Dobbiamo in pratica effettuare la connessione SSH al server, facendo in modo che una porta locale sia redirezionata sulla porta remota usata dal server VNC. Occorre comunque verificare prima che la porta locale da usare non sia già usata da qualche altro servizio (ad esempio un server VNC attivo sul nostro client), in tal caso dobbiamo
scegliere un’altra porta locale, ad esempio la 5910.
Se abbiamo un client con sistema operativo Unix/Linux o Mac OS X eseguire il comando:

ssh -X -L local_port:server_address:VNC_remote_port username@server_address

dove a server_address, username, local_port e remote_port bisogna sostituire i propri dati, ad esempio:

ssh -X -L 5901:192.168.0.2:5901 pippo@192.168.0.2

(in questo caso abbiamo creato un tunnel SSH al server 192.168.0.2, redirezionando la porta locale 5901 sulla porta remota 5901).
Per quanto riguarda l’uso di SSH con Windows, questo sistema operativo, al contrario di Linux e Mac OS X, non dispone di un client SSH, dunque è necessario installarne uno di terze parti, ad esempio l’ottimo Putty (scaricabile gratuitamente da http://www.chiark.greenend.org.uk/~sgtatham/putty/). Il programma è semplicissimo da usare, basta inserire i parametri del server a cui connettersi. Un’unica
nota riguarda come attivare il port forwarding: fare clic nel menu a sinistra sulla voce Connection → SSH → Tunnels ed inserire ciascuna regola nei due campi Source Port e Destination, come mostrato nella figura seguente per la porta 5902 e cliccare sul pulsante Add per aggiungere la regola.

puttyconfigurations

Alla fine fare clic sul pulsante Open per aprire la connessione. E’ anche possibile salvare il profilo corrente in modo da poterlo caricare facilmente ad ogni avvio di Putty. Per fare questo, dopo aver impostato tutte le regole e l’indirizzo a cui connettersi, selezionare dal menu a sinistra la voce Session.
Nella sezione Saved sessions presente sulla destra, scrivere il nome da assegnare al profilo corrente, ad esempio appleserver e premere Save, come mostrato in figura:

puttyconfiguration2

Al prossimo avvio sarà possibile caricare il profilo appleserver selezionandolo da questa finestra e premendo poi Load.
Adesso dobbiamo utilizzare il client VNC. Vale quanto detto nel paragrafo 3.2, con l’eccezione che questa volta l’indirizzo a cui connettersi è localhost, mentre la porta è quella locale, che redirezionerà i dati automaticamente alla porta remota su cui ascolta il server VNC. Questo comporta che, non solo avremo la nostra connessione VNC resa sicura da SSH, ma anche che per il server VNC la connessione arriverà dall’interno, perciò non sarà più necessario aprire mediante il firewall la porta utilizzata (anzi verificare che sia chiusa, dato che la sua apertura non ci serve più e potrebbe causare problemi di sicurezza).

Autore : Giacomo Antonino Fazio aka l3golas



You may be the one to comment first. Please leave your message below.