• An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
dezo - Articoli e Tutorial
Creare una Rete Privata Virtuale(VPN)
Indice Articolo
Creare una Rete Privata Virtuale(VPN)
Preliminare
Procedura Operativa
certificati
configurazione
conf server
conf client
Tutte le pagine

 

Questo articolo/tutorial mostra i passi utili a creare una rete virtuale(VPN) con OpenVPN fra due luoghi distinti e con macchine con sistemi operativi Linux Fedora5 e windowsXPpro: le casistiche e le problematiche dei singoli casi sono talmente ampie che non possono essere contemplate tutte in questo articolo, quindi fare riferimento all'ampia documentazione sul sito del software OpenVPN http://openvpn.net/

Per la parte relativa a Linux Fedora l'autore è www.guidoconte.it

Qui affronteremo tre significativi casi.

 

Caso A

Collegare due luoghi all’interno della rete Fastweb(in questo caso se entrambi sono dietro un router fastweb non è possibile effettuare il collegamento perché si dovrebbe impostare il “Port Forwarding” su almeno uno dei router fastweb ma il provider non consente l'accesso alle configurazioni)

 

 

 

Caso B

Collegare due luoghi con ip pubblico dinamico assegnato dal provider

 


 

 

Caso C

Collegare due luoghi, uno all’interno della rete Fastweb e l’altro no.


 



Preliminare(A, B e C)

 

Si utilizzerà OPENVPN software opensource sia per windows che per linux(versione con interfaccia per windows OPENVPNGUI) che consente di creare tunnel VPN sicuri attraverso i protocolli SSL/TLS(Secure Socket Layer/Transport Layer Security) con autenticazione utente basata su certificati digitali, smart card oppure Username e Password.

OPENVPN crea un’interfaccia di rete virtuale(TUN/TAP) con una tipologia di indirizzo definito in fase di configurazione. Tutti iclient riceveranno un IP di questa LAN “virtuale” indipendentemente dalla loro collocazione fisica su internet.

 

citazione:

-----------------------------------------------------------------------------------------------------------------

Il metodo di autenticazione per la negoziazione del tunnel è bidirezionale, una volta che il server ha autenticato il client, lo stesso client deve poi autenticare il server. Il primo step, nel set-up del tunnell vpn è quello di mettere il canale di comunicazione in sicurezza crittografando i dati,  poi segue la fase di autenticazione attraverso l'uso dei certificati digitali, infine se quest'ultimi risultano validi, avviene lo scambio delle chiavi digitali tra client e server attivando l'adpter virtuale.

------------------------------------------------------------------------------------------------------------------

 

OpenVPN collega server e relativi client con due modalità: Bridged e Routed, noi useremo la Routed.

citazione:

------------------------------------------------------------------------------------------------------------------

La seconda soluzione risulta preferibile sia in termini di efficienza che di semplicità di configurazione. Il client in questo caso utilizza la propria sottorete: vengono impostate sia lato client che lato gateway remoto, delle route che permettono la trasmissione dei pacchetti attraverso la VPN. Si noti che parlando di client non si fa riferimento solo al caso di una singola macchina, ma potrebbe trattarsi di un'intera sottorete.

Alcune circostanze impongono però il ricorso al Bridging. In tal caso l'interfaccia di rete fisica viene collegata via software con l'interfaccia virtuale utilizzata da OpenVPN creando appunto un ponte, bridge. Tale operazione consente di ottenere una rete virtuale su una singola sottorete.

-------------------------------------------------------------------------------------------------------------------


 

Procedura Operativa

 

1 - installare OpenVPN

linux ===>yum –y install openvpn

windows ===>scaricare e installare OpenVPN per windows

 

2 - stabilire chi farà da server della rete virtuale:

caso A - indifferente (salvo se solo uno dei due luoghi sarà direttamente “pingabile”, allora quello deve fare da server)

caso B – indifferente(sarebbe più consono l’impiego della modalità bridged)

caso C - scegliere il luogo fuori dalla rete fastweb


 

3 - impostare il collegamento fisico dei luoghi che faranno il lato server:

caso A - verificare l’IP assegnato da Fastweb ed impostarlo come fisso oppure creare una sottorete ed effettuare il “Port Forwarding”, dal router privato verso il PC che farà da server, della porta utilizzata da OpenVPN per il collegamento.

caso B - usare un servizio DNS, in alternativa usare modalità bridged

caso C – usare un servizio DNS così da far sempre coincidere un nome fisso agli IP pubblici assegnati dal servizio di collegamento ad internet del Provider

 


4 - generazione di certificati e chiavi digitali (nella cartella "easy-rsa" ci sono gli script necessari alla creazione, tutto sarà effettuato da riga di comando):

operazioni preliminari portandosi dalla riga di comando nella cartella C:\programmi\OpenVPN\easy-rsa\ o /etc/openvpn/easy-rsa:

linux

editare il file vars (cambiare arbitrariamente KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL quindi salvare)

cat vars

clean-all (svuota cartella keys)

windows

init-config

edit vars.bat (cambiare arbitrariamente KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL quindi salvare)

vars (esegue il batch)

clean-all (svuota cartella keys) 

 

 

SERVER
Certificato master o di root - ca.crt
linux e window ==>build-ca (specificare un Common Name)
 
Certificato server - server.crt
Chiave server - server.key
 linux e window ==>build-key-server server (specificare un Common Name ed accettare la firma del certificato)
 
Diffie hellman parameters - dh1024.pem
 linux e window ==>build-dh
 
Chiave tls statica - key.txt(window) ta.key(linux)
 linux ==>openvpn --genkey --secret ta.key
window ==>start/programmi/openvpn/Generate a static OpenVPN key
 
 

CLIENT (ciascun client avrà i propri certificati client e chiavi)

Certificato master o di root - ca.crt (lo stesso del server)
 
Certificato client - client1.crt
Chiave client - client1.key
 linux e window ==>build-key client1 (specificare un Common Name ed accettare la firma del certificato, ripetere il comando per ogni client)
 
Chiave tls statica - key.txt(window) ta.key(linux) (lo stesso del server)
 

i file creati attraverso questa procedura si trovano nella cartella "keys", nei file di configurazione server e client specificheremo dove cercarli quindi è consigliabile creare sul server una cartella denominata "server" con all'interno i 5 file necessari ed altre "n" cartelle per quanti sono i client con all'interno i 4 file necessari ai client.

quindi per esempio in windows:

C:\Programmi\OpenVPN\config\keys\server

ca.crt - server.crt - server.key - dh1024.pem - key.txt

C:\Programmi\OpenVPN\config\keys\client1

ca.crt - client1.crt - client1.key - key.txt

......................................

C:\Programmi\OpenVPN\config\keys\client

 




5 - creare i file di configurazione Server e Client da salvare nelle cartelle:                                                         


windows==>C:\Programmi\OpenVPN\config\server.ovpn oppure client1.ovpn

linux==>/etc/openvpn/server.conf oppure client1.conf

 

6 - impostare come servizio attivo di deafult OpenVPN:

windows==>Pannello di controllo/Strumenti di amministrazione/Servizi

 

linux da shell

“/sbin/chkcong --add openvpn”

“/sbin/chkconfig –level 345 openvpn on”




esempio file di configurazione Server, in neretto le direttive

 

#################################################

# Esempio di OpenVPN 2.0 config file per        #

# multi-client server.                          #

#                                               #

# Questo file è per la configurazione           #

# OpenVPN lato server fra diversi               #

# clients e un server                           #

#                                               #

# OpenVPN supporta anche la configurazione      #

# fra singole macchine                          #

# (vedere le pagine di esempio sul sito         #

# per più info ).                               #

#                                               #

# Questa configurazione lavora su Windows       #

# o su Linux/BSD systems. Occorre ricordare     #

# che per windows nei percorsi bisogna usare    #

# doppio backslashes, esempio:                  #

# "C:\\Program Files\\OpenVPN\\config\\foo.key" #

#                                               #

# I commenti sono preceduti da '#' o ';'        #

#################################################

 

# quale tipo di indirizzo IP locale OpenVPN

# deve utilizzare

;local a.b.c.d

 

# quale tipo di porta TCP o UDP deve utilizzare OpenVPN

# Se occorrono istanze multiple di OpenVPN

# sulla stessa macchina, bisogna utilizzare

# un numero di porta diverso per ogni istanza.

# bisogna inoltre aprire le porte nel firewall.

port 1194

 

# TCP or UDP server?

;proto tcp

proto udp

 

# "dev tun" creerà un routed IP tunnel,

# "dev tap" creerà un ethernet tunnel.

# Usare "dev tap0" se avete un ethernet bridging

# ed avete precreato un'interfaccia virtuale tap0

# da mettere in bridged con la vostra rete reale.

# Se volete controllare gli accessi

# nella vostra VPN, dovete creare

# delle regole nel firewall per le interfacce TUN/TAP.

# Nei sistemi non-windows, potete dare

# un numero esplicito come tun0.

# In Windows a questo scopo usare "dev-node".

# In molto sistemi, la VPN non funzionerà

# senza rimuovere parzialmente o totalmente

# il controllo firewall dalle interfacce TUN/TAP.

;dev tap usare tap anche nella modalità routed in quanto nel caso di reti miste LINUX WINXP funziona ugualmente

dev tun

 

# Windows ha bisogno di un nome per il TAP-Win32

# nelle connessioni di rete se ci sono

# più di una interfaccia virtuale.

# In xp sp2 o superiori occorre disabilitare

# il Windows firewall per ogni TAP.

# Gli altri sistemi di solito non ne hanno bisogno.

;dev-node nomeTAP

 

# SSL/TLS certificato root (ca), certificate

# (cert), chiave privata (key). Ogni client

# ed il server devono avere i loro file con certificati

# e chiavi.Il server e tutti i clients useranno

# i medesimi ca file.

#

# La cartella "easy-rsa" contiene

# gli sript utili alla generazione dei

# certificati RSA e le chiavi private. Ricordare

# di usare un unico Common Name per il server

# ed in ogni certificato client.

#

# Può essere usato qualsiasi sistema X509 di generazione chiavi.

# OpenVPN può utilizzare anche un PKCS #12 file chiavi preformati

# (vedere le direttive specifiche per "pkcs12" ).

 

ca "c:\\programmi\\openvpn\\config\\keys\\ca.crt"

cert "\\programmi\\openvpn\\config\\keys\\server.crt"

key "c:\\programmi\\openvpn\\config\\keys\\server.key"

# questi file dovrebbero essere mantenuti segreti

 

# Parametri Diffie hellman.

# Generate i vostri con:

#   openssl dhparam -out dh1024.pem 1024

# Sostituite 1024 con 2048 se usate

# chiavi a 2048bit.

dh "c:\\programmi\\openvpn\\config\\keys\\dh1024.pem"

 

 

# Configura il modo server così che possa creare

# una sottorete VPN che fornisca gli IP ai clients.

# Il server prenderà l'indirizzo 10.8.0.1,

# i restanti indirizzi saranno utilizzabili dai clients.

# Ogni client sarà abilitato a contattare il server all'IP

# 10.8.0.1. Commentare questa direttiva se si usa

# un ethernet bridging.

server 10.8.0.0 255.255.255.0 Caso A, B, e C

 

# Registrare in questo file l'associazione fra client

# ed indirizzo IP virtuale. Se OpenVPN viene

# riavviato, i clients si vedranno assegnare lo stesso

# indirizzo IP virtuale precedentemente

# ricevuto.

ifconfig-pool-persist ipp.txt

 

# Configura il modo server per ethernet bridging.

# Verificare che il proprio OS possa effettuare il bridging

# tra l'interfaccia TAP e la rete reale

# Manualmente bisogna settare  

# IP/netmask nell'interfaccia bridge in questo

# caso con  10.8.0.4/255.255.255.0. Infine

# bisogna settare un intervallo di IP range in questa sottorete

# (nizio=10.8.0.50 fine=10.8.0.100) da assegnare

# ai clients che si connettono. Lasciare questa linea commentata

# se non avete ethernet bridging.

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

 

# Push routes permette

# di raggiungere altre reti private dietro

# il server. Ricordare che queste

# reti private dovranno conoscere

# la route della rete dei client OpenVPN

# nell'esempio (10.8.0.0/255.255.255.0)

# dietro il server OpenVPN.

;push "route 192.168.10.0 255.255.255.0"

;push "route 192.168.20.0 255.255.255.0"

 

# Per specificare gli indirizzi IP da assegnare

# a specifici clients o se un client fosse in una rete

# privata dietro quella che dovrebbe avere l'accesso VPN,

# usare la sottodirectory "ccd" per il file di

# configurazione specifica dei clients.

 

# ESEMPIO: supponiamo che un client

# abbia come certificate common name "Thelonious"

# ed inoltre appartenga ad una piccola sottorete dietro la

# sua connessione, come 192.168.40.128/255.255.255.248.

# Primo deccommentare queste linee:

;client-config-dir ccd

;route 192.168.40.128 255.255.255.248

# Quindi creare un file ccd/Thelonious con questa linea:

#   iroute 192.168.40.128 255.255.255.248

# Questo permetterà alla sottorete privata "Thelonious"

# di accedere alla VPN. Questo esempio vale solo

# per la modalità routing non bridging, i.e. occorre

# usare "dev tun" e la direttiva "server".

 

# ESEMPIO: supponiamo si voglia assegnare a

# "Thelonious" un indirizzo IP fisso come 10.9.0.1.

# primo decommentare queste linee:

;client-config-dir ccd

;route 10.9.0.0 255.255.255.252

# Quindi aggiungere questa linea nel file ccd/Thelonious:

#   ifconfig-push 10.9.0.1 10.9.0.2

 

# Supponiamo si voglia abilitare diversi

# controlli firewall per gruppi differenti di

# clients. Ci sono due metodi:

# (1) Avviare diversi OpenVPN daemons,uno per ogni

#     gruppo, e configurare il firewall per ciascuna 

#     interfaccia TUN/TAP relativa al gruppo.

# (2) (Avanzato) Creare uno script che dinamicamente

#     modifica il firewall in risposta agli accessi

#     dei differenti clients.

;learn-address ./script

 

# Se abilitata questa direttiva configurerà

# tutti i clients a reindirizzare il loro

# gateway di default sulla VPN, facendo

# così passare tutto il traffico IP web e DNS

# attraverso la rete VPN

# (La macchina che fa da server OpenVPN deve poter

# "nattare" l'interfaccia TUN/TAP con internet

# affinchè questa direttiva lavori correttamente).

# CAVEAT: potrebbero bloccarsi i pacchetti dei server DHCP

# di configurazione di rete che i clients ricevono se questi

# passano attraverso il tunnel.  Soluzione: verificare

# che il server DHCP dei clients sia raggiungibile

# attraverso diverse  specifiche route che

# e non la sola di deafault 0.0.0.0/0.0.0.0.

;push "redirect-gateway"

 

# Certi specifici setting di rete di Windows

# possono essere imposti ai client, come

# gli indirizzi dei server DNS e WINS.

;push "dhcp-option DNS 10.8.0.1"

;push "dhcp-option WINS 10.8.0.1"

 

# Decommentare questa linea per permettere

# ai diversi clients di vedere tutti gli altri.

# Di default i clients vedranno solo il server.

# Per forzare i clients a vedere solo il server,

# occorre configurare il firewall per l'interfaccia

# TUN/TAP del server.

;client-to-client

 

# Decommentare questa direttiva se più clients

# devono connettersi con i medesimi file di

# certificati/chiavi o common names. E' raccomandato

# usare uniche chiavi e certificati solo in fase di test.

# Nell'uso produttivo ogni clients dovrà avere

# le proprie chiavi e certificati di parità

#

# SE NON AVETE GENERATO CHIAVI E CERTIFICATI

# DI PARITA' PER OGNI CLIENT,

# ED E' IN USO UN'UNICO "COMMON NAME",

# DECOMMENTATE QUESTA LINEA.

;duplicate-cn

 

# La direttiva keepalive determina un intervallo

# di generazione di ping per verificare

# la connessione dell'altra parte che viene considerata

# down se nel tempo stabilito non riceve risposta.

# Il Ping parte ogni 10 seconds, se non

# riceve risposta entro 120 secondi considera

# il collegamento remoto down.

keepalive 10 120

 

# Come ulteriore sicurezza ottenuta tramite

# SSL/TLS, è creare un "HMAC firewall"

# per bloccare gli attacchi DOS e UDP port flooding.

#

# Si fa generando la chiave con:

#   openvpn --genkey --secret ta.key

#

# Il server e ogni client devono avere

# una copia di questa chiave.

# Il secondo parametro deve essere '0'

# nel server ed '1' nei clients.

;tls-auth ta.key 0 # Questo file è segreto

 

# Seleziona il sistema crittografico.

# Questa configurazione dovrà essere

# identica nelle configurazioni client.

;cipher BF-CBC        # Blowfish (default)

;cipher AES-128-CBC   # AES

;cipher DES-EDE3-CBC  # Triple-DES

 

# Abilita la compressione nei collegamenti VPN.

# Se viene abilita qui anche nei file

# di configurazione dei client va abilitata.

comp-lzo

 

# Massimo numero\di client collegati ammesso

;max-clients 100

 

# E' buona cosa ridurre i privilegi

# dell'OpenVPN dopo l'inizializzazione.

#

# Decommentare questa linea

# solo nei sistemi diversi da Windows.

;user nobody

;group nobody

 

# Questa direttiva prova ad evitare

# a il ripetersi dell'accesso al riavvio

# per certe risorse che potrebbero non riuscirvi

# per il downgrade dei privilegi.

persist-key

persist-tun

 

# Log di stato della connessione

# Connessione corrente,

# riaggiornata ogni minuto.

status openvpn-status.log

 

# Di default i Log andranno in syslog (per

# Windows, se lanciato come servizio, i Log

# andranno nella cartella "\Program Files\OpenVPN\log").

# Usare questa direttiva per cambiare dal deafult.

# "log" interromperà il log file all'avvio riuscito di OpenVPN,

# "log-append" scriverà ogni evento sul file log. Usare uno

# dei due, no entrambi.

;log         openvpn.log

;log-append  openvpn.log

 

# Settare la verbosità dei log

#

# 0 silente, eccetto errori fatali

# 4 uso generale

# 5 e 6 può aiutare per risolvere problemi

# 9 massima verbosità

verb 3

 

# Ogni 20 messaggi sequenziali della stessa categoria

# viene generato un output sul file Log.

;mute 20

 

 


 

esempio file di configurazione Client, in neretto le direttive                                                             

 

##############################################

# Esempio di OpenVPN 2.0 config file Client  #

# perla connessione multi-client server.     #

#                                            #

# questa configurazione può essere usata da  #

# più clients, tuttavia ogni client dovrebbe #

# avere i propri files certificato e chiave  #

#                                            #

# In windows bisogna rinominare questo file  #

# con estensione .ovpn                       #

##############################################

 

# Specifica che è un client e che riceverà

# alcune direttive dal file di configurazione

# del server.

client

 

# usare lo stesso settaggio usato sul

# server.

# nella maggior parte dei sistemi il VPN non

# funzionerà se non si disattiverà parzialmente

# o totalmente il firewall dall'interfaccia TUN/TAP.

dev tap usare questa direttiva in tutti i casi

;dev tun

 

# in Windows, se ci sono più TAP-Win32 nelle

# connessioni di rete occorre assegnare un nome

# a ciascuna interfaccia TAP-win32

# bisogna inoltre disabilitare il firewall

# per ogni TAP adattatore.

;dev-node NomeTAP

 

# con quale protocollo ci si connette

# al server: UDP o TCP?

# usare lo stesso settaggio usato sul server

;proto tcp

proto udp

 

# Nome o indirizzo IP e porta del Server.

# Si possono avere più server che rispondono

# così da bilanciare il lavoro di risposta ai client.

5.245.30.100 1194 - Caso A

nomeDNS 1194 - Caso B e C

;remote my-server-2 1194

 

# Sceglie in modo casuale fra la lista

# dei server che rispondono.  Altrimenti

# prova i server nell'ordine specificato.

;remote-random

 

# prova senza sosta a risolvere il nome

# del server OpenVPN. E' molto

# utile nel caso di pc non permanentemente connessi

# a internet come i notebook.

resolv-retry infinite

 

# Molti clients non hanno bisogno

# di un numero specifico di porta.

nobind

 

# Downgrade dei privilegi dopo l'inizializzazione (no per Windows)

;user nobody

;group nobody

 

# Provare a preservare lo stato precedente anche dopo il riavvio.

persist-key

persist-tun

 

# se siete connessi attraverso un

# HTTP proxy per raggiungere il server

# OpenVPN, mettere qui il proxy server/IP ed

# il numero di porta. Vedere le configurazioni

# se il vostro proxy server richiede

# autenticazione.

;http-proxy-retry # retry on connection failures

;http-proxy [proxy server] [proxy port #]

 

# le reti wireless spesso producono molti

# duplicati dei pacchetti. Attivare questa direttiva

# per tacitare glli avvisi dei duplicati.

;mute-replay-warnings

 

# SSL/TLS parms.

# Vedere il file di configurazione del server

# per descrizioni dettagliate. E' meglio usare

# file diversi .crt/.key

# per ogni client. Un singolo CA

# file può essere usato per tutti i clients.

ca "c:\\programmi\\openvpn\\config\\keys\\ca.crt"

cert "c:\\programmi\\openvpn\\config\\keys\\client1.crt"

key "c:\\programmi\\openvpn\\config\\keys\\client1.key"

 

# Verificare i certificati del server controllando

# che il certificato abbia il campo nsCertType

# settato su "server". Questa è una

# importante precauzione per proteggersi

# da potenziali attacchi descritti qui:

#  http://openvpn.net/howto.html#mitm

#

# Per usare questa caratteristica, bisogna generare

# i certificati del server con il campo nsCertType

# settato su "server". Farà questo lo script build-key-server

# nella cartella easy-rsa.

;ns-cert-type server

 

# Se una chiave tls-auth è usata dal server

# allora ciascun client dovrà avere tale chiave.

;tls-auth ta.key 1

 

# Seleziona un metodo di crittografia.

# Se un'opzione di cifratura è usata sul server

# allora deve essere specificato qui.

;cipher x

 

# Abilita la compressione nel collegamento VPN.

# Non abilitarla se non è abilitata

# sul filedi configurazione del server.

comp-lzo

 

#Setta la verbosità del log.

verb 3

 

genera un log per verificare gli errori della connessione

log c:\\programmi\\openvpn\\config\\client1.log

 

# Silence repeating messages

;mute 20

 

 

 

 

 

 

 

 

 

 

 
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow
  • An Image Slideshow

utilità & notizie