archim3de

Tunnel SSH per VNC o altre applicazioni

16 messaggi in questa discussione

Obiettivi:

Incapsulare il traffico di un determinato protocollo all'interno di un tunnel ssh per rendere "sicura" la connessione tra due host!

L'attività presentata, illustra come installare tutto in sistemi windows, ma è applicabile a tutti gli ambienti (Unix, linux, *bsd*, macOS, sun, etc) che possono supportare server e/o client ssh e le applicazioni che si vogliono rendere disponibili.

Prerequisiti:

Conoscenza delle basi del protocollo TCP/IP.

Per chi è connesso tramite gateway a internet, è necessario abilitare il "portforward" di una porta tcp (di default la 22) verso l'ip del server ssh

Materiale necessario: Un host dove installare il servizio OpenSSH, un host da utilizzare come client SSH, connessione di rete o internet.

Siti di riferimento per i diversi software:

OpenSSH: Server SSH open source home.pngHome Page

Il porting su piattaforma windows è disponibile presso: home.pngHome Page

PuTTY: Client multiprotocollo (telnet, SSH, rlogin) per ambienti windows home.pngHome Page

TightVNC: Implementazione opensource e multipiattaforma del protocollo RFB per il controllo remoto (remote desktop) home.pngHome Page

Installazione e configurazione server OpenSSH

Andiamo per gradi e prepariamo il server in modo che accetti le connessioni SSH (Secure SHell).

Dalla pagina http://sshwindows.sourceforge.net/download/ scarichiamo gli installatori dei binari.

Al termine del download lanciamo l'eseguibile installatore confermando tutte le richieste, ad un certo punto un messaggio ci avverte che prima di avviare il server dobbiamo impostare correttamente il file delle password, confermiamo anche questo passaggio e proseguiamo fino al termine dell'installazione!

Il server SSH viene installato di default nella directory dei programmi dentro una sua directory chiamata OpenSSH (es per windows XP in italiano: C:\Programmi\OpenSSH )

Ora non rimane che creare i gruppi e gli utenti che saranno autorizzati ad accedere via ssh al nostro pc:

dal "prompt dei comandi" digitiamo:

C:
CD \Programmi\OpenSSH\bin
mkgroup -l >> ..\etc\group
mkpasswd -l  >> ..\etc\passwd

Se nel pc abbiamo più utenti ma vogliamo autorizzare un solo utente specifico ad accedere via ssh, la seconda riga va digitata in questo modo:

mkpasswd -l -u "username" >> ..\etc\passwd

dove sostituiremo "username" con il nome utente da inserire!

Attenzione: per gli utenti di domini windows, potrebbe essere utile inserire gruppi/utenti del dominio, in questo caso i comandi da dare sono diversi: sostituiamo lo switch -l con -d come nell'esempio:

C:
CD \Programmi\OpenSSH\bin
mkgroup -d >> ..\etc\group
mkpasswd -d  >> ..\etc\passwd

A questo punto non ci rimane che avviare il server digitando sempre dal prompt il comando

net start opensshd

o in alternativa per chi preferisce gli strumenti grafici, dal pannello di controllo --> strumenti di amministrazione --> Servizi, avviare il servizio "OpenSSH Server"

tunnelssh200603190103277hg.png

Il server ora è pronto per accettare connessioni da un utente autorizzato e munito di password

Installazione e configurazione VNC

Come implementazione VNC abbiamo scelto TightVNC in quanto open source e multipiattaforma!

L'installazione anche in questo caso è semplicissima dove è sufficiente confermare le richieste fino al termine.

Quando vnc viene installato nel pc che avrà il ruolo di server (lo stesso in cui abbiamo installato OpenSSH), l'unica richiesta in fase di installazione alla quale dobbiamo modificare manualmente delle opzioni è quando ci viene chiesto se vogliamo registrare vnc come servizio e avviarlo immediatamente!

tunnelssh200603190128009ru.png

Nel caso in cui questa domanda ci passasse e non impostiamo il servizio vnc con partenza automatica, possiamo farlo anche dopo averlo installato.

Una volta avviato il servizio, dobbiamo obbligatoriamente impostare una password, che verrà richiesta nel momento in cui un client (vnc viewer) tenta il collegamento al server.

tunnelssh200603190128126wz.png

Inoltre dobbiamo abilitare le connessioni in loopback, dalle proprietà avanzate!

tunnelssh200603210008547hv.png

Installazione e configurazione client ssh (PuTTY)

Il client ssh da noi scelto è PuTTY prelevabile dal sito dello sviluppatore in versione "standalone" o in versione "installer"

