Arieccomi con uno dei miei strampalati e meno che mai apprezzati (dato che non sono serviti a nessuno ) tutorial !
Oggi faremo una Vpn Road Warrior con OpenVpn.
Road Warrior che significa ? beh un server cen tralizzato e client sparsi a internet che si connettono in maniera non permanente a al proprio server OpenVpn ... quindi Home - Office , per esempio per effettuare man utenzione ai proprio server oppure come nel mio caso , per fare telefonate VOIP con la mia centrale telefonica Voip
A parte gli scherzi ...
iniziamo :
faremo una vpn con criptazione basata su certificati ssl e autenticazione con una chiave tsl.
iniziamo a crare i vari certificati a partire da quello di una CA (certification Authority) che ci servirà per "firmare" i certificati dei client e del server, ah logicamente dobbiamo aver installato openvpn 2 (che tra le varie feature in + permette con una sola instanza di accettare più client, openssl per fare e gestire i certificati , lzo per la compressione/decompressione in tempo reale dei pacchetti.
Generiamo la chiave privata della CA
codice:
openssl genrsa -out /path/nostraCA.key
Generiamo il csr (certificato non firmato)
codice:
openssl req -new -key /path/nostraCA.key -out /path/nostraCA.csr
Ora ce lo autofirmiamo 
codice:
openssl x509 -req -days $quanti_giorni_la_vogliamo_tenere_valida -in /path/nostraCA.csr -signkey /path/nostraCA.key -out /path/nostraCA.crt
$quanti_giorni_la_vogliamo_tenere_valida = io messo 3650 (quasi 10 anni)
Ok ora abbiamo il nostro bel certificato come CA.
passiamo a generare quelli del server e quello del client ( che si può usare anche per più client)
la chiave
codice:
openssl genrsa -out /path/client.key
il csr
codice:
openssl req -new -key /path/client.key -out /path/client.csr
Ok ora facciamo la stessa cosa per il server (server.key server.csr) e utilizziamo il nostrocertificato di CA e la chiave per andare a creare i certificati client e server.
codice:
openssl x509 -req -days 3650 -in /path/client.csr -CA /path/nostraCA.crt -CAkey /path/nostraCA.key -CAcreateserial -out /path/client.crt
facciamo la stessa cosa per il server e ci ritroviamo così i 2 certificati .crt .
Ora generiamo la chiava Diffie-Hellman che servirà solamente al server .. occhio più la fate complessa più ci mette a crearla . La facciamo di 1024 bit ...
codice:
openssl dhparam -out /path/dh.pem 1024
ora creaiamo la chiave che servirà per il tls-auth
codice:
openvpn --genkey --secret /path/auth.key
Andiamo a configurare openvpn lato server:
local 192.168.0.1 # ip dove openvpn è in ascolto
port 5001 # porta dove è in ascolto io ho usato la 5001
proto udp # usate udp
dev tun # if tun
tls-server # openvpn il server per il tls-auth
ca /path/nostraCA.crt
cert /path/server.crt
key /path/server.key
dh /path/dh.pem
tls-auth /path/auth.key 0 # lo 0 serve al server
ifconfig-pool-persist ipp.txt
push "route $local_net $local_mask"
client-to-client
server 192.168.100.0 255.255.255.0 # range di ip assegnare ai client che si connettono DEVE ESSERE DIVERSO DALLA RETE LOCALE
keepalive 10 120
comp-lzo
max-clients 4
user nobody
group nobody
duplicate-cn #dato che generate un solo certificato per i vostri client con questa opzione lui lo saprà e accetterà più client con lo stesso certificato
status /log/openvpn-status-RW.log
log /log/openvpn-RW.log
log-append /log/openvpn-RW.log
verb 4
mute 20
Andiamo ora configurare il client. A ricordandoci di copiare i nostri certificati e la chiave auth.key
Installiamo openvpn2 per Microzozz e se volete (sono molto comode e ben fatte) le gui.
Installato il tutto andiamo a creare dentro la cartella config di openvpn il nostro file di config:
client
dev tun
proto udp
remote $ip_pubblico del server 5001
nobind
tls-client
ca C:\\path\\nostraCA.crt #### NOTATE I DOPPI SLASH
cert C:\\path\\certi\\client.crt
key c:\\path\\client.key
tls-auth c:\\path\\auth.key 1 # ecco l'1
comp-lzo
verb 4
mute 20
Ok ora se tutto è andato bene e non mi sono dimenticato nulla ... potete fare i vostri test ..
BUONA VPNNATA ATUTTI
Logicamente questo Tutorial è la versione 1.0 spero sia stabile ... commentate gente commentate così se mi sono dimenticato qualcosa ( sono stanco morto) l'aggiungo volentieri !
Ola e buona nocheS !