In quest’articolo vedremo come installare OpenVPN per mettere in comunicazione sicura una rete di PC attraverso internet.
OpenVPN è una soluzione Open Source che opera in user space, creando un tunnel point-to-point TCP over UDP che permette, come si vedrà nel corso di questo articolo, la creazione di VPN.
L’installazione su server Linux è abbastanza semplice, basta seguire alcuni passi qui descritti:
Azioni preliminari
Prima di tutto dobbiamo installare l’applicazione OpenVPN. Possiamo usare un gestore pacchetti oppure compilarlo dai sorgenti. In debian, per installarlo tramite APT possiamo dare il comando:
apt-get install openvpn
Dopodiché, il nostro server sarà già pronto per essere configurato.
Il primo step da eseguire è la creazone di una CA e delle chiavi necessarie per l’autenticazione. Per questo passo ci viene in aiuto un set di scripts che sono contenuti sia nel sorgente, sia nel pacchetto debian installato con APT: easy-rsa.
Per controllare se e dove abbiamo questi tools possiamo usare locate:
updatedb locate easy-rsa
Normalmente li possiamo trovare in /usr/share/doc/openvpn
Una volta entrati sulla cartella easy-rsa/2.0, dobbiamo definire le variabili che gli scripts utilizzeranno per creare il nostro set di chiavi. Andremo quindi a modificare il file “vars” con le informazioni corrette. Se abbiamo tutte le dipendenze installate e correttamente funzionanti, dovremo solo modificare l’ultima parte dello script, che di default si predenta così:
export KEY_SIZE=1024 export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="[email protected]"
Io personalmente preferisco usare una chiave a 2048, perché è più sicura, mentre per le altre variabili dovremo inserire i nostri dati.
Configurazione del server OpenVPN
Ora dobbiamo creare le chiavi che utilizzerà il server OpenVPN.
Sempre nella cartella easy-rsa/2.0, inizializziamo le variabili con necessarie con:
. ./vars
e generiamo la CA e le chiavi con i seguenti comandi:
./build-ca ./build-key-server server #dove server è il nome del server openvpn ./build-dh
A questo punto le nostre chiavi e la nostra CA sono pronte e le possiamo copiare nella nostra directory di configurazione globale: /etc/openvpn
cp -Rp keys/ /etc/openvpn
E settare i permessi corretti:
chmod 700 /etc/openvpn/keys chmod 600 /etc/openvpn/keys/server.key #giusto per eccesso di zelo
Infine dobbiamo creare il file di configurazione, eccone uno standard di esempio (vi consiglio una sbirciatina al manuale per capire a fondo il significato delle opzioni qui riportate e le altre):
port 1194 # Porta di OpenVPN proto udp # Protocollo da usare: UDP è più veloce, ma TCP è più stabile in caso di connessioni degradate dev tun # Adattatore virtuale da utilizzare ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key server.key # Questo file dovrebbe rimanere segreto dh /etc/openvpn/keys/dh1024.pem server 192.168.34.0 255.255.255.0 # Network che OpenVPN utilizzerà per la sua rete ifconfig-pool-persist ipp.txt # File dove vengono memorizzati gli IP dei client push "route 192.168.34.0 255.255.255.0" # Regola di routing per la rete OpenVPN comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3
Per una maggiore compatibilità con gli script di avvio/arresto di OpenVPN, vi consiglio di posizionare il file in /etc/openvpn e dargli come estensione .conf.
Se tutto è andato OK, potete avviare il vostro server OpenVPN:
/etc/init.d/openvpn restart
Configurazione del client OpenVPN
Per creare le chiavi ed il file di configurazione del client la procedura è abbastanza simile. Entreremo sempre in easy-rsa/2.0 (la stessa directory del server mi raccomando) e creiamo le chiavi:
. ./vars ./build-key username #dove username è il nome o l'host del vostro client
In questo modo, dentro keys troveremo le chiavi per il client appena creato. Quello che manca ora è creare il file di configurazione del client. Eccone un esempio:
client dev tun proto udp remote host.del.server.openvpn 1194 # Dovrete inserire l'host del vostro server VPN resolv-retry infinite nobind persist-key persist-tun ca ca.crt # File della CA cert client.crt # Certificato del vostro client key client.key # Chiave del vostro client ns-cert-type server comp-lzo verb 3
A questo punto non dovrete far altro che recapitare le chiavi ed il file di configurazione al vostro client, perché possa provare ad utilizzare la vostra nuova rete privata virtuale.
Vi ricordo che per ogni utente che voi vogliate creare, la procedura descritta sopra è sempre valida.