Per le nostre esigenze è sufficiente il semplice eseguibile, che possiamo utilizzare ovunque (es: internet point o pc dove non è consentita l'installazione di software aggiuntivi!

Anche volessimo prendere la versione installabile, il setup è semplicissimo: è sufficiente anche qui confermare tutte le richieste!

Possiamo testare il funzionamento del server SSH semplicemente tentando di connettersi anche in locale (quindi con il client PuTTY allo stesso server locale ip: 127.0.0.1)

tunnelssh200603190142047az.png

Se riusciamo a connetterci siamo pronti per iniziare l'attività da un altro pc.

Attività pratica di incapsulamento

Da Putty, impostare l'ip del computer (server ssh) a cui connettersi e impostare il protocollo SSH

poi nella sezione tunnel impostiamo la porta locale che sarà in ascolto e che verrà trasportata nel PC di destinazione, nella porta di destinazione!

Nell'esempio indicato, PuTTY aprirà un socket in ascolto sulla porta locale 12345 che lo trasporterà alla porta 5900 dell'ip locale del server ssh (per questo motivo ho indicato 127.0.0.1 che significa il localhost relativamente al server ssh)

tunnelssh200603210007142sm.png

E' importante stare attenti che la porta locale selezionata, non sia già in uso da un altro servizio!

Per questo motivo ho usato la porta 12345 che difficilmente sarà già utilizzata.

Dal client è sufficiente lanciare il viewer vnc e digitare come ip di destinazione (del server) 127.0.0.1:12345 confermare e alla richiesta della password, digitare la password precedentemente impostata.

Ecco come può risultare un pc windowsXP controllato da un pc windows 2000

vncssh4gq.png

Nota:

E' possibile usare un qualunque sistema client che supporti un terminale ssh e che abbia un client vnc.

Nell'esempio riportato ho usato mandriva2006 free per collegarmi al server windowsXP.

Da shell ho digitato:

ssh  192.168.100.123 -l archim3de -L 12345:127.0.0.1:5900

e alla richiesta di password ho digitato la password dell'utente archim3de nel pc windows XP.

In questo modo il tunnel ssh è creato, non resta che sfruttarlo:

da un'altra sessione shell ho digitato:

vncviewer 127.0.0.1::12345

Attenzione ai doppi ":" che indicano la porta dove connettere il viewer!

In questo caso alla richiesta di password, bisogna digitare la password impostata nel server vnc.

vncsshmdk4yj.png

Attività avanzate per necessità particolari

Secondo lo stesso principio utilizzato per connettersi in maniera "sicura" via vnc, potremmo creare e sfruttare nuovi tunnel per altri servizi che lavorano su protocolli TCP/IP!!

Un'attività molto interessante potrebbe essere quella di collegarsi ad un terzo pc dove è attivo un certo servizio, senza che questo sappia nulla di cosa è un tunnel.

Un esempio potrebbe essere il seguente:

Dal pc locale (client SSH), vogliamo connetterci ad un server web interno che non sarebbe altrimenti, direttamente accessibile, e comunque vogliamo una connessione "sicura"!

Pssiamo sfruttare il tunnel creato tra li "client SSH" e il "Server SSH" il quale provvederà a inoltrare le richieste al "server Web"

tunnel3pc0gu.png

Questa è la configurazione del tunnel da fare in putty sul "client SSH":

tunnel3pcputty2eu.png

E' possibile utilizzare un sistema alternativo di autenticazione dove anzichè dover digitare ogni volta le password, le tue "estremità" facciano un'autenticazione "automatica" tramite RSA, ma questo sarà oggetto di un tutorial a se stante!

Conclusioni

In sintesi: il vantaggio di creare un tunnel ssh sta nel fatto che il traffico tra i due host (siano essi in rete locale o che passano via internet), viene cifrato dal protocollo ssh stesso!

Se le necessità sono limitate, questa configurazione può sostituire una vpn dalle piene funzionalità di "tunneling".

L'implementazione di un tunnel di questo genere è piuttosto semplice, e le potenzialità sono notevoli: possiamo incapsulare qualunque tipo di traffico vogliamo!

Se il server ssh è dietro ad un router, è sufficiente abilitare il portforward della porta TCP 22 verso l'ip locale del server ssh! Non è necessario dare accesso da nessun'altra "porta" TCP.

Una volta che abbiamo configurato a puntino il server ssh e i vari servizi di cui vogliamo usufruire, da qualunque parte del mondo con un semplice client ssh e un client per il servizio cui vogliamo usufruire (negli esempi sopra un client vnc o un browser), possiamo accedere tranquillamente in sicurezza al nostro server privato o aziendale.

Gli svantaggi: ovviamente se pretendiamo di cifrare tutto il traffico di tutti i nostri servizi, le prestazioni potrebbero degradarsi, in quei casi è preferibile implementare una vpn.

Problemi possibili

Se abbiamo degli errori nella connessione via SSH, dobbiamo accertarci che

- il server SSH sia attivo

- gli utenti siano muniti di password e autorizzati nel server ssh

- sull'eventuale firewall sia consentito il traffico in entrata sulla porta 22

Se abbiamo problemi a collegarci col vnc attraverso il tunnel creato, dobbiamo accertarci che:

- il tunnel sia creato correttamente verificando le pore e gli ip (o nomi computer) inseriti

- nelle impostazioni del server vnc, sia abilitata la connessione nell'interfaccia "loopback": il server crede che sia un viewer locale a collegarsi a se stesso, non sa che è una connessione "tunnelizzata"!!

Per dubbi, perplessità e difficoltà, porre i quesiti del caso nella sezione "Software per Networking, Internet, mail, etc etc" --> http://forum.wininizio.it/index.php?showforum=180 <--

Archim3de

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao!

Ho installato openssh su windows2000 e riesco a fare la connessione con putty. Mi è servito installarlo perchè un cliente chiede l'sftp. Ho quindi creato un utente locale ad hoc.

Vi chiedo una cosa: si riesce a limitare i permessi all'utente (o gruppi) in modo che connettendosi con ssh non riesca a eseguire comandi o a fare danni? in pratica a me serve solo che riesca a fare l'sftp..

Grazie 1000

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

l'utente collegato via ssh ha gli stessi privilegi che avrebbe se si collegasse in locale.

Dovresti creare delle regole appositamente sull'utente o sul gruppo di appartenenza (forse ti conviene questa alternativa) ....

Per creare le regole devi usare gli strumenti che mette a disposizione windows !!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

C'è un modo per capire se la porta 22 in entrata è aperta?

Vorrei creare un tunnel casa ufficio

Grazie 1000

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Salve a tutti, sto cercando di usare il tutorial descritto in questo topic per risolvere il seguente problema:

All'universita' uso un portatile con sopra Gentoo Linux, il client msn su linux che + mi soddisfa e' Mercury, purtroppo questo client non puo' essere configurato per passare per la porta 80 ( o per qualsiasi altra porta ). Mercury quindi prova a connettersi a messenger.hotmail.com:1863 senza successo ogni volta.

Ho pensato che fosse possibile stabilire un tunnel passante per casa mia usando le info descritte nel topic.

Quindi ho istallato il servizio SSH sul mio pc di casa (dotato di dynamic dns per comodita') e infatti dall'universita' riesco ad entrare in ssh sul pc di casa mia.

Ho poi impostato il client putty su gentoo in modo che su tunnels apparisse tutto come in questa immagine http://img220.imageshack.us/img220/7269/tu...3pcputty2eu.png ovviamente con i parametri giusti, ovvero al posto della porta 80 ho messo la 1863 (sia in locale che in remoto) e al posto dell'indirizzo ip dell'immagine ho messo messenger.hotmail.com.

A questo punto se non ho capito male il funzionamento dovrei far partire il programma mercury senza altre configurazioni giusto? E putty dovrebbe prendere il traffico sulla porta 1863 e incanalarlo nel tunnel verso casa mia chiedendo di reindirizzarlo al server msn?

Mi sbaglio?

Aiutatemi plz, perche' invece questo non accade...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

utilizzando già linux potevi utilizzare il programma ssh già disponibile in gentoo anzichè putty (che suppongo stia girando in emulazione con wine o simili)... comunque il risultato è identico... :P

Credo che il problema sia a monte: il tuo pc da casa dovrebbe funzionare come "proxy" per il protocollo di messaggistica (msn) ... invece è ovvio che non può essere cosi!

L'immagine che hai linkato è presa dalla guida e ti fa vedere come accedere ad un server interno da una connesisone esterna, ma passando su un tunnel sicuro....

a te invece servirebbe di accedere a una rete pubblica, passando da un host privato ..... ..... che ribalta la richiesta partita dall'università verso l'host di casa verso i server msn!

non ho mai provato, ma questo lo puoi ottenere se a casa hai modo di configurare un port redirect dalla porta 80 alla porta 1863 e un forward verso i server di msn.... .....

ma senza troppe complicazioni secondo me fai prima a utilizzare il servizio http://webmessenger.msn.com

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

ultravnc (www.ultravnc.com) ha a la possibilita di usare un plugin che cripta il traffico...

comodo e veloce, purtroppo gira solo su windows, anche se il client, con wine, gira anche su linux.

saludos

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Salve a tutti, intanto complimenti per il bel forum e per l'ottimo tutorial.

Ho un quesito spinoso: non sono nuovo all'attività di tunneling ssh e lo uso regolarmente per usare dal lavoro la mia macchina locale a casa. Il problema sorge quando devo collegarmi ad un terzo pc. Sempre nel tutorial verso la fine è spiegato come connettersi ad un terzo pc specificando semplicemente via putty (o altro client ssh) l'ip e la porta di destinazione del tunnel.

Bene... ciò inspiegabilmente non funziona.

Ho appena provato a creare un tunnel al mio server al lavoro verso un terzo pc connesso alla rete locale della ditta per fare teleassistenza con VNC (proprio come spiegato nel tutorial). Bene, non va.

Sto dimenticando qualcosa? Dove sto sbagliando?

grazie

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

[ben]feua[/ben]

:P sei stato velocissimo nel risolvere, anzi, ti ringrazio a nome della community per aver condiviso la tua esperienza che sarà senz'altro d'aiuto ad altri! ;)

effettivamente il protocollo ssh è a dir poco magnifico :wub: ha una possibilità di configurazione estremamente flessibile che consente di avere un ottimo margine di sicurezza!

ti invito a continuare a partecipare attivamente nella community :P

spero di rileggerti presto :P

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
[ben]feua[/ben]

:P sei stato velocissimo nel risolvere, anzi, ti ringrazio a nome della community per aver condiviso la tua esperienza che sarà senz'altro d'aiuto ad altri! ;)

