• Home
  • Azienda
    • Progetti
    • Certificazioni
    • Lavora con noi
    • Chi Siamo
  • Consulenza
  • Formazione
  • Lavora con noi
  • Blog
  • Contatti
  • Webmail
  • Home
  • Azienda
    • Progetti
    • Certificazioni
    • Lavora con noi
    • Chi Siamo
  • Consulenza
  • Formazione
  • Lavora con noi
  • Blog
  • Contatti
  • Webmail
Infrastruttura

Openvpn

by admin in Infrastruttura, Sicurezza, System Administration

Nei server di laboratorio, abbiamo installato vari tool aziendali di planning e gestione del personale, ovviamente raggiungibili soltanto dalla sede stessa. Avendo la necessità di esporre questi tool su internet, per usufruirne da qualsiasi sede, ed anche per eventuali condivisioni con il cliente finale. Per raggiungere questo obiettivo, abbiamo optato per un prodotto Opensource, OpenVPN.

Questo prodotto, permette ad un client opportunamente configurato, di accedere alla rete aziendale da qualsiasi parte del mondo.

Per la nostra VPN, abbiamo utilizzato un server con Centos 6.5 64 bit. Installiamo Openvpn:

yum install openvpn easy-rsa

Il pacchetto di OpenVPN fornisce una serie di script già pronti, per la gestione dei certificati di accesso. Copiamo tali script nella cartella di OpenVPN:

cp -r /usr/share/easy-rsa/2.0/ /etc/openvpn/rsaopenvpntech_logo_rounded_antialiased

Spostiamoci sotto la cartella apeena copiata:

cd /etc/openvpn/rsa

Apriamo il file “vars” e editiamo i campi, questo velocizzerà la creazione dei certificato, è comodo per chi ha la necessità di creare molti certificati. Un esempio del file vars:

export KEY_SIZE=1024
export KEY_COUNTRY="IT"
export KEY_PROVINCE="IT"
export KEY_CITY="Roma"
export KEY_ORG="Converger"
export KEY_EMAIL="info@converger.it

Creiamo la nostra CA (certificate authority)

# source vars 
# NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/rsa/keys
# ./clean-all

Ora possiamo generare la nostra Certificate Authority: è necessario richiamare anche lo script “clean-all” per iniziare con un ambiente pulito. A questo punto siamo pronti per generare la nostra CA (certificate authority):

# ./build-ca
Generating a 1024 bit RSA private key..................................................
++++++...++++++
writing new private key to 'ca.key'----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IT]:
State or Province Name (full name) [IT]:
Locality Name (eg, city) [Roma]:
Organization Name (eg, company) [Converger]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [Converger CA]:
Email Address [info@converger.it]:

I valori di default vengono letti dal file vars sopra customizzato. Ora possiamo creare il certificato per il server VPN:

# ./build-key-server ConvergerVPN

ConvergerVPN è il nome della macchina su cui sto installando il server VPN, per coerenza la coppia chiave/certificato avrà il nome dell’host su cui viene usato.

Per evitare che ad ogni riavvio di OpenVPN sia richiesta una password premere invio senza inserire nulla alla richiesta di password:

Generating a 1024 bit RSA private key..................
++++++.++++++
writing new private key to ConvergerVPN .key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IT]:
State or Province Name (full name) [IT]:
Locality Name (eg, city) [Roma]:
Organization Name (eg, company) [Converger]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [ConvergerVPN ]:
Email Address [info@converger.it]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:password
An optional company name []:
Using configuration from /etc/openvpn/rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'IT'
stateOrProvinceName   :PRINTABLE:'IT'
localityName          :PRINTABLE:'Roma'
organizationName      :PRINTABLE:'Converger'
commonName            :PRINTABLE:' ConvergerVPN  '
emailAddress          :IA5STRING:'info@converger.it'
Certificate is to be certified until Nov 25 13:50:00 2020 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Procediamo alla creazione del file Diffie-Hellman, necessario per l’avvio delle connessioni cifrate.OpenVPN

# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
........+............

Realizziamo l’ultima chiave necessaria per l’instaurazione di una connessione sicura:

# openvpn --genkey --secret keys/ta.key

Generazione dei certificati per i client

La procedura per generare i certificati dei client è identica a quella del server, nell’esempio li creiamo nominali per una semplice identificazione, in caso di grandi numeri è possible usare la matricola aziendale.

