SDB:OpenSSH tunnels
Aggiorna alla versione: 13.1 Questo articolo necessita di un aggiornamento alla più recente versione di openSUSE. Se hai usato questa guida in una versione più recente ed ha funzionato, puoi segnalare che funziona modificando la pagina stessa. |
Provato su openSUSE | Articoli consigliati | Articoli correlati | |||
|
Indice
Generale
La maggior parte dei programmi che fanno uso di connessioni TCP possono essere utilizzati attraverso tunnel sicuri usando OpenSSH. In questo modo, SSH, può essere usato per multiplare connessioni TCP addizionali su una singola connessione sicura. E', inoltre, utile per nascondere connessioni, crittografare protocolli che altrimenti non lo sarebbero e per bypassare i firewall. Le connessioni UDP possono essere, a volte, utilizzate in un tunnel con l'aiuto di programmi come netcat. Tra i vari esempi di programmi facilmente utilizzabili tramite tunnel SSH troviamo X Window System, il protocollo HTTP usando un proxy e VNC. Un tunnel per X Window System viene a volte creato automaticamente tra computer Unix, quindi i programmi con una GUI possono essere eseguiti sul computer remoto semplicemente digitando il loro nome.
Premessa
Prima di procedere, devi avere attivo e funzionante SSHD e SSH. E' richiesta anche una certa familiarità con il loro utilizzo e la loro configurazione. Se ancora non hai questi requisiti fai riferimento alle pagine: OpenSSH e Configurare OpenSSH.
Port Forwarding
Uno dei modi più comuni per far utilizzare tunnel SSH alle applicazioni è il port forwarding. Potresti, per esempio, effettuare il forward della porta 139 per far passare tramite un tunnel SSH connessioni SMB, o la porta 80 per far usare il tunnel ad un server web. Sia le porte dell'host locale che di quello remoto possono essere forwardate. Ciò può essere comodo se desideri effettuare il forward del sito web del tuo router che è situato sul server di rete SSHD. Per permettere il port forwarding, modifica il file /etc/ssh/sshd_config con il tuo editor di testo preferito e configura su yes la seguente voce, qualora non fosse già così:
AllowTcpForwarding yes
La configurazione di quali e quante porte saranno forwardate viene effettuata in un altro file di configurazione di SSH o tramite linea di comando. In questo esempio useremo il file di configurazione personale ~/.ssh/config. Immettendo queste opzioni nel file /etc/ssh/sshd_config funzionerà lo stesso, ma saranno applicate a tutti gli utenti.
Forward locale
Forward locale significa effettuare il forward di una porta di un server e associarla ad una porta del client. Le porte saranno associate di default all'indirizzo "localhost:porta". Se specifichi l'indirizzo di un'interfaccia (che deve essere un indirizzo esistente sull'interfaccia di rete del tuo computer) sarà associato a questo indirizzo e vi si potrà accedere dagli altri host, finché lo permetterà il firewall. Le seguenti righe rappresentano un tipico modo di configurare il port forwarding su un host opportuno. Come utente normale modifica ~/.ssh/config con il tuo editor preferito:
## Queste sono le configurazioni per definire un host. Usa "Host *" se vuoi che la configurazione si applichi a tutti gli host. Puoi definire quanti host vuoi. Host ssh-server Hostname 72.91.12.103 Port 2222 ## Qui si definisce il forward locale ## # Questo inoltra un server POP3 che è attivo su "ssh-server" LocalForward 1110 ssh-server:110 # Questo inoltra un server web (e.g. il tuo router) che non è attivo su "ssh-server" LocalForward 8080 192.168.1.1:80 # Questo inoltra un proxy squid che è attivo su "ssh-server" e lo associa ad un indirizzo di interfaccia. LocalForward 192.168.1.103:3128 ssh-server:3128
Forward Remoto
Il forward remoto è l'inoltro di una porta da un client e associarla alla porta sul server. La procedura di associazione della porta è identica al forward locale. Questa opzione torna utile se vuoi rendere disponibile un servizio tramite il tuo server SSHD, che sia raggiungibile nella tua rete locale.
In aggiunta agli esempi soprastanti:
# Questo inoltra un server NFS locale verso "ssh-server" RemoteForward 1025 localhost:1025 # Questo inoltra un server locale SSHD verso "ssh-server" e lo associa all'indirizzo di interfaccia su "ssh-server" RemoteForward 172.20.20.1:5041 localhost:22
Forward dinamico / SOCKS
Il forward dinamico ti da la possibilità di creare un server proxy ad hoc. Questo serve a supportare un proxying più flessibile rispetto a quello ottenibile con l'ordinario port forwarding. Con questa opzione, inoltre, solo l'indirizzo associato e la porta sul client devono essere specificati, tutte le richieste di connessione su questo indirizzo saranno automaticamente inoltrate all'indirizzo applicabile e la rispettiva porta lato server. Quando non viene specificato alcun indirizzo associato, di default sarà usato quello associato al localhost.
In aggiunta agli esempi precedenti:
# Questo stabilisce un server SOCKS che ascolta su "localhost:1080". DynamicForward 1080 # Questo stabilisce un server SOCKS che ascolta su "192.168.1.103:5555", dove, ovviamente, è consentito dal Firewall. DynamicForward 192.168.1.103:5555
Opzione GatewayPorts
Per evitare che qualcun altro usi le porte locali inoltrate, queste vengono solitamente associate all'indirizzo localhost. L'opzione GatewayPorts ti da la possibilità di cambiare proprio questa situazione. Impostare questa opzione su si cambierà l'indirizzo associato predefinito all'indirizzo jolly, vale a dire tutti i vostri indirizzi configurati (per interfacce locali ed esterne).
Per abilitare GatewayPorts, puoi aggiungere questa linea ad uno dei tuoi file di configurazione:
GatewayPorts yes
VPN basata su OpenSSH
A partire dalla versione 4.3, OpenSSH implementa un layer OSI 2/3 per VPN basate su "tun", che è la più flessibile capacità di tunneling di OpenSSH, permettendo alle applicazioni di accedere in maniera trasparente a risorse di rete remote senza usare socks (cioè senza "socksificazione").