Come configurare una rete VPN professionale con OpenVPN e DD-WRT

Una VPN (acronimo di Virtual Private Network) può essere considerata come un'estensione di una rete privata che si occupa di instaurare dei "collegamenti" tra due o più sistemi che debbono scambiarsi dati in modo sicuro, utilizzando una...

Una VPN (acronimo di Virtual Private Network) può essere considerata come un’estensione di una rete privata che si occupa di instaurare dei “collegamenti” tra due o più sistemi che debbono scambiarsi dati in modo sicuro, utilizzando una rete condivisa o comunque pubblica qual è Internet.
Una rete VPN permette di scambiare dati in modo simile a quanto accade in una connessione privata punto-punto. L’approccio utilizzato dà modo di rendere il computer remoto parte di una rete privata interna alla struttura aziendale creando un “tunnel” virtuale attraverso la rete Internet.
Per simulare un collegamento punto-punto, i dati vengono incapsulati con l’aggiunta di un’intestazione che fornisce le informazioni di routing e cifrati in modo da renderne possibile la lettura da parte di eventuali aggressori, sprovvisti delle necessarie chiavi crittografiche.

OpenVPN è una valida soluzione opensource, disponibile per svariati sistemi operativi, che consente di implementare una VPN professionale a costo zero. Accanto ad OpenVPN utilizzeremo DD-WRT, un firmware personalizzato in grado di supportare decine di router differenti, delle marche più disparate. Il software viene rilasciato sotto licenza GNU GPLv2 ed è quindi utilizzabile senza problemi in qualunque contesto d’impiego, sia in ambienti domestici che commerciali. DD-WRT offre anche la possibilità di utilizzare OpenVPN: il suo modulo server consente di accettare connessioni in ingresso da parte dei client autorizzati. Questi ultimi saranno così in grado di navigare su Internet “in modo sicuro”, passando attraverso un tunnel crittografato ed evitando che i dati inviati e ricevuti possano essere intercettati da qualche malintenzionato. E’ ovvio, quindi, che una connessione VPN si rivela di vitale importanza ogniqualvolta ci si trovasse, in qualunque parte del mondo, ad usare un collegamento potenzialmente rischioso (una rete Wi-Fi pubblica od un network sconosciuto) per la riservatezza dei propri dati. Il “tunnel” virtuale permetterà di accedere alla rete Internet ed alla propria LAN domestica od aziendale servendosi di un canale cifrato: tutte le informazioni in transito non potranno così essere carpite da parte degli eventuali aggressori “in ascolto”.

L’utilizzo di un firmware personalizzato qual è DD-WRT ha un’innegabile vantaggio: lasciando il router acceso, si potrà “navigare” in Rete in tutta sicurezza, in qualuque angolo del globo ci si trovi, senza esporre informazioni personali e senza correre, quindi, alcun rischio.

Il firmware di un dispositivo qual è un router può essere pensato come un “programma” integrato capace di interagire con i vari componenti hardware. In apparati di media complessità quali sono i router, il termine firmware ha un significato più ampio stando ad indicare anche il vero e proprio sistema operativo preinstallato nel dispositivo. Tutti i moderni router dispongono di una comoda interfaccia web che, accessibile semplicemente ricorrendo al browser, permette di gestire in modo agevole la configurazione del device e regolare in profondità il suo comportamento.
Quando si acquista un router, di qualunque marca, questo utilizza di default un firmware (da mantenere possibilmente aggiornato nel corso del tempo attraverso l’applicazione degli update ufficiali) sviluppato dai tecnici dell’azienda produttrice.
Talvolta, però, alcune interessanti funzionalità non sono implementate direttamente all’interno del firmware ufficiale: un prodotto a costo zero quale DD-WRT consente di abilitare caratteristiche di grande interesse per gli utenti più esperti (routing statico, gestione di reti VPN, esecuzione di operazione su base programmatica e così via).
Se si dispone di un router ormai fuori garanzia e si volessero saggiare i vantaggi derivanti dall’impiego di DD-WRT, è sufficiente fare riferimento al sito web ufficiale del progetto per ottenere tutte le informazioni del caso.

In particolare, la prima operazione da effettuare, consiste nel cercare il modello del proprio router all’interno del database di DD-WRT (ved. questa pagina). Digitando il modello del dispositivo di cui si è in possesso, è possibile stabilire immediatamente se tale router sia o meno supportato da DD-WRT. Alcuni router, ad esempio quelli equipaggiati con il chipset Marvell, non supportano in nessun modo l’installazione del firmware DD-WRT.

