Autenticare e crittografare le connessioni con Zebedee
Zebedee è un programma open source che permette di stabilire una connessione “tunnel” TCP/IP o UDP compressa e crittografata tra due sistemi. Permette quindi di rendere sicuro il traffico di protocolli che non hanno una sicurezza nativa, e di ottimizzare l’utilizzo di banda per mezzo della compressione.
Tramite opportune operazioni possiamo ottenere anche un’autenticazione “forte”, in modo che solo i client autorizzati possano connettersi al server. Vediamo come.
Per il nostro esempio ipotizziamo di dover ottenere una connessione sicura verso un server Windows 200x, tramite i servizi terminal in modalità amministrativa. Essi permettono di avere il controllo di una sessione del desktop del server, come se si fosse fisicamente davanti alla macchina. Tenete presente che il tutto può essere adattato a qualsiasi altro servizio TCP o UDP, modificando una linea del file di configurazione. Nell’esempio utilizzeremo un client Windows, ma il concetto è lo stesso per un client Linux.
Come prima cosa procuriamoci il programma qui. Eseguiamo il setup, molto semplice, sia su server che su client.
Creiamo una chiave privata sul client: C:\Programmi\Zebedee\zebedee -p > myclient.key. Il file così generato contiene la chiave privata che deve essere tenuta in un posto sicuro.
Adesso creiamo la corrispondente chiave pubblica: C:\Programmi\Zebedee\zebedee -P -f myclient.key > myclient.id.
Questa chiave va copiata nella cartella di Zebedee sul server, dove creerete anche un file client.idlist, nel quale copierete il contenuto di tutte le chiavi pubbliche di ciascun client.
Adesso creiamo il file di configurazione del server: server.zbd
verbosity 3
server true
detached false
checkidfile "client.idlist"
compression zlib:9
keylength 256
keylifetime 36000
maxbufsize 16383
target localhost:3389/tcp
Installiamo Zebedee come servizio di Windows, impartendo il seguente comando:
C:\Programmi\Zebedee\zebedee "-Sinstall=c:\programmi\zebedee\server.zbd". Tramite il pannello di controllo facciamo partire il servizio, e controlliamo che venga avviato automaticamente alla partenza del sistema.
Pubblicate la porta TCP/11965 del server sul vostro firewall, o chiedete al sistemista perimetrale di farlo per voi. Questo è lo schema del tunnel:

Sul client possiamo qundi stabilire la connessione tramite il comando:
C:\Programmi\Zebedee\zebedee -f myclient.id -d 5555:mio.server.com:3389
Il valore 5555 è un valore (maggiore di 1024), che inventate e che serve per creare l’endpoint del tunnel su una porta TCP locale, sostituite mio.server.com con il vero indirizzo del vostro server. 3389 è la porta del servizio RDP che gira sul server.
La connessione così stabilita è crittografata e autenticata in modo “forte”: solo il client in possesso della chiave privata corrispondente alla pubblica sul server è in grado di collegarsi.
Avviate il tutto con il client di connessione a desktop remoto, collegandovi a localhost:5555. Se il client si rifiuta, fate riferimento a questo post.
Potrete facilmente ottenere la connessione a servizi diversi semplicemente modificando l’ultima riga del file server.zbd, magari seguendo la documentazione. (Ricordarsi di riavviare il servizio dopo le modifiche). La connessione avverrà verso localhost, sul numero di porta da voi scelto.
Per arrestare la comunicazione dovete uscire dal client RDP e poi “uccidere” il processo zebedee nel task manager del client.