Per diverso tempo ho cercato un server VPN che soddisfacesse a pieno le mie necessità. Già diversi anni fa la mia scelta é ricaduta su OpenVPN, una tecnologia solida, sicura e molto performante, disponibile sia per Windows che per Linux e Mac OSX e che quindi mi permette di non essere legato ad una particolare architettura software.

Fino ad un anno fa utilizzavo OpenVPN sui sistemi aziendali grazie al plugin Zerina per l’ottimo IPCop. IPCop che, però, sta tardando eccessivamente nel rilascio della versione 2.0 e che non era più adeguato alle nostre necessità. Mi sono messo quindi alla ricerca di soluzioni alternative ma purtroppo non riuscivo a trovare distribuzioni che mi rendessero del tutto soddisfatto. Chi aveva problemi con le configurazioni, chi non supportava Active directory, chi faceva cadere la connessione dopo 5 minuti di inattività eccetera.

Finalmente, due mesi fa, mi sono imbattuto nella distribuzione ufficiale OpenVPN. OpenVPN Access Server é per l’appunto un server OpenVPN completo di tutto il necessario, preconfigurato e che non richiede particolari alterazioni al sistema (ovviamente é necessario un server Linux) su cui si decide di installarlo.

Nel momento in cui scrivo viene distribuito in due modalità: sotto forma di pacchetto precompilato, o come macchina virtuale preconfezionata.

La versione pacchettizzata supporta le maggiori e più importanti distribuzioni Linux: CentOS, Ubuntu, RedHat 9 Enterprise e Fedora Core. Visto che si parla di un server VPN che dovrà servire diversi utenti aziendali, il mio consiglio é comunque quello di orientarsi verso una delle due “sorelle”: RedHat o CentOS.

L’edizione virtuale viene invece distribuita per VMWare Workstation/Server, per Microsoft Hyper-V o per VMWare ESXi. Nel mio caso, a me serviva una versione per XenServer, che non é disponibile, e sono quindi partito dalle creazione da zero della macchina virtuale con conseguente installazione degli XenTools.

Installazione di OpenVPN Access Server

L’installazione é molto semplice. Daremo per scontato che un server Linux sia già installato e funzionante e che abbia le seguenti caratteristiche:

  • Sistema Operativo: CentOS 5.5
  • 2 CPU
  • 2GB di RAM
  • 1 scheda di rete

Come prima cosa colleghiamoci al sito ufficiale e scarichiamo ed installiamo il pacchetto precompilato per il nostro server. Nel nostro caso, effettueremo il download della versione per CentOS.

# wget http://swupdate.openvpn.net/as/openvpn-as-1.7.0-CentOS5.i386.rpm
# rpm -Uhv openvpn-as-1.7.0-CentOS5.i386.rpm

Al termine dell’installazione dovremo scegliere una password per l’utente openvpn, indispensabile per eseguire il login sull’interfaccia web di amministrazione

# passwd openvpn

Configurazione del sever

Dopo aver completato l’installazione si procederà alla configurazione, accedendo alla Web Interface di amministrazione, all’indirizzo che ci sarà stato fornito dall’installer, che tipicamente sarà qualcosa di questo tipo: https://indirizzo.ip.openvpn:934/admin

Configurazione delle impostazioni di rete

  • Hostname or IP Address: l’indirizzo IP, o il FQDN, del nostro server OpenVPN
  • Interface and IP Address: abbiamo una sola scheda di rete, e comunque per ragioni di sicurezza mettiamo il server in ascolto solamente sulla eth0
  • Protocol: Both (Multi-daemon mode)
  • TCP Port number: di default è impostato sulla porta 1194, che é la standard di OpenVPN. Questo é un server VPN aziendale, per cui si presuppone che debba fornire servizi a personale in mobilità. La stragrande maggioranza degli alberghi ha proxy e captive portal che filtrano la maggior parte delle connessioni in uscita, e che ci darebbero sicuramente problemi. Per questa ragione, vi consiglio di sostituire la porta di default con una classica 443.

VPN Settings

Qui ho lasciato quasi tutto impostato di default. Il server é in grado di assegnare in DHCP un ip dinamico ad ogni client che si connette, e di gestire autonomamente il routing verso l’esterno. Di default la rete riservata agli utenti VPN é la 5.5.0.0/20

Nella sezione Routing ho dichiarato le reti a cui gli utenti possono avere accesso

Authentication

Il mio server si dovrà joinare ad un dominio Active Directory, in modo da gestire gli utenti in un unico archivio centrale. Dovremo quindi selezionare LDAP, salvare le impostazioni e spostarci nella relativa scheda di configurazione.

Click per ingrandire

Immettiamo queste informazioni:

  • Indirizzo IP del nostro server Active Directory
  • Le credenziali di accesso dell’amministratore
  • La base di ricerca LDAP

E premiamo Save settings al termine. Se i dati immessi sono corretti, la relazione di sync dovrebbe funzionare, e da questo momento la gestione delle credenziali sarà un problema di Active Directory.

User Permissions

In questa sezione andremo a creare gli utenti autorizzati a collegarsi alla VPN. Come detto, la gestione delle credenziali è affidata a Active Directory, ma per ragioni di sicurezza sarà l’amministratore a decidere chi potrà o meno utilizzare il server.

Per abilitare un nuovo utente non dovremo fare altro che inserire il suo nome nel campo New Username e premere Save Settings. Una volta creato, il nuovo utente comparirà nell’elenco e potremo decidere alcune impostazioni aggiuntive. Potrà essere a sua volta amministratore, o potrà essere autorizzato ad eseguire l’autologin evitando, cioé, di inserire ogni volta le proprie credenziali in fase di connessione alla VPN.

Personalmente preferisco evitare l’autologin quanto più possibile, sempre per ragioni di sicurezza.

Completamento e messa in opera

Complimenti, il vostro server OpenVPN è pronto e funzionante. Non vi resta altro che aprire le porte necessarie (se avete seguito la guida, saranno la 443/TCP e la 1194/UDP)  nel vostro NAT e testare il primo collegamento.

Aprite il vostro browser e puntatelo sull’indirizzo pubblico assegnato al server:

https://indirizzo.pubblico.server.openvpn

Dopo essere stati avvisati dal browser che il certificato non é valido (ovviamente… é un certificato self-signed, che potremo però validare in un secondo momento), ci si presenterà dinanzi la schermata di login

Inseriamo le credenziali dell’utente precedentemente creato, scegliamo “Connect” dal menu a tendina e premiamo “Go”.

Se questo é il nostro primo collegamento, il server ci avviserà della mancanza sul client del plugin OpenVPN Connect. Ci verrà quindi proposto un link per il download dello stesso. Una volta installato, il plugin inizierà un dialogo col server ed otterrà tutte le configurazioni necessarie per il nostro utente. La configurazione quindi avviene in modo totalmente automatico.

Dopo pochi istanti l’utente risulterà connesso, e potrà verificare alcuni dati relativi alla connessione, che appariranno nella finestra del suo browser

Licensing

OpenVPN Access Server é uno strumento davvero eccezionale, che mi soddisfa a pieno. E’ gratuito fino a 2 connessioni concorrenti (utenti illimitati). In caso vi servano più connessioni contemporanee, dovrete acquistare delle licenze.

Il costo è estremamente contenuto: appena 5$/sessione, con un minimo acquistabile di 10.

Si ringrazia Digital System per aver fornito il materiale e per aver sopportato le mie domande 🙂