Più di una Secure Shell

Un'interfaccia a linea di comando sicura è solo uno dei tanti modi in cui una SSH può essere utilizzata. Considerata la quantità esatta della larghezza di banda, le sessioni X11 possono essere indirizzate tramite un canale SSH. Oppure, utilizzando il TCP/IP forwarding, le connessioni di porta tra i sistemi, un tempo insicure, possono essere mappate per canali SSH specifici.

X11 Forwarding

Aprire una sessione X11 tramite una connessione SSH stabilita è facile quanto avviare un programma X quando un client esegue già X sul vostro host. Quando un programma X viene lanciato dal prompt della secure shell, il client e il server SSH creano un nuovo canale sicuro all'interno dell'attuale connessione SSH e i dati del programma X vengono inviati tramite questo canale alla vostra macchina client come se foste connessi al server X mediante un terminale locale.

Come potrete immaginare X11 forwarding può essere molto utile. Per esempio, potete usarlo per creare una sessione sicura e interattiva con l'interfaccia grafica utente up2date sul server per aggiornare in modo selettivo i pacchetti (se avete installato sul vostro server i pacchetti Red Hat Network necessari). Per farlo, connettetevi semplicemente al server utilizzando ssh e digitate:

up2date

Vi viene richiesto di inserire la password di root per il server. Compare ora il Red Hat Update Agent e potete così aggiornare i vostri pacchetti sul server proprio come se foste seduti davanti alla macchina.

Sia i dati di elaborazione richiesti per cifrare e decifrare le informazioni sicure inviate tramite il canale che la larghezza di banda aggiuntiva necessaria per inviare dati cifrati dell'applicazione X potrebbero essere importanti. È importante effettuare dei test adeguati per assicurarsi che il programma X sia ancora utilizzabile, in base alle condizioni del vostro hardware e della larghezza di banda.

TCP/IP forwarding

TCP/IP forwarding funziona con il client SSH, il quale richiede che una porta particolare sul client o sul server venga mappata tramite la connessione SSH esistente.

Per mappare una porta locale sul client verso una porta remota sul server, dovete innazitutto conoscere i numeri delle porte di entrambe le macchine. È persino possibile mappare due porte diverse e non standard.

Per creare un canale TCP/IP forwarding che attenda le connessioni sull'host locale, utilizzate il seguente comando (tutto su una riga):

ssh -L <porta-locale>:<nomehost-remoto>:<porta-remota>
          <nomeutente>@<nomeutente>

NotaNota Bene
 

Per impostare TCP/IP forwarding e avviare servizi su porte inferiori alla 1024 è necessario l'accesso di root.

Se per esempio desiderate controllare la vostra posta su un server chiamato mail.domain.com utilizzando il protocollo POP e se il server ha a disposizione SSH, potete utilizzare il comando seguente per configurare TCP/IP forwarding:

ssh -L 1100:mail.domain.com:110 mail.domain.com

Dopo aver posizionato TCP/IP tra le due macchine, potete indirizzare il vostro client di posta POP per utilizzare l'host locale come server POP e indicare la porta 110 per il controllo di posta nuova. Qualsiasi richiesta inviata alla porta 1100 sul vostro sistema sarà indirizzata in modo sicuro al server mail.domain.com.

Se sul server mail.domain.com non è in esecuzione un demone server SSH ma potete collegarvi tramite SSH a una macchina vicina, potete ancora utilizzare SSH, forse tramite un firewall, per rendere sicura quella parte della connessione POP avvenuta tramite reti pubbliche. È necessario un comando leggermente diverso:

ssh -L 1100:mail.domain.com:110 other.domain.com

In questo esempio, inviate la vostra richiesta POP dalla porta 1100 sulla vostra macchina tramite la connessione SSH a other.domain.com sulla porta 22. A questo punto other.domain.com si connette alla porta 110 su mail.domain.com per permettervi di controllare l'arrivo di nuova posta. Solo la connessione tra il vostro sistema e other.domain.com è sicura, ma in molte situazioni, ciò è sufficiente per trasmettere e ricevere informazioni in modo sicuro attraverso reti pubbliche garantendo una sicurezza mai avuta prima.

Naturalmente negli esempi descritti sopra, dovete essere in grado di autenticarvi al server SSH per eseguire il TCP/IP forwarding. Assicuratevi di poter eseguire i comandi SSH normali prima di tentare la configurazione di TCP/IP forwarding.

TCP/IP forwarding può risultare particolarmente utile per ricevere informazioni in modo sicuro tramite i firewall di rete. Se il firewall è configurato per consentire il traffico SSH tramite la porta standard (22), ma blocca l'accesso tramite le altre porte, una connesssione tra due host che usano porte bloccate è comunque possibile se si reindirizza la comunicazione tramite una connessione SSH tra i due host.

NotaNota Bene
 

Questa operazione può rivelarsi molto pericolosa. L'utilizzo di un TCP/IP forwarding per inoltrare connessioni in questo modo consente a qualsiasi utente sul sistema client di connettersi al servizio a cui state inviando le connessioni. Tutto ciò può essere rischioso se il sistema client viene compromesso.

Prima di usare il TCP/IP forwarding, consultate l'amministratore dei firewall. Gli amministratori di sistema che si occupano di TCP/IP forwarding possono disabilitare questa funzione sul server specificando il parametro No per la riga AllowTcpForwarding nel file /etc/ssh/sshd_config e riavviando il servizio sshd.