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
|