OpenVPN è una soluzione Open Source che crea tunnel point-to-point TCP over UDP (evitando cosi’ attacchi di tipo spoofing) permettendo la creazione di VPN in userspace e scambio di chiavi e dati crittografati con algoritmo blowfish.
Il mio caso è quello di una vpn tls (con certificati ssl) a stella(connessione da un server centrale verso diversi clients), una vera e propria intranet attraverso una rete pubblica (internet).
Per prima cosa ho creato i certificati con openssl:
openssl genrsa -out ca.key
openssl req -new -key ca.key -out rich.ca
openssl x509 -req -in rich.ca -signkey ca.key -out ca.cert
openssl genrsa -out server.key
openssl req -new -key server.key -out rich.ser
openssl x509 -req -in rich.ser -CA ca.cert -CAkey ca.key -CAcreateserial -out ser.cert
openssl dhparam -out dh.pem 1024
dopo i due file di configurazione per la vpn,
quello del lato server:
dev tap #device utilizzato (da abilitare nel kernel)
proto tcp-server #protocollo di connessione
ifconfig 192.168.0.1 255.255.0.0 # IP del server all interno della vpn
tls-server # Specifica il tipo di server ssl (unico possibile per vpn a stella)key ca.key
dh dh.pem
ca ca.cert
cert ca.cert
local 10.0.0.149 # IP locale “reale” della macchina che ospita il server vpnlport 5002 #porta di comunicazione
verb 4 #verbosità dei logsmode server #modalità vpn
duplicate-cn;ifconfig-pool 192.168.0.10 192.168.0.50 #possibilità di ip automatico (tipo dhcp) allinterno del range descritto (io avevo necessita di ip statici indi non ho usato questa funzionalità)
mssfix 1450
client-to-client #i clients si vedono tra loro;push “ping 10”
;push “ping-restart 60”
;ping 10
;ping-restart 120comp-lzo #compressione dei dati
.. e quello del client:
remote *.*.*:* #ip publico remoto
rport 5002 #porta
proto tcp-client #protocollotls-client #modalita del client ssl
dev tap #device usato (anche qui da compilare nel kernel)ifconfig 192.168.2.9 255.255.0.0 #ip statico per la vpn (nel caso di indirizzamento dinamico dhcp non serve questa linea)
key ca.key
ca ca.cert
cert ca.certpull
comp-lzo #compressione dati
verb 4 #verbosità dei logs
fatto questo basterà far partire la vpn dal server e dai rispettivi client
cd /etc/openvpn
#(path dei file di configurazione ma sopratutto delle chiavi e certificati)
openvpn –config filediconfigurazione.ovpn –daemon
questa vpn è stata provata con client su diverse piattaforme (anche windows)