Accedere da casa al proprio computer in ufficio

ad middle
SPONSORED LINKS

Supponiamo che nella vostra azienda l’accesso a internet avvenga esclusivamente tramite un proxy HTTP(S); a casa avete un PC con una connessione a internet tramite un modem router ADSL. Ora il vostro scopo sarebbe quello di riuscire ad accedere da casa al vostro PC in ufficio senza però essere dotati di accesso VPN alla LAN aziendale: sembra un obiettivo impossibile, ma proviamo a capire se l’ “ssh tunneling” ci può venire in aiuto.

SSH tunneling
Non si tratta di una novità: il protocollo SSH è pensato per gestire più canali di comunicazione all’interno di una sola connessione. Questa caratteristica e’ definita “port forwarding?.E’ possibile attivare il port forwarding in qualunque direzione e in maniera indipendente dalla direzione (origine e destinazione) della connessione ssh. Questo significa che ad esempio per la seguente connessione ssh tra un client C e un server S:

C:16543 -> S:22

possiamo impostare i seguenti port forwarding:
S:2200 -> C:22 (“Remote forward?: canale dalla macchina remota S a quella locale C);
C:25 -> S:25 (“Local forward?: canale dalla macchina locale C alla macchina remota S) .

Tutti questi canali di comunicazione hanno la caratteristica di rimanere “nascosti” all’ interno della connessione principale. Di contro però tale caratteristica può venire inibita attraverso la modifica delle opzioni di configurazione del server SSH. Per aver il massimo controllo sul server SSH lo installeremo sul nostro PC di casa, mentre il client verrà lanciato dal PC in ufficio: ma stabilire questa connessione non sarà così semplice a causa della presenza del proxy http in grado di filtrare tutte le connessioni dalla LAN aziendale verso internet e sul quale chiaramente non è possibile mettere le mani.

Requisiti
Passiamo ad analizzare i requisiti necessari per la riuscita della nostra impresa:
1) Una macchina all’interno della LAN aziendale (ovvero il nostro PC in ufficio). Supponiamo inoltre che il sistema operativo sia Linux.

PC in ufficio: W – 172.17.78.121

2) Proxy HTTP(S) : abbiamo bisogno di conoscerne solo l’ ip address e la porta (Possiamo identificarli facilmente analizzando le impostazioni del browser):

HTTP(S) proxy: P – http-proxy.xyz.com:8080

3) Un PC a casa con connessione a internet e porta 443 accessibile dall’esterno. Se si utilizza un modem router ADSL con firewall integrato sarà necessario verificare che la porta 443 sia accessibile dall’esterno.

PC a casa: H – 67.167.12.78 (indirizzo pubblico del router)

Attraversare il proxy HTTP(S)
Iniziamo dando uno sguardo veloce alla modalità di funzionamento di un proxy HTTP(S).
L’ HTTPS è un canale sicuro e criptato su HTTP: tutti i dati che transitano dal client al server sono cifrati e quindi illeggibili. Questo però non vale per la comunicazione con il proxy. Il browser del PC in ufficio, per connettersi a un sito in https contatta prima il proxy sulla sua porta predefinita (generalmente la 80 o 8080) e gli invia una richiesta del tipo:

CONNECT webserver:443 HTTP/1.1

Il proxy, stabilisce una connessione con webserver e ritorna al client un messaggio del tipo:

HTTP/1.1 200 Connection Established

Una volta fatto ciò l’ unica funzione del proxy diventa quella di inoltrare i pacchetti tra il browser e il sito web: se la connessione è in HTTPS il proxy non potrà mai sapere che dati sta facendo transitare.

La connessione SSH
putty config.miniaturaAbbiamo a questo punto bisogno di un client ssh “intelligente? in grado di identificarsi come un normale browser presso un proxy HTTP(S) mediante il comando “CONNECT”. Uno di questi è Putty, che però è disponibile solo per Windows (l’ immagine a fianco ne riporta la schermata di configurazione per l’ attraversamento di un proxy).

OpenSSH, che è disponibile e molto diffuso su linux, non supporta invece i proxy HTTP(S) e se vogliamo utilizzarlo ci serve del software aggiuntivo in grado di aiutarci a bypassare questa limitazione. E’ possibile utilizzare proxytunnel creando/editando il file $HOME/.ssh/config e inserendovi il seguente contenuto:
Host pc-casa
ProtocolKeepAlives 30
ProxyCommand /path/to/proxytunnel -g http-proxy.xyz.com \
-G 8080 -u user -s password -d pc.casa.com -D 443

Dove:
pc-casa è un nome simbolico che rappresenta l’host verso cui vogliamo connetterci (il PC di casa)
http-proxy.xyz.com è il proxy HTTP(S) aziendale
8080 è la porta su cui sta in ascolto il proxy
user è la propria utenza per accedere al proxy (se il proxy non richiede autenticazione si può omettere)
password è la propria password per accedere al proxy (se il proxy non richiede autenticazione si può omettere)
pc.casa.com è l’ hostname o ip address del proprio pc a casa
443 è la porta del router di casa rediretta verso il server ssh
ProtocolKeepAlives 30 serve ad inviare occasionalmente del pacchetti NULL per mantenere attiva la connessione in quanto il protocollo HTTPS di solito tronca le connessioni dopo un certo periodo in inattività.

netgear.miniaturaA questo punto una volta configurato il router per ricevere i pacchetti in ingresso su porta 443 e forwardarli verso il PC di casa (l’ immagine a fianco riporta la schermata di configurazione per un router modem Netgear DG834G) avviamo il server sshd configurandolo in modo che stia in ascolto sulla porta 443:

[you@home ~]sshd –D –p 443 &

Finalmente possiamo procedere attivando il canale ssh da W a H: dal PC in ufficio digitiamo il comando:

[you@office ~]ssh –n –i identity_file pc-casa &

Ecco fatto: a questo punto abbiamo attivato una connessione in background e duratura tra W e H; ma senza attivare dei canali di forwarding essa serve a poco.

Port forwarding
Il nostro scopo iniziale era quello di poter accedere al PC in ufficio da casa.
Supponendo che il pc in ufficio abbia un telnet server attivo e che volessimo connetterci ad esso da casa, dovremo utilizzare il port forwarding: è possibile decidere di forwardare ad esempio la porta 2200 di H verso la porta 23 di W, così che connettendoci alla porta 2200 di H verremo automaticamente connessi alla porta 23 di W dove ci risponderà il server telnet. La configurazione del port forwarding deve essere effettuata al momento della connessione vera e propria tra le due W e H.
Dovremo quindi modificare il comando di connessione come segue:

[you@office ~]ssh –n -R 2200:localhost:23 –i identity_file pc-casa &

Dove -R 2200:localhost:23 significa:inoltra il traffico sulla porta 2200 della macchina remota (pc di casa) verso la porta 23 della macchina locale (pc in ufficio)“. A questo punto digitando dal pc di casa il comando:

[you@home ~]telnet localhost 2200

Ci risponderà nientemeno che il server telnet attivo sul PC in ufficio !

ad middle
SPONSORED LINKS
Ti è piaciuto l'articolo?
Iscriviti alla newsletter per ricevere in tempo reale tutte le notizie e gli aggiornamenti!

Articoli correlati a "Accedere da casa al proprio computer in ufficio"


  • No Related Post

Lascia un commento