OpenVPN su Hardy Heron (Ubuntu 8.04)

2008
08.31

Volendo creare una VPN che mi permettesse di connettermi dall’ufficio a casa, ho provato varie alternative, tutte egualmente utili per certi versi. PPTP ad esempio è buona per connettersi con client Windows, ma non garantisce praticamente nulla in sicurezza ed è molto scomoda da gestire via Linux (server o client). Dopo altre peregrinazioni sono giunto alla ben (almeno da me) conosciuta OpenVPN che qualche tempo fa non mi ispirò tanta fiducia a causa dell’assenza di un client già integrato in Windows.

Per farla breve, ho riscoperto questo meraviglioso server, ho trovato che alla fine l’installazione del client su Windows non è così complessa (l’unica cosa che mi secca sono i privilegi di amministratore che devi avere, ma a quanto pare si può porre rimedio anche a quelli). Ho così installato il server sulla mia Hardy Heron e vado a trascrivervi come al solito i passaggi salienti per la configurazione.

Prima di tutto si deve installare il pacchetto OpenVPN:

sudo aptitude install openvpn

Poi si creano manualmente due directory che serviranno più in la a contenere files importanti (sempre perchè sono preciso e ordinato):

sudo mkdir /etc/openvpn/configs
sudo mkdir /etc/openvpn/keys

A questo punto bisogna creare il file /etc/openvpn/server.conf che stabilisce i parametri più importanti che il server avrà. Ovviamente dovete modificare alcuni parametri: io ho cambiato la porta per ragioni personali, anche se in questo file lascio quella assegnata da IANA al protocollo, ovvero la 1194.  Modificate anche la riga server e le due seguenti perchè corrspondano alla vostra classe di IP della LAN privata e alla relativa maschera di sottorete (se non sapete di cosa parlo non vi dovrebbe neanche servire una VPN).

port 1194
local 192.168.2.50
proto udp
dev tun0
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
server 192.168.100.0 255.255.255.0
push "route 192.168.0.0 255.255.0.0"
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.100.1"
client-to-client
keepalive 10 600
cipher AES-128-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log openvpn
verb 3
mute 20

La riga local deve corrispondere all’indirizzo IP interno del vostro server (nel mio caso 2.50), il server OpenVPN visto dai client avrà indirizzo 192.168.100.1 e il range di IP assegnabili sarà 192.168.100.0/24.

Ora bisogna editare con il vostro Emacs preferito il file /usr/share/doc/openvpn/examples/easy-rsa/2.0/vars, andando a cambiare alla fine del file i valori e mettendone alcuni che corrispondano alla nostra localizzazione geografice, ecc…
Consiglio di lasciare gli altri valori così come sono se non volete ritrovarvi a passare la notte a fare troubleshooting.

A questo punto conviene diventare root e lanciare nella directory precedente (/usr/share/doc/openvpn/examples/easy-rsa/2.0/) i seguenti comandi:

source ./vars
./clean-all
./build-ca
./build-key-server server
./build-key --pass vostronick
./build-dh

E’ ovvio che dovrete sostituire a vostronick un nome che poi verrà usato per la connessione. L’ho anche messo in corsivo…
Consiglio anche qui di lasciare tutte le impostazioni di default eccetto che per il Common Name che va impostato come vostronick…
Spostiamoci nella cartella keys e lanciamo un bel

cp ca.key ca.crt dh1024.pem server.key server.crt /etc/openvpn/keys
cp vostronick.crt vostronick.key ca.crt /etc/openvpn/configs/

Tiriamo un sospiro e andiamo avanti (mi sto stancando molto a scrivere questa guida).
Ora bisogna creare il file di configurazione (/etc/openvpn/vostronick.conf)  che andrà utilizzato sul/sui client; come per il server le impostazioni sono molte e il contenuto può variare per voi. Vi incollo il mio leggermente modificato. Cambiate ciò che vi sembra opportuno:

client
proto udp
dev tun
remote vostroindirizzoip 1194
persist-key
persist-tun
ca ca.crt
cert vostronick.crt
key vostronick.key
cipher AES-128-CBC
comp-lzo
verb 3
mute 20

Per quanto riguarda l’indirizzo IP che dovrà essere ovviamente statico, consiglio servizi come No-IP e simili.

adesso diamo i permessi di lettura al file vostronick.key e copiamolo (via scp, USB o altri mezzi sicuri) sul client con il file .conf e il .crt, oltre al file ca.crt ovviamente.

Andiamo ancora in /etc/openvpn e lanciamo il comando:

openvpn --genkey --secret ta.key

che genererà la chiave del server.

Siamo quasi alla fine, ricordiamoci di aprire sul nostro router la porta 1194 UDP, di abilitare l’IP forwardingo con

echo 1 > /proc/sys/net/ipv4/ip_forward

e facciamo partire il servizio con un bel

sudo /etc/init.d/openvpn start

Ora se tutto va bene vi potrete connettere alla vostra VPN casalinga installando un appropriato client sul vostro PC (io uso kvpnc anche su Gnome e questo su Windows) importando certificato, chiave e file di configurazione (tutto nella stessa directory).

Come al solito se qualcosa non dovesse andare, commentate e vedrò di rispondervi. Se lo chiederete inoltre, potrò ampliare il post spiegando come associare il servizio di VPN ad un meccanismo di sicurezza di tipo port-knocking per far si che il vostro server sia completamente invisibile dall’esterno.

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Identi.ca
  • LinkedIn
  • PDF
  • RSS
  • Twitter
  • FriendFeed
  • Slashdot

Post simili

Tags: , , , ,

One Response to “OpenVPN su Hardy Heron (Ubuntu 8.04)”

  1. [...] Works in my mind… Pluralitas non est ponenda sine necessitate « OpenVPN su Gutsy Gibbon (Ubuntu 8.04) [...]

Your Reply

Spam Protection by WP-SpamFree