effettivamente il protocollo ssh è a dir poco magnifico :wub: ha una possibilità di configurazione estremamente flessibile che consente di avere un ottimo margine di sicurezza!

ti invito a continuare a partecipare attivamente nella community :P

spero di rileggerti presto :P

:)

Grazie archimede per il cordiale benvenuto. Sono già abbastanza attivo su altri due forum (utmib e ubuntu italia) quindi non so quanto spesso mi vedrete, ma senz'altro di tanto in tanto un salto lo farò perchè i tutorial qui pubblicati sono veramente utili.

Tornando in topic ribadisco che la soluzione funziona perfettamente e riesco a fare magnificamente tutte le attività che mi ero prefissato.

Mi sono permesso, prendendo spunto da questa e da altre guide, di scrivere un pdf con una guida passo passo per tutte le attività di tunneling. Non appena sarà completo ve lo passerò.

Saluti a tutti

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

:)

Grazie!!

allora restiamo in attesa :P

:P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao Archim3de, innanzitutto ottima guida, complimenti.

La uso da un paio di mesi per fare connessioni tunneling come un pazzo.

Ora un mio amico mi ha fatto notare un piccolo problema di sicurezza e mi ha posto davanti a un quesito:

- Si può settare che nel Tunneling entri solo quel determinato IP o quel determinato Utente da quel determinato NICK o MACADDRESS??