# cd /etc/openvpn/rsa
# source vars 
# NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys  (ignorare il meassaggio)
# ./build-key rmassimi
Generating a 1024 bit RSA private key
..........................................++++++
................................................++++++
writing new private key to 'rmassimi.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IT]:
State or Province Name (full name) [RM]:
Locality Name (eg, city) [Roma]:
Organization Name (eg, company) [Converger]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [rmassimi]:
Name []:Roberto Massimi
Email Address [info@converger.it]:rmassimi@converger.it
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'IT'
stateOrProvinceName   :PRINTABLE:'RM'
localityName          :PRINTABLE:'Roma'
organizationName      :PRINTABLE:'Converger'
commonName            :PRINTABLE:'rmassimi'
name                  :PRINTABLE:'Roberto Massimi'
emailAddress          :IA5STRING:'rmassimi@converger.it'
Certificate is to be certified until Nov 26 14:29:37 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

 Configurazione del server

Ora andiamo a configurare il demone OpenVPN, anche in questo caso il pacchetto dovrebbe portare con se degli esempi.

# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn/

Di seguito un file di configurazione:

 # SERVER CONF
port 443
proto tcp
dev tun
ca rsa/keys/ca.crt
cert rsa/keys/rcc001ws.crt
key rsa/keys/rcc001ws.key  # This file should be kept secret
dh rsa/keys/dh2048.pem
server 10.1.1.0  255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
route 10.1.1.0 255.255.255.0
keepalive 10 120
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
status /var/log/openvpn-status.log 5
status-version 2
log-append /var/log/openvpn-status.log
verb 3
keepalive 10 60
push route "10.31.57.0 255.255.255.0"
crl-verify /etc/openvpn/crl.pem

In questo modo, dopo connesso in vpn, tutto funzionerà come prima, ma il nostro PC avrà una nuova interfaccia di rete con IP 10.1.1.x e tutti gli IP della classe 10.31.57.x verranno dirottati sulla VPN.In questa configurazione, rilasciamo IP ai client del tipo 10.1.1.x ed aggiungiamo la rotta 10.31.57.x .

Configurazione di IPTABLES

Come ultimo step sul server, dobbiamo abilitare il fowarding e il MASQUERADE tramite IPTABLES:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE

Se abbiamo IPTABLES configurato andiamo ad aggiungere anche le policy di ACCEPT:

iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT

Avviare il demone di OpenVPN e configurare i certificati dei client.

Configurazione dei client

Per prima cosa dobbiamo copiarci i certificati:

  • La coppia certificato/chiave per il client (i due file .key e .crt)
  • Il certificato della CA del server (il file ca.crt)
  • La chiave di autenticazione TLS (il file ta.key)

File client.opvn:

client 
dev tun
proto tcp
remote IP_SERVER_VPN 443
resolv-retry infinitenobind
persist-key
persist-tun
# THE CSR FILE:
ca ca.crt
cert rmassimi.crt
key rmassimi.key
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
route-method exe
route-delay 2

Lanciando questa configurazione con openVPN del client, noterete una nuova scheda di rete 10.1.1.x . Se ora provate ad aprire un qualsiasi tool o sistema sulla rete 10.31.57.x, questo risulterà disponibile!
Autore: Roberto Massimi

adminPost author

Fai clic qui per annullare la risposta.

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

XHTML: You can use these tags <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Eventi

gennaio

Non ci sono eventi

febbraio

Non ci sono eventi

marzo

Non ci sono eventi

aprile

Non ci sono eventi

Tutti i corsi

Sistemistica

a-4Junior Level Linux Professional
a-4Advanced Level Linux Professional

Programmazione

a-4Corso IOS
a-4Corso Android

Database

a-4OCA Oracle Certified Associate

Sicurezza

a-4Hardening

Converger

Soluzioni di eccellenza a supporto delle imprese.
Via degli Alberini 33a, Roma
Tel. (+39) 06 .93575981-2
E-mail: info@converger

Politica per la qualità

Link Utili

  • Lavora con noi
  • Time Sheet
  • Progetti
  • Certificazioni

Articoli recenti

  • Un software per la vita: OCG

  • 13 Mar. 2017 Consolidamento di Database

  • 04 Mar. 2015 Un database per archiviare le Trap

Linkedin Network

Converger Srl - P.IVA 09882161004

Questo sito o gli strumenti terzi da questo utilizzati si avvalgono di cookie necessari al funzionamento e utili alle finalità illustrate nella cookie policy. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, consulta la Cookie Policy. Chiudendo questo banner, scorrendo questa pagina o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie. Accetta