Attenzione! L’installazione di DD-WRT effettuata “con leggerezza” e senza seguire attentamente tutti i passaggi raccomandati potrebbe condurre al cosiddetto “bricking” del dispositivo ovvero all’impossibilità di accedervi. Suggeriamo quindi di agire con la massima cautela tenendo presente che qualunque modifica apportata al funzionamento del router viene effettuata sotto la vostra piena ed esclusiva responsabilità. In questo articolo vogliamo fornire solamente alcuni indicazioni a valore generale che però dovranno essere approfondite consultando il sito ufficiale di DD-WRT e le pagine di supporto per ciascun modello di router.

– Prima di installare il firmware DD-WRT è sempre necessario effettuare un hard reset del router. Così facendo si perderanno tutte le configurazioni personalizzate precedentemente applicate al dispositivo. L’operazione di hard reset si concretizza nella cosiddetta procedura 30/30/30.
Illustrata dettagliatamente a questo indirizzo, può essere riassunta in tre passi: il primo, consiste nella pressione del pulsante “reset” del router per un periodo di tempo pari a 30 secondi; in seconda battuta – sempre tendendo premuto il pulsante “reset” del router – si dovrà scollegare il dispositivo per 30 secondi; infine, come ultimo passo, si dovrà ricollegare il device alla rete elettrica continuando a mantenere premuto il tasto di “reset” per ulteriori 30 secondi. La medesima prassi deve essere applicata prima e dopo qualunque upgrade o downgrade del firmware. Infine, non si debbono mai usare file di backup della configurazione che siano stati generati con differenti versioni del firmware adottato.
Prima di procedere, suggeriamo di controllare le pagine di supporto che sono state create dagli autori di DD-WRT sul sito web del progetto (ved. il Wiki ufficiale).

