Tag Archives: openvpn

Installazione di OpenVPN su sistemi operativi Linux

openvpn logoIn 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.