Benvenuto nel sito del Macintosh User Group Ufficiale dell'Universita' di Roma 3

Realizzare un semplice tunnell SSH

Oggi giochiamo con OpenSSH, la pagina man del comando ssh recita:
"ssh e' un programma per autenticarsi presso una macchina remota ed eseguire comandi su una macchina remota."
(la ripetizione e' anche nel testo originale)

Avendo una macchina raggiungibile con attivo un server ssh possiamo collegarci a questo usando il comando ssh:
ssh -l username indirizzo
ci verra' chiesta una password e se questa e' corretta ci verra' garantita una shell remota come utente username sul server che risponde all'indirizzo indirizzo
Ora pero' non e' questa funzionalita' che vogliamo vedere oggi; tra le tante ce n'e' una in particolare:
-L port:host:hostport
a che serve?
Es:
ssh -l user -L portalocale:host:hostport serverssh
apriamo una shell remota come user (ovviamente prima dovremo passare la procedura di autenticazione) su serverssh, apre la porta portalocale sulla macchina da cui viene dato il comando ssh e stabilisce un ridirezionamento verso la porta hostport del server host Quali sono le caratteristiche di questo tunnel?

il tunnel e' composto di tre parti:

A B C

A siamo noi, stabiliamo un tunnel ssh (usando di solito la porta 22) verso il server B (questo tratto e' criptato), arrivati allo "sbocco" su B decidiamo la destinazione del traffico mandato da A e lo ridirigiamo verso host alla porta hostport (un caso particolare e' se host e' localhost, in quel caso il traffico viene ridirezionato sulla
interfaccia di loopback di B), il traffico tra B e C e' non criptato come se la comunicazione avvenisse effettivamente tra l'host B e l'host C.

In quali casi questa opzione puo' tornare utile?
ci sono molti casi in cui puo' essere utile:
"per garantire la riservatezza dei vostri dati" Es: siete in una rete wifi e volete consultare la vostra casella di posta elettronica.
ora voi sapete benissimo che mandando in chiaro la vostra password c'e' cmq la possibilita' che nella rete wifi qualcuno la sniffi.
ssh -L 2000:pop.server:110
a questo punto il tratto in wifi viene percorso tra traffico criptato fino a B rendendo vano lo sniffing, bastera' poi convincere il vostro programma di posta elettronica a scaricare la posta da localhost con porta 2000 (ricordatevi che nulla vi garantisce la riservatezza dei dati nel tratto tra B e C) "per accedere a servizi non pubblici sul server ssh" Es: server web residente sul server ssh che non e' raggiungibile dalla vostra postazione perche' bloccato da firewall
Bastera' usare:
ssh -L 8088:localhost:80 indirizzoserver
e poi per consultare il server web sul server ssh non dovremo fare altro che aprire il browser e dare come indirizzo localhost:8088

ci sono requisiti per usare questa funzionalita'?
(1)dovete avere ssh installato sul vostro sistema(doh!)
(2)sul server deve girare ssh senza direttiva no-port-forwarding o cmq il server di destinazione del port-forwarding non deve essere tra quelli vietati (man sshd e in particolare le direttive no-port-forwarding e permitopen)
(3) ci deve essere la possibilita' da A di collegarsi a B attraverso la porta 22 (a meno che ssh non sia stato spostato su altra porta) e la possibilita' da B di collegarsi a C attraverso la porta di destinazione specificata.

Edward

Torna all'indice