c'e' solo un modo di fare le cose: farle bene
OpenVPN is a free and open source virtual private network (VPN) program for creating point-to-point or server-to-multiclient encrypted tunnels between host computers. It is capable of establishing direct links between computers across network address translators (NATs) and firewalls. It was written by James Yonan and is published under the GNU General Public License (GPL).
Bene, procediamo.
Supponiamo di avere due host e di creare una VPN tra loro, installiamo su entrambi openvpn:
apt-get install openvpn
Adesso usiamo la Debian Way e quindi utilizziamo gli script per la creazione dei certificati e delle chiavi.
Facciamo un link simbolico:
ln -s /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/easy-rsa
Editiamo il file /etc/openvpn/easy-rsa/vars con i parametri che fanno al caso nostro:
export KEY_COUNTRY=
export KEY_PROVINCE=
export KEY_CITY=
export KEY_ORG=”"
export KEY_EMAIL=”"
Il file contiene tutto variabili d’ambiente e quindi con questo comando:
source /etc/openvpn/easy-rsa/vars
Esportiamo le variabili.
Adesso generiamo la chiave della CA visto che saremo noi stessi a fare da certification authority:
/etc/openvpn/easy-rsa/build-ca
Le chiavi andranno a finire sotto:
/etc/openvpn/easy-rsa/keys
Adesso creiamo la chiave per il server:
/etc/openvpn/easy-rsa/build-key-server server
Seguendo le facili istruzioni a video verrà creata la chiave.
Abilitiamo lo scambio di chiavi Diffie-Hellman
Lo Scambio di chiavi Diffie-Hellman (Diffie-Hellman key exchange) è un protocollo crittografico che consente a due entità di stabilire una chiave condivisa e segreta utilizzando un canale di comunicazione insicuro (pubblico) senza la necessità che le due parti si siano scambiate informazioni o si siano incontrate in precedenza. La chiave ottenuta mediante questo protocollo può essere successivamente impiegata per criptare le comunicazioni successive tramite uno schema di crittografia simmetrica.
eseguendo questo comando:
/etc/openvpn/easy-rsa/build-dh
Adesso manca solo il certificato TLS, che va creato così:
openvpn –genkey –secret /etc/openvpn/easy-rsa/keys/ta.key
Abbiamo tutto il necessario per il server, va solo configurato attraverso il file /etc/openvpn/server.conf:
local
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher BF-CBC
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ip_client.txt
comp-lzo
persist-key
persist-tun
keepalive 10 360
verb 4
mute 20
log-append /var/log/openvpn/openvpn.log
status /var/log/openvpn/openvpn-status.log
Da notare la direttiva ifconfig-pool-persist ip_client.txt che memorizza gli IP assegnati ai client per dare lo stesso IP in futuro.
Va creata le directory sotto /var/log sua sul server che sul client:
mkdir /var/log/openvpn
Ora è possibile lanciare OpenVPN:
/etc/init.d/openvpn start
Se l’output è questo:
Starting virtual private network daemon: server(OK).
Potete vedere tramite ifconfig la nuova interfaccia tun0.
Siamo a metà dell’opera, manca il client.
Per comodità generiamo le chiavi del client sul server…so che non andrebbe fatto ma visto che non c’è una vera CA penso sia la cosa più veloce!
Creiamo la chiave:
/etc/openvpn/easy-rsa/build-key
Seguendo le istruzioni avremo la chiave per il client e sicomme Debian è la migliore distribuzione al mondo, è anche verificata tramite CA (la nostra!).
Spostiamo i file (IN MODO SICURO) sul client, ma quali file?
Sul client metteremo questi file sotto /etc/openvpn, occhio ai permessi:
-rw-r–r– ca.crt
-rw-r–r– <client>.crt
-rw-r–r– <client>.key
-rw——- ta.key
Creiamo il file di configurazione del client (/etc/openvpn/client.conf):
client
dev tun
proto udp
remote 85.25.71.39 1194
resolv-retry infinite
ca ca.crt
cert <client>.crt
key <client>.key
tls-auth ta.key 1
cipher BF-CBC
comp-lzo
ping 10
verb 3
mute 10
log-append /var/log/openvpn/openvpn.log
status /var/log/openvpn/openvpn-status.log
E’ il momento di far partire il client:
/etc/init.d/openvpn start
Se l’output è questo:
Starting virtual private network daemon: client(OK).
Abbiamo finito!:)
Proviamo la VPN con un ping dal client verso il server (10.0.0.1) per vedere se è tutto ok.
18 lune e tante stelle... La #Neve è tutto! http://t.co/Zwg5fhky [gianlucagentile]
@AngelikaCoco presto capirai anche tu perché ne vale sempre sempre sempre la pena! Snowboard4Me? It's my life... [gianlucagentile]
Eh poi capisci che cos'è la felicità. #Neve [gianlucagentile]
Powered by Lifestream.
| L | M | M | G | V | S | D |
|---|---|---|---|---|---|---|
| « nov | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||
2 Responses for "OpenVPN routed su Debian"
Ottima la guida, come sempre del resto; solo un informazione: se avessi bisogno di rafforzare la vpn utilizzando anche user e password, cosa cambierei nella configurazione di openvpn?
Grazie
Marco
Per l’utilizzo di VPN basate su autenticazione tramite user e password ti consiglio di usare PPTP così i client Windows sono facilmente configurabili e mettere su un server Linux è facilissimo attraverso il demone pptpd (PoPToP).
Leave a reply