Ho letto nelle istruzioni del programma e descrivono circa i passaggi che hai fatto Tu, ma neanche da li sono riuscito a capire bene come settare un indirizzo IP.

Grazie.

Michele

P.S. Ho usato il bottone cerca in giro per il Forum ma non ho trovato risposte.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ho dato un rapido sguardo alla pagina di man del demone sshd, e non mi risulta che si possano filtrare anche gli accessi basandosi su ip/mac!!

In ogni caso, è sempre preferibile una soluzione mirata (quindi un firewall che abiliti o disabiliti l'accesso a determinati host, riconosciuti dal mac address, dall'ip o altro, che possono accedere alle sole porte realmente necessarie), comunque il server sshd è discretamentte semplice da configurare: accetta parecchi parametri, ma puoi vedere di più leggendo questa pagina: http://www.openbsd.org/cgi-bin/man.cgi?que...g&sektion=5

Da quel che leggo, puoi abilitare il server ssh si una o più interfaccie (o indirizzi IP) locali al server, ma non mi pare di aver letto nulla che rifiuti le connessioni provenienti da determinati hosts!

bye bye

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Grazie per l'info...appena ho tempo leggo la guida che mi hai consigliato.

Il problema è che non ho possibilità di mettere un firewall, almeno non nel "classico dei modi".

Se lo installassi taglierebbe fuori gli utenti...vabbè è una lunga storia...

Grazie cmq.

Ciao ciao

P.S. Ottimo forum ! :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Salve a tutti e buon anno.

mi sono appena registrato.

Complimenti per l'utilissimo forum.

Avrei un quesito .... da niubbo.

In ufficio abbiamo un proxy che gestisce i collegamenti ad internet.

Skype è l'unico programma che riesce ad uscire sulla rete senza bisogno di login.

Come posso fare per aggirare il proxy e navigare liberamente?

Posso tentare il tunneling?

Grazie in anticpo per le risposte.

Saluti

Giobbe

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora