VPN LAN2LAN client-to-sites

Aggirandomi nel forum di Zeroshell ho colto la necessità di documentare la possibilità di creare delle VPN LAN2LAN  in modalità client to site.

Dove per client  si intende:  da un capo del tunnel Zersoshell si comporta da client mentre dall’altro capo, sempre Zeroshell, si  comporta da server.

Questa configurazione è ultile in tutte le condizioni in cui abbiamo un solo IP PUBBLICO direttamente raggiungibile mentre dall’altro capo abbiamo sempre un ip pubblico ma o non direttamente raggiungibile o anche dinamico ma non vogliamo legarci ad una servizio di dyndns.

Utilizzerò la documentazione di Cristian Colombini come falsa riga.

Utilizzeremo l’installazione di Zeroshell sul sito A come CA, questa verrà utilizzata per la creazione del certificati X509 utilizzati poi dall’installazione di Zeroshell sul sito B.

La configurazione è documentata da Fulvio nella sezione OpenVPN

Autenticazione OpenVPN con certificati digitali X.509

L’autenticazione con certificati digitali X.509, in cui ogni utente che si voglia connettere in VPN necessita di un certificato digitale e della relativa chiave privata, può essere richiesta con o senza l’autenticazione con username e password a seconda che si scelga rispettivamente l’opzione X.509 Certificate + Password oppure Only X.509 Certificate dalla casella di scelta Authentication.
Nel primo caso, se l’autenticazione X.509 viene conclusa con successo, si passa ad una seconda autenticazione realizzata con Kerberos 5 o RADIUS come descritto in precedenza. In genere, quando si ricorre a questa doppia autenticazione, il certificato digitale X509 non è personale dell’utente, ma è un certificato host assegnato alla macchina. Ciò comporta una non precisa identificazione dell’utente (visto che più utenti possono connettersi dallo stesso sistema) e pertanto vengono richiesti anche username e password.
Nel secondo caso invece si utilizzano certificati personali assegnati all’utente in cui l’utente viene identificato dal Common Name (campo CN) del certificato. Ciò rende superflua un’ulteriore richiesta di credenziali.
Affinché un certificato client (sia esso personale assegnato all’utente o host assegnato alla macchina) venga riconosciuto come valido dal gateway OpenVPN sono necessarie due condizioni: la prima è che la Certification Authority (brevemente CA) che ha firmato il certificato sia nell’archivio delle Trusted CAs di Zeroshell; la seconda condizione è che tale CA sia autorizzata a convalidare l’accesso in VPN.

Per ottenere queste due condizioni, si faccia riferimento alla figura sottostante e si compiano i seguenti passi:

OpenVPN e autenticazione con certificati digitali X.509
Configurazione dell’autenticazione con certificati digitali. .

  • Cliccare sul pulsante [Authentication] nel frame X.509 Configuration. Come si può vedere sono caricati tre certificati di Autorità di Certificazione. Benché tutti i certificati digitali firmati da queste CA sono ritenuti autentici, soltanto quelli corrispondenti alla Certification Authority con il segno di spunta sono autorizzati alla connessione VPN. Nel nostro caso si tratta dei certificati rilasciati dalla CA di esempio di Zeroshell;
  • Cliccare sul pulsante [Trusted CAs Manager] e dal form che appare importare il certificato in formato PEM (codifica Base-64) dell’Autorità di Certificazione che si desidera autorizzare. Qualora si disponga di una Certificate Revocation List (CRL) per la pubblicazione dei certificati revocati, la si può caricare seguendo la stessa procedura seguita per l’importazione della CA stessa. Grazie alla CRL, i certificati che risultino revocati non avranno accesso al gateway VPN;
  • Tornando al form OpenVPN X.509 Authentication si noterà che la CA appena importata è ritenuta una fonte di certificazione attendibile. Per autorizzare il collegamento in VPN ai client che dispongono di un certificato rilasciato da tale Autorità di Certificazione è sufficiente apporre il segno di spunta nella casella di controllo corrispondente e premere il bottone [Save] per salvare.

che ho mutuato per la configurazione client2site della VPN.

In considerazione di questa caratteristica mi soffermo sulla creazione del profilo dell’installazione di Zeroshell sul sito A ( da ora chiamata zssitea)

  • creazione della partizione che ospiterà il profilo

  • creazione del profilo dove aggiungiamo una descrizione significativa, un nome host significativo zssitea ed infine una nuova password amministrativa

  • attivazione del profilo

  • login al nuovo profilo e modifica della CA, poniamo attenzione al CN ( common name ) alla validità ( 10 anni) ed alla modifica delle impostazioni di default

  • dal menu host aggiornare le impostazioni del host szsitea visto che la CA è cambiata e aggiungete anche descrizione ed e-mail. Più dati aggiungerete più sarà difficile confondersi, infatti abbiamo aggiunto nella descrizione anche il “role” che assumerà nella VPN, appunto server.

  • creazione del nuovo host zssisteb, useremo il certificato X509 associato a questo host per la VPN. Anche in questo caso abbiamo aggiunto alla descrizione il “role” che assumerà nella VPN, appunto client.

La schermata d’insieme è la seguente

  • creazione della VPN

osserviamo che abbiamo inserito come Remote Host 0.0.0.0 quindi TUTTI, si ma solo quelli che hanno il giusto certificato X509. Diamo il merito a Marco Pamio e dire che Fulvio l’aveva segnalata come idea da prendere come scuola. Ora nella sezione Role ovviamente scegliamo Server. Nella sezione X.509 Authentication abbiamo OU=Hosts, CN=zssistea.example.com, ma la mia idea è rendere il sito A l’unico referente per l’autenticazione

  • variamo la sezione X.509 Authentication in modo da evidenziare OU=Hosts, CN=zssisteb.example.com

verifichiamo la CA che ha firmato il certificato X509

  • Creiamo la il nuovo profilo sulla macchina che farà da client nel tunnel VPN a partire dalla partizione

  • ora il vero e proprio profilo, osservate il nome (hostname FQDN)

  • attiviamo il profilo
  • creiamo la VPN00 sul SITEB, dove in Remote Host abbiamo l’ip pubblico ( di fantasia nel caso visualizzato) della macchina zssitea, in modalità “Role client” e osserviamo che al momento nella sezione X.509 Authentication abbiamo la configurazione di default che cambieremo

  • Importeremo la nuova CA ( quella del zssitea in Trusted CAs) e il certficato di zssiteb sull’installazione di Zeroshell sul sito B.

Ma prima

  • esportiamo il  Trusted CAs del sito A , da zssitea

  • esportazione dal sito A del certificato X.509 da inserire poi nel sito B

Ora non ci resta altro che importare questi due certificati sull’altro capo del tunnel VPN, site B, cos’ come descritto nella documentazione di Fulvio.

  • Import della Trusted CAs sul site B
  • Import del certificato X.509 sul sito B


  • osserviamo come si presenta la VPN00 sul sito B, nella sezione X.509 Authentication abbiamo Local CA con l’host corrispondente [ cn=vpnsiteb.example.com ]

  • se vediamo View ci mostra il certificato

  • ora cambiamo da Local CA a Imported CAs e la finestra ci avviserà che non abbiamo ancora selezionato nulla ( Certificate not selected )

  • allora dalla selezione Imported avremo la possibilità di aggiungere il nuovo certificato X.509 che non sarà altro il certificato X.509 in formato pem dell’host zssitea.

  • ora affinchè il certificato possa essere riconosciuto attendibile la CA che lo ha firmato deve essere presente nella lista delle Trusted Certification Authorities e quindi necessario aggiungere il il certificato in formato pem della CA sito A


to be continued …

Comments are closed.