Per installare DD-WRT sul proprio router sovrascrivendo il firmware preinstallato, si dovrà accedere al pannello di controllo web (esempio: http://192.168.1.1 o http://192.168.0.1), digitare le credenziali d’accesso corrette, portarsi nella sezione Amministrazione (l’esatta denominazione potrebbe differire da un modello di router all’altro), selezionare Aggiornamento software od Aggiornamento firmware e selezionare il file .bin di DD-WRT scaricato dal sito ufficiale del progetto.

L’operazione di caricamento del firmware di DD-WRT potrebbe durare diversi minuti. E’ importante non interrompere per nessun motivo l’operazione ed assicurarsi, prima di effettuarla, ancora una volta, di aver seguito tutti i suggerimenti pubblicati sul sito web di DD-WRT.
Al termine dell’aggiornamento, non appena verrà confermata l’avvenuta operazione, si dovrà effettuare nuovamente la procedura di hard reset 30/30/30 precedentemente riassunta.

A questo punto, si potrà accedere al pannello di amministrazione di DD-WRT digitando, tipicamente, l’indirizzo http://192.168.1.1 nel browser web.

Al primo accesso in DD-WRT verrà richiesto di modificare le credenziali d’accesso usate per l’ingresso nel nuovo pannello di amministrazione del router:

Nei campi Router Username e Router Password si dovranno specificare, rispettivamente, un nome utente ed una password, sufficientemente lunga e complessa, per accedere all’interfaccia di amministrazione di DD-WRT. La medesima password dovrà essere ovviamente ripetuta nel campo Re-enter to confirm.

Installazione di OpenVPN e generazione dei certificati

L’ultima versione del pacchetto OpenVPN, contenente anche l’interfaccia grafica (GUI), in precedenza distribuita separatamente, è prelevabile – nella versione per Windows – facendo riferimento a questa pagina quindi cliccando sul link openvpn-2.1.4-install.exe.

OpenVPN può essere configurato, in Windows, come servizio di sistema: ciò significa che il programma verrà automaticamente avviato insieme con il sistema operativo. Il software può essere impostato affinché abiliti automaticamente il “tunnel” oppure effettui quest’operazione solamente su esplicita richiesta dell’utente.

Per avviare l’installazione di OpenVPN, è sufficiente fare doppio clic sul file eseguibile precedentemente scaricato. Nel caso in cui si utilizzi un “personal firewall”, si dovrà acconsentire alle comunicazioni messe in atto da OpenVPN. Alla comparsa del messaggio che informa circa il tentativo di installazione di un driver di periferica virtuale (TAP-Win32), si dovrà rispondere affermativamente accettandone il caricamento sul sistema in uso:

La procedura d’installazione di OpenVPN è chiara e semplice da condurre a termine.
L’unica riflessione dovrà essere effettuata alla comparsa della finestra per la scelta dei componenti da installare. Di solito, le impostazioni predefinite sono valide per la maggior parte di casi.

Nell’elenco che riportiamo di seguito, tuttavia, indichiamo quali componenti si rivelano indispensabili per un’installazione server e quali su una macchina client:

OpenVPN User-Space Components:  client server
OpenVPN GUI:  client
OpenVPN RSA Certificate Management Scripts: server
OpenVPN Service:  server
OpenVPN File Associations:  client server
OpenSSL DLLs:  client server
OpenSSL Utilities:  client server
TAP Virtual Ethernet Adapter:  client server
Add OpenVPN to PATH:  client server
Add Shortcuts to Start Menu:  client server

Installando la GUI di OpenVPN (scelta consigliata), non appena si cliccherà sull’omonima icona aggiunta al desktop di Windows, nella traybar in basso a destra apparirà un’indicazione circa l’avvenuto avvio del programma.

Una volta conclusa l’installazione di OpenVPN, si dovrà proseguire con l’apertura di una finestra dei comandi con i diritti di amministratore. Nel caso di Windows 7, ad esempio, si dovrà digitare cmd nella casella Cerca programmi e file del menù Start, cliccare con il tasto destro del mouse sulla voce cmd.exe posta immediatamente sotto la dizione Programmi e scegliere Esegui come amministratore:

Il prompt dei comandi visualizzerà il percorso c:\windows\system32.

In prima battuta è adesso necessario portarsi nella cartella \Programmi\OpenVPN\easy-rsa o \Program files\OpenVPN\easy-rsa (es.: cd\Program files\OpenVPN\easy-rsa).
Da qui, si dovrà eseguire il file init-config:

In questo modo alcuni file saranno automaticamente copiati nella cartella di lavoro di OpenVPN.

Sempre dal prompt dei comandi si dovrà digitare edit vars.bat. Scorrendo la finestra dell’editor di testo con i tasti freccia, portandosi quasi in fondo al file, si noterà la presenza di alcune variabili precedute dal comando SET.

Tale comando SET, ben noto a coloro che anni fa utilizzavano il DOS, consente di visualizzare, impostare o rimuovere le cosiddette “variabili di ambiente”, utilizzate dal sistema per attingere a delle informazioni di validità generale.
In questo file, generalmente, non si deve cambiare nulla a parte le ultime cinque righe. Esempio:

set KEY_COUNTRY=IT
set KEY_PROVINCE=IT
set KEY_CITY=Milano
set KEY_ORG=MiaAzienda
set KEY_EMAIL=miaemail@miaazienda.it

Dopo aver effettuato le modifiche del caso, è possibile salvare il file vars.bat selezionando il menù File, Save.
Per uscire dall’editor di testo, basterà selezionare File, Exit.

Dal prompt dei comandi si digiti quindi vars premendo poi il tasto Invio.
Al termine dell’operazione, è necessario invocare clean-all e premere Invio.

Creazione dei certificati e delle chiavi Diffie-Hellman

E’ il momento di produrre le chiavi che saranno utilizzate nelle comunicazioni cifrate. Grazie al protocollo Diffie-Hellman, due “interlocutori” possono scambiarsi una chiave segreta in modo sicuro. Non è infatti pensabile, per evidenti motivi legati all’intrinseca insicurezza che contraddistingue la rete Internet, scambiare tra un computer e l’altro un “file chiave” (soluzione a chiave simmetrica). Grazie a Diffie-Hellman è possibile superare brillantemente l’ostacolo.
Uno speciale algoritmo garantisce infatti che solo gli interlocutori coinvolti nella comunicazione conoscano la chiave utilizzata per crittografare i “messaggi”.

Ricorrendo al protocollo crittografico Diffie-Hellman, due interlocutori possono così accordarsi sull’utilizzo di una chiave condivisa e segreta utilizzando un canale di comunicazione pubblico e quindi da considerarsi potenzialmente insicuro qual è la Rete.

Digitando al prompt dei comandi build-dh, verrà generata una chiave Diffie-Hellman. L’operazione, per poter essere portata a completamento, può richiedere qualche minuto di attesa.

Il passo seguente consiste nell’avvio della procedura di creazione di un certificato che sarà impiegato per creare e firmare altri certificati e quindi autenticare altre macchine.

Per dare il via all’operazione, è sufficiente digitare build-ca al prompt dei comandi (sempre dalla cartella easy-rsa di OpenVPN).
A seconda delle informazioni specificate poco fa nel file vars.bat, potrebbe essere o meno necessario inserire i vari parametri richiesti.

Com’è possibile notare, avendo modificato secondo le esigenze il file vars.bat, possiamo accettare molte delle impostazioni di default premendo semplicemente il tasto Invio.

Attenzione però! Non appena comparirà la dizione Common name, è bene indicare un nome facile da ricordare che servirà per la configurazione dei client VPN. L’importante è non lasciare vuoto il campo.

A conclusione di questa fase, la sottocartella keys si sarà popolata di diversi file (provate a digitare al prompt dir keys). Il certificato ca.crt risulterà necessario per tutte le macchine remote che vorranno collegarsi al server VPN mentre il file dh1024.pem o dh2048.pem, contenente la chiave Diffie-Hellman, deve essere disponibile solo sul server OpenVPN (lo vedremo più avanti).

Il file ca.key deve essere mantenuto assolutamente segreto e non va inviato a nessuno.

Generazione dei certificati per server e client

Generazione delle chiavi lato server

Così come un passaporto è inutilizzabile se non vidimato dalle autorità locali, anche i certificati OpenVPN non possono essere usati qualora non fossero stati preventivamente “autorizzati” dal gestore del server.

Si digiti, quindi, al prompt dei comandi quanto segue: build-key-server Server. Il parametro Server indica il nome che sarà attribuito ai file prodotti.
Il file batch provvederà a produrre una chiave RSA privata da 1024 o 2048 bit, a seconda della configurazione di OpenVPN. Ancora una volta, i valori derivati dal file vars.bat vengono offerti come predefiniti: per accettarli è sufficiente premere il tasto Invio.
Alla comparsa della stringa Common name si dovrà aver cura di introdurre esattamente lo stesso nome assegnato al server (ad esempio: Server).

Ogniqualvolta viene richiesta la generazione di una coppia di chiavi (pubblica e privata) per il server VPN ricorrendo a build-key-server, nel campo Common name va specificato l’esatto nome della macchina server sulla quale si intende usare il certificato.

Si possono anche inserire parametri aggiuntivi come una password che deve essere indicata ogniqualvolta si desideri usare il certificato. Nel caso in cui si decida di indicare una password, niente e nessuno potrà connettersi alla VPN senza l’uso della parola chiave specificata.
Alla comparsa del messaggio Sign the certificate si dovrà rispondere in modo affermativo digitando “y” e premendo Invio.
Analoga risposta va fornita alla visualizzazione del messaggio “1 out of 1 certificate requests certified, commit?“.

Nella sottocartella keys saranno così aggiunte anche le informazioni relative alle chiavi utilizzate dal server VPN.

Impostazione dei certificati client

Per la generazione delle chiavi da impiegare sui client, è necessario usare il comando build-key client1 ove client1 è il nome del sistema client. Tale appellativo può essere scelto liberamente senza però utilizzare spazi o caratteri speciali. In corrispondenza della stringa Common name va introdotta, questa volta, la stringa client1 ripetendo la medesima procedura seguita nel caso della generazione della chiave server. Come ultimo passo si dovrà, come in precedenza, richiedere di firmare il certificato (Sign the certificate).

I file client1.* che saranno creati nella directory keys potranno poi essere salvati sul sistema client che dovrà potersi connettere al server VPN (i file strettamente necessari, come vedremo più avanti, sono ca.crt, client1.crt e client1.key).

IP statico o DNS dinamico

Il router sul quale è stato installato il firmware DD-WRT deve obbligatoriamente fare uso di un IP statico oppure essere raggiungibile utilizzando un indirizzo “mnemonico” (ad esempio, nomeazienda.dyndns.org). Se il proprio provider Internet non offre un indirizzo IP statico ma assegnare sempre un IP dinamico, è possibile impostare un servizio per la gestione del DNS dinamico qual è, appunto, DynDNS.

In questo nostro articolo di approfondimento, che vi invitiamo a rileggere, abbiamo illustrato la procedura passo-passo per attivare il servizio DynDNS e per configurare il router in modo corretto.

Impostazione dell’indirizzo IP associato al router

Sia che si disponga di un IP statico che si utilizzi un DNS dinamico, si dovrà accedere alla cartella \Programmi\OpenVPN\sample-config (cd\Program files\OpenVPN\sample-config) ed editare il file denominato client.ovpn (edit client.ovpn).

Tale file di configurazione dovrà essere completamente riscritto inserendovi solamente quanto segue:
client
dev tun
proto tcp
remote indirizzo_IP_o_indirizzo_mnemonico 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
cipher AES-128-CBC
comp-lzo
verb 4

Prima di salvare il file, è bene controllare più volte di impostare correttamente l’indirizzo IP del router DD-WRT e i nomi (Common name) assegnato al primo dei client.

Configurazione del server OpenVPN di DD-WRT

Il lavoro più importante è stato già compiuto. Adesso le ultime due operazioni che restano da svolgere sono la configurazione del modulo OpenVPN di DD-WRT e dei vari client autorizzati a collegarsi alla VPN.

Per procedere, è necessario effettuare il login al pannello di amministrazione di DD-WRT quindi portarsi nella scheda Services. Qui, cliccando su VPN si dovrà abilitare la funzionalità OpenVPN Server:

Compariranno, immediatamente più sotto, una serie di opzioni addizionali. In primis, è molto importante selezionare Wan Up al posto di System.
Come Server mode noi abbiamo optato per Router (TUN).

Nel campo Network è indispensabile indicare la classe di indirizzi IP alla quale devono appartenere i client connessi alla rete VPN (nel nostro caso abbiamo indicato 192.168.10.0).

In corrispondenza di Tunnel protocol si dovrà specificare TCP, AES-128 CBC come Encryption Cipher, SHA1 come algoritmo di hash. Abilitando le Advanced options, si dovrà impostare le opzioni successive come di seguito riportato:

Nelle caselle di testo sottostanti (Public Server Cert e seguenti) si dovrà aver cura di incollare il contenuto di alcuni file precedentemente creati con OpenVPN.

Per maggior chiarezza, accanto alla denominazione riportata a lato di ciascuna casella di testo, indichiamo il nome del file il cui contenuto deve essere incollato:

Public Server Cert -> server.crt
CA Cert -> ca.crt
Private Server Key -> server.key
DH PEM -> dh1024.pem o dh2048.pem

I campi TLS Auth key e Certificate revoke list devono essere lasciati vuoti.
I file sopra citati, lo ricordiamo, sono contenuti nella sottocartella keys di OpenVPN.

Terminato quest’intervento, si potrà provvedere a salvare tutte le modifiche cliccando sul pulsante Save in calce alla pagina.

Come ultimo passo è indispensabile portarsi nella scheda Setup di DD-WRT ed in corrispondenza del riquadro Time Settings (in fondo alla sezione Basic Setup) accertarsi che le informazioni inserite siano corrette. In particolare, in corrispondenza della casella Server IP/Name è bene inserire l’indirizzo di un server remoto che fornisce l’orario esatto mediante l’uso del protocollo NTP (ad esempio: ntp1.inrim.it; il servizio è gestito dall’Istituto Nazionale di Ricerca Metrologica; ved. questa pagina).

Preparazione dei vari sistemi client

L’ultima operazione da compiere consiste nella configurazione delle varie workstation che dovranno poter collegarsi alla rete VPN.

Sul sistema client, è necessario installare la medesima versione di OpenVPN, come spiegato nella prima parte dell’articolo quindi accedere immediatamente alla cartella \Programmi\OpenVPN\config e copiarvi i seguenti file:
client1.crt
client1.key
ca.crt

Tali file dovranno essere recuperati attingendo alla cartella \Programmi\OpenVPN\easy-rsa\keys del sistema sul quale si sono generati, in precedenza, i vari certificati. Sempre nella cartella \Programmi\OpenVPN\config del sistema client dovrà essere collocato anche il file client.ovpn, memorizzato nella directory \Programmi\OpenVPN\sample-config del sistema utilizzato per l’impostazione di OpenVPN.

Adesso è davvero tutto pronto: basterà eseguire la GUI di OpenVPN dal menù Programmi di Windows accertandosi di avviare l’applicazione con i diritti di amministratore.
Per evitare di dimenticarsi questo importante aspetto, suggeriamo di fare clic col tasto destro del mouse sul collegamento di OpenVPN GUI, selezionare la voce Proprietà, la scheda Compatibilità quindi spuntare la casella Esegui questo programma come amministratore.

Per avviare la connessione alla rete VPN, si dovrà fare clic con il tasto destro sull’icona di OpenVPN, esposta nella tray bar di Windows, quindi selezionare il comando Connect:

Se non si saranno commessi errori nella fase di configurazione di OpenVPN, il collegamento dovrebbe avrebbe luogo (l’icona di OpenVPN mostrerà due piccoli computer di colore verde).

Ti consigliamo anche

Link copiato negli appunti