Andrea Beggi

If I'm free, it's because I'm always running.

Autenticare e crittografare le connessioni con Zebedee

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

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:
Tunnel RDP via Zebedee

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.

5 Commenti

Cristian | #

Ciao Andrea,
ho seguito le tue istruzioni passo passo (almeno credo), ma quando vado a stabilire la connessione Desktop Remoto ottengo da Zebedee il seguente errore:
“ERROR: failed to read challenge from server”.
Da cosa può dipendere?

Grazie mille.

Giorgio | #

Ciao a tutti, debbo connettere il mio server con quello di un altro collega che utilizza Zebedee. Succede una cosa strana, dal mio portatile riesco ad instaurare la connessione, mentre se provo a farlo dal server il file di log di Zebedee riporta quanto segue:
zebedee(4644/7716): reading config file ‘./test.dbserver.connect.it.key’ at level 2
zebedee(4644/7716): Listening on local port 1522
zebedee(4644/7716): waiting for client connection

e la connessione non avviene, potete darmi qualche dritta ??? grazie, Giorgio

luca | #

quando lancio il comando sul client zebedee -f myclient.id -d 5555:mioserver.com:3389, alla prima riga esce questo errore:invalid line in config file myclient.id at line 1

Claudio | #

Ciao Andrea, seguo il tuo blog da tempo e lo prendo spesso come riferimento per il lavoro quotidiano. La soluzione Zebedee era molto interessante, ma il progetto è fermo al 2005. Tu continui ad usarlo regolarmente oppure hai una valida alternativa, comunque così pratica, da consigliare oggi?
Grazie infinite
Claudio

Andrea | #

Sì, adesso uso OpenVPN, che è meglio. Trovi sul mio blog qualche post al riguardo….