Logo PJ
Home
Arcade
Musica
Bicicletta
FabLab
Linux
DreamBox
Giochi
 
   Introduzione   Perle   Programmi   SSH   SAMBA   Firewall   GPS   WIFI   Jukebox   PCcar 

Protezione di connessioni testuali tramite SSH

In questa paginetta vorrei spiegare come utilizzare OpenSSH non solo per proteggere le proprie sessioni di Telnet ma anche i collegamenti a server basati su protocolli testuali (POP, NNTP, SMTP, ecc...). Sebbene questo possa avere poco senso in una LAN domestica, la cosa acquista particolare importanza se ci si trova in una LAN dove possono accedere più persone non sempre fidate o peggio se si è costretti a effettuare collegamenti tramite Internet.

L'idea di base è quella di sfruttare la funzione di forwarding del comando SSH per effettuare una connessione protetta col server remoto e una non protetta col client locale, che però essendo situato sulla stessa macchina che realizza la connessione remota non corre particolari rischi di intercettamenti. Vediamo di chiarire la cosa con un esempio concreto: una connessione POP3.

Tale protocollo lavora sulla porta TCP numero 110: il nostro scopo quindi è quello di realizzare una connessione sicura tra la nostra macchina e la porta 110 del server e una connessione non sicura tra il client della posta e la porta 20000 (una porta sufficientemente alta da non influenzare altre applicazioni e da poter essere allocata da qualsiasi utente). Per fare questo utilizziamo la seguente linea di comando:

ssh -f -C Server -L 20000:Server:110 sleep 10

in cui il parametro -f forza il programma in background dopo l'autentificazione col server, il -C abilita la compressione, il -L invece specifica appunto di aprire la porta 20000 sulla macchina locale di effettuare il reindirizzamento dei dati sulla porta 110 del server Server; il comando sleep di seguito serve per mantenere in vita il programma fino a che il client di posta non realizza la sessione.

Un modo veloce per vedere se la procedura funziona è quello di effettuare subito un telnet sulla nostra macchina alla porta specificata e vedere se il server risponde:

[~]# telnet localhost 20000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK POP3 server.univision.it v7.59 server ready quit +OK Sayonara Connection closed by foreign host.

A questo punto abbiamo ottenuto la connessione sicura col server, ora dobbiamo preoccuparci di effettuare la sessione tramite il client: fondamentalmente non cambia molto rispetto alla normale configurazione del programma se non il fatto che come server per il collegamento va specificato quello locale e come porta quella che abbiamo indicato a SSH (nel nostro esempio 20000).

Riassumendo, per effettuare una connessione sicura occorre prima eseguire il comando SSH con i parametri indicati sopra e dopo lanciare il client, che dovrà collegarsi alla porta locale. Per automatizzare un po' le cose occorre che il client permetta di eseguire un comando prima del collegamento, come ad esempio FetchMail; nel caso di questo programma il file di configurazione diventa una cosa simile a questa:

poll localhost with protocol pop3 and port 20000: preconnect "ssh -C -f utente@server -L 20000:server:110 sleep 10" password serverpw;

Se invece il client non permette di invocare un comando prima del collegamento allora occorre risolvere la cosa in un altro modo: una soluzione può essere quella di portare il parametro sleep ad valore molto più alto in modo che SSH resti attivo per tutta la connessione (ad esempio 100000000).

RIFERIMENTI

  • FetchMail è un programma che permette di scaricare la posta, anche di più account, sul server locale, utilizzando uno dei protocolli POP2, POP3, RPOP, APOP, KPOP, IMAP, ETRN o ODMR. Utilizzando la porta SMTP per inoltrare i messaggi alla macchina locale, permette l'utilizzo di filtri, alias, forward come se si trattasse di una mail arrivata direttamente al sistema.
  • OpenSSH è una versione open source della suite di programmi di collegamento che utilizzano il protocollo SSH. In articolare contiene i programmi ssh, scp, sftp, sshd.
Comments