Visualizzazione post con etichetta VPN. Mostra tutti i post
Visualizzazione post con etichetta VPN. Mostra tutti i post

martedì 27 gennaio 2015

VPN SSL con Zywall USG 20W

Lo Zywall USG 20 W e' un router wifi con alcune funzionalita' avanzate con la possibilita' di creare un server VPN su SSL o IPSEC dal costo non proprio trascurabile (e' circa sui 200 euro)

In questo post viene descritto come configurare la VPN su SSL su client Mac e Windows (ho provato con Linux ma senza risultati, non ho provato con la configurazione IPSEC...e' una macchina in produzione e dislocata in remoto su cui non e' possibile giocare piu' di tanto)

Ci si logga dalla finestra di amministrazione


Andando sul menu' di sinistra si clicca su Configuratione (i due ingranaggi gialli) e si sceglie VPN/SSL

Si crea un nuovo Object/User-Group e si inseriscono le credenziali di accesso

Si puo' quindi creare un oggetto Application ovvero il servizio a cui l'utente si logga (tipicamente un desktop remoto)
Si aggiunge quindi l'utente alla lista degli utenti che hanno accesso (Selected Users)


Si modifica quindi l'SSL_POOL ovvero il set di indirizzi della VPN

a questo punto e' finita la configurazione server e si passa al lato client

Per Windows la cosa e' banale in quanto da dentro Internet Explorer ci si collega all'indirizzo pubblico del router, si inseriscono le credenziali e si preme il pulsante SSL VPN. In automatico e' mandato in esecuzione un programma definito SecuExtender che permette di accedere al rete interna

Su Mac non esiste questo automatismo ed e' necessario scaricare il file da questo link ed avviarlo a mano

lunedì 26 gennaio 2015

VPN con WRT54GL e TomatoUSB


Perche' comprarsi un router wireless Linksys WRT54GL del 2005?
Perche' oramai con un costo moderato (inferiore ai 50 euro) si ottiene un hardware di tutto rispetto e un supporto hardware notevole visto il successo all'uscita (usa un firmware basato su Linux ed e' stato subito oggetto di vari hack per estenderne le possibilita' )


In questo senso esistono i progetti DD-WRT e Tomato che aggiungono funzionalita' di VPN
Visto che gli aggiornamenti di DD-WRT risalgono al 2009 mentre Tomato e' stato attivo fino almeno 2012 ho scelto di provare Tomato

La schermata di configurazione di WRT54GL con il firmware standard si trova all'indirizzo 192.168.1.1 (username: admin, password:admin)


Per aggiornare il firmware si scarica il file Tomato_1_28 decomprimendolo. Si va quindi in Administration/Firmware Upgrade e si effettua l'upload di WRT54G_WRT54GL.bin

Al riavvio la macchina riparte con il nuovo firmware


Con il firmware base non e' disponibile la funzionalita' OpenVPN. Si deve scaricare una versione modificata di Tomato (detta TomatoUSB). Si effettua quindi l'upload del file tomato-NDUSB-1.28.8754-vpn3.6.bin, nuovo riavvio ed e' terminato il lavoro di cambio di firmware

Si configura la porta WAN e il server del tempo (OpenVPN rifiuta i certificati se non e' impostato l'orario in modo corretto). Per poter vedere l'interfaccia di amministrazione dalla WAN deve essere flaggata l'apposita opzione (scelta sconsigliata ma in emergenza puo' essere utile)

a questo punto si entra in VPN Tunneling e si fa lo start del servizio



si arriva quindi alla configurazione dei certificati
Questa fase e' simile per Mac, Windows e Linux. In questo caso viene mostrato il caso Mac mediante l'uso del client TunnelBlick

Il programma, una volta lanciato, mette un'icona nell'angolo vicino all'orologio
Si clicca Dettagli VPN/Utilita'/Apri easy-rsa nel terminale

Per creare i certificati si usa la seguente sequenza di comandi
$ source ./vars
$ ./clean-all
$ ./build-ca
$ ./build-key-server server
$ ./build-key client1
$ ./build-dh

su Yosemite e' necessario anche cambiare le impostazioni avanzate come nell'immagine

a questo punto si aprono i file con editor di testo e si copia il contenuto nella schermata dell'amministrazione web del routert

BoxFile
Certificate Authorityca.crt
Server Certificateserver.crt
Server Keyserver.key
Diffie Hellman parametersdh1024.pem




Di nuovo si avvia il servizio ed il risultato dovrebbe essere qualcosa di questo tipo


Finita la configurazione del server si passa al lato client

si copiano i file 
ca.crt 
client1.crt
client1.key

in una directory e di crea una file nome_vpn.ovpn e con un editor di testo si incolla questo testo
(modificare la parte evidenziata in giallo con l'ip del router vpn)

--------------------------------------------------
##############################################
# Sample client-side OpenVPN 2.0 config file #
# for connecting to multi-client server.     #
#                                            #
# This configuration can be used by multiple #
# clients, however each client should have   #
# its own cert and key files.                #
#                                            #
# On Windows, you might want to rename this  #
# file so it has a .ovpn extension           #
##############################################

# Specify that we are a client and that we
# will be pulling certain config file directives
# from the server.
client
ns-cert-type server

# Use the same setting as you are using on
# the server.
# On most systems, the VPN will not function
# unless you partially or fully disable
# the firewall for the TUN/TAP interface.
;dev tap
dev tun21

# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one.  On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
;proto tcp
proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote xxxxxxxxx 1194

# Choose a random host from the remote
# list for load-balancing.  Otherwise
# try hosts in the order specified.
;remote-random

# Keep trying indefinitely to resolve the
# host name of the OpenVPN server.  Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite

# Most clients don't need to bind to
# a specific local port number.
nobind

# Downgrade privileges after initialization (non-Windows only)
;user nobody
;group nobody

persist-key
persist-tun
float

# If you are connecting through an
# HTTP proxy to reach the actual OpenVPN
# server, put the proxy server/IP and
# port number here.  See the man page
# if your proxy server requires
# authentication.
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

# Wireless networks often produce a lot
# of duplicate packets.  Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings

# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert client1.crt
key client1.key

# Verify server certificate by checking
# that the certicate has the nsCertType
# field set to "server".  This is an
# important precaution to protect against
# a potential attack discussed here:
#  http://openvpn.net/howto.html#mitm
#
# To use this feature, you will need to generate
# your server certificates with the nsCertType
# field set to "server".  The build-key-server
# script in the easy-rsa folder will do this.
;ns-cert-type server

# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x

# Enable compression on the VPN link.
# Don't enable this unless it is also
# enabled in the server config file.
comp-lzo

# Set log file verbosity.
verb 3

# Silence repeating messages
mute 20
--------------------------------------------------

doppio clic sul file ovpn e si aggiunge questa configurazione a TunnelBlick
per connettersi e' sufficiente andare sull'icona vicino all'orologio ed effettuare la connessione

venerdì 23 gennaio 2015

VPN Host to Lan con Zeroshell e VirtualBox


In questo post viene mostrato come configurare una VPN Host to Lan mediante l'uso di Zeroshell (il  tutto virtualizzato per comodita' su VirtualBox)

Lo scenario e' il seguente:
1) un server su rete interna con indirizzi 10.0.0.x su cui gira un server SSH. Lo scopo e' di collegarsi via VPN a questo server (per la cronaca e' una installazione minimale di Debian)

2) una macchina router cui gira Zeroshell, una distribuzione firewall/router che ha integrata un server VPN basato su OpenVPN. Questa macchina ha due schede di rete: una WAN con indirizzo 150.217.xx.xx ed una scheda interna che collega la LAN 10.0.0.x

3) una macchina esterna, in particolare una Ubuntu, che deve accedere come client alla VPN




Per la virtualizzazione un paio di indicazioni:
1) Tutte le macchine virtuali devono avere le schede di rete virtuali in modalita' Bridge
2) La macchina Zeroshell deve avere due interfacce di rete in quanto lavora come router. Facendo le prove su un portatile ho montato una scheda di rete USB

Questa e' la configurazione degli indirizzi di rete. L'interfaccia VPN99 e' virtuale ed e' ovviamente quella della VPN



Si aggiunge un utente (username/password) che dovra' accedere alla VPN


si imposta poi la VPN (modalita' Host to Lan, primo tab). Da notare che e' stata reimpostata la porta di ascolto di default di OpenVPN (spostata su 8080/TCP). Il pool di indirizzi della VPN e' del tipo 192.168.250.x ma non interessa molto perche' saranno trasparenti. Da ricordarsi di spuntare NAT

A questo punto e' bene salvarsi il file del certificato del server (sara' poi installato sul client). Si deve entrare su Trusted CAs ed esportare il file TrustedCas.pem


Per avvisare Zeroshell come instradare verso la rete interna il traffico VPN si deve cliccare il pulsante Net nella schermata precedente e settare il pool di indirizzi della rete interna


La parte Zeroshell e' terminata, passiamo a configurare il client. Su Ubuntu e' particolarmente immediato. Dal menu della configurazione delle interfacce di rete si puo' impostare anche un nuovo client VPN. In questo caso si deve selezionare OpenVPN come tipologia di connessione
Si seleziona l'indirizzo WAN di Zeroshell e si inseriscono le credenziali dell'utente ed il certificato del server (TrustedCa.pem)


Si va quindi in configurazione avanzate e si modifica la porta di ascolto (8080) e si spunta la compressione LZO e TAP (questo e' importante, altrimenti la connessione va in TUN e ci si collega alla VPN ma non si arriva sulla rete interna)



a connessione avvenuta deve comparire l'interfaccia virtuale


a questo punto si si puo' collegare da qualunque rete alla rete interna sul server ssh (sempre che la rete da cui ci si connette non filtra la porta 8080 ma cio' e' improbabile perche' sulla stessa porta girano spesso servizi web)






Geologi

  E so anche espatriare senza praticamente toccare strada asfaltata