
In questo tutorial mostrerò come mettere in piedi una Rete Privata Virtuale (VPN) tra due computer con sistema operativo Windows XP. Sebbene Windows XP abbia il supporto nativo per le VPN e integri anche le funzionalità di Server VPN, il limite di questa soluzione sta nel numero massimo di connessioni VPN contemporanee che purtroppo è limitato ad una sola connessione. Per fortuna esistono soluzioni Open Source che consentono di superare questi limiti e che non obbligano il singolo utente o la piccola azienda, ad acquistare un costoso sistema operativo server come Windows Server 2003.
La soluzione che ho scelto di adottare si chiama OpenVPN, in particolare ho utilizzato una versione di OpenVPN che ha un minimo di interfaccia grafica e che si chiama OpenVPN GUI. OpenVPN è un software open source che consente di creare tunnel VPN sicuri facendo ricorso ai protocolli SSL/TLS (Secure Socket Layer/Transport Layer Security) ed implementando l’autenticazione utente basata su Certificati Digitali, Smart Card oppure semplice combinazione di Username e Password.
La configurazione di OpenVPN sia lato server che lato client non è proprio intuitiva per chi si cimenta per la prima volta con questo software. Come in tutte le soluzioni open source/multipiattaforma che si rispettino, la configurazione viene effettuata non da interfaccia grafica ma da riga di comando.
OpenVPN supporta due modalità di collegamento differenti tra client e server: Bridged e Routed. In questo tutorial utilizzerò la prima modalità che ha i seguenti vantaggi sulla seconda:
I messaggi Broadcast attraversano la VPN. Questo consente l’utilizzo di protocolli quali NetBIOS e la conseguente possibilità di elencare le risorse di rete condivise sui vari computer della VPN.
Non è necessario configurare manualmente route statiche
E possibile utilizzare qualsiasi protocollo che funzioni su collegamenti Ethernet come IPv4, IPv6, Netware IPX, AppleTalk, etc…
Configurazione relativamente semplice
La prima operazione successiva all’installazione del software, è quella di installare la CA (Certification Authority) e di generare il certificato Master (o chiave pubblica Master) e la chiave privata Master della CA.
La seconda operazione da farsi sempre sul server, è quella di generare i certificati e le chiavi private per Server e Client e firmarli con le chiavi Master della CA create in precedenza.
A questo punto si devono generare i parametri Diffie-Hellmann. Questo algoritmo viene utilizzato per generare la cosiddetta “Session Key” che per default viene rigenerata ogni ora. L’algoritmo RSA viene utilizzato per firmare i certificati del server e dei client e anche per l’autenticazione, mentre non viene utilizzato per generare la chiave di sessione per ragioni di performance. Nel Diffie-Hellmann, invece, è la generazione dei parametri ad essere particolarmente lenta (operazione da farsi una volta sola), mentre le chiavi vengono generate in tempi molto brevi.
Dopo aver generato i parametri Diffie-Hellmann creiamo una chiave statica a 2048 bit che verrà utilizzata per aggiungere un ulteriore livello di protezione alla nostra VPN. OpenVPN prevede infatti l’aggiunta di una firma (signature) a tutti i pacchetti SSL/TLS scambiati tra client e server. Qualsiasi pacchetto che non abbia la corretta signature, verrà eliminato brutalmente senza ulteriori processi. Questa soluzione ci protegge efficacemente dai seguenti attacchi:
Attacchi di tipo Denial of Services (DoS)
Port Scanning
Vulnerabilità di tipo Buffer Overflow nell’implementazione dei protocolli SSL/TLS
Negoziazioni SSL/TLS iniziate da computer non autorizzati
Per attivare questa funzionalità è sufficiente abilitare la direttiva tls-auth nel file di configurazione di Server e Client. Da notare inoltre, che OpenVPN utilizza per default il protocollo UDP in quanto è più leggero e garantisce una maggiore protezione proprio contro attacchi di tipo Denial of Services.
Per finire, procediamo alla creazione del Bridging tra la nostra scheda di rete e la connessione creata da OpenVPN. I certificati e le chiavi private per server e client devono essere generati solo sul Server. Successivamente si dovrà copiare su ogni client la coppia di chiavi pubblica/privata che deve essere diversa per ogni client oltre naturalmente al certificato Master della CA (ca.crt).
Nel video sia il Server che il Client sono “nattati”, ovvero stanno dietro ad un Router. Lato Server ho dovuto effettuare il Port Forwarding della porta UDP 1194 verso l’indirizzo IP del computer che funge da Server VPN e creare il bridging. Lato Client invece è bastato mettere in Bridging la connessione LAN con quella installata da OpenVPN ed assegnare alla connessione Bridged gli stessi parametri della connessione LAN originaria. Se sul Client o sul Server si utilizza un modem invece che un router, allora non è necessario creare il Bridge, ma è indispensabile disabilitare tutte le connessioni di rete non necessarie (quest’ultima operazione va’ fatta anche su configurazioni Bridged).
IMPORTANTE: Nella modalità Bridged sia il Client che il Server devono appartenere alla stessa sottorete (es. 192.168.0.0). Nel caso in cui Client e Server si trovino su due sottoreti diverse (es. 192.168.0.0 uno e 10.0.0.0 l’altro), è indispensabile configurare OpenVPN nella modalità Routed. La modalità Routed è anche più semplice da configurare in quanto è la modalità predefinita di OpenVPN.
Lato server bisogna abilitare le direttive dev tun e server avendo cura di disabilitare le corrispondenti direttive necessarie invece per la modalità Bridged (vedere esempio):
Quote:
;dev tap
dev tunserver 10.8.0.0 255.255.255.0
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
Nel suddetto esempio i Client riceveranno un indirizzo IP compreso tra 10.8.0.2 e 10.8.0.254 mentre il Server si auto-assegnerà l’indirizzo IP 10.8.0.1. La classe di indirizzi IP utilizzata nella direttiva server, DEVE essere diversa da qualsiasi altra classe di IP reale presente sia lato Client che lato Server.
Lato Client è sufficiente abilitare la sola direttiva dev tun (vedere esempio):
Quote:
;dev tap
dev tun
A questo punto è necessario impostare a 1 la chiave di registro IPEnableRouter sia sul Client che sul Server VPN e riavviare i computer affinché la modifica abbia effetto:
Codice:
Percorso.: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Nome Voce: IPEnableRouter
Valore…: 1
Tipo…..: DWORD
NOTA: Nella modalità Routed NON è necessario creare il Bridging tra la scheda di rete del computer e la scheda di rete virtuale creata da OpenVPN. Se si desidera passare da una configurazione Bridged ad una configurazione Routed, è indispensabile rimuovere il bridge tra le due interfacce.