Valutazione attuale: 5 / 5

Stella attivaStella attivaStella attivaStella attivaStella attiva
 

In quest' articolo che vuole essere d' introduzione ad una serie piu' ampia parleremo delle vpn, del loro perche' di esistere, del software e dell' hardware necessario per realizzarle.

tutto nasce dall' esigenza di alcuni amici

scenario classico di una videosorveglianza remota

 

poter installare delle telecamere nella casa di citta e in campagna e poterle vedere quando sono fuori casa

quindi lo scenario classico in cui ci muoveremo e' quello di uno o piu' device (telecamere ip od altro) in posizioni remote a cui abbiamo necessita' di accedere Quindi, la villetta in montagna o la casa, per poter controllare le telecamere, la caldaia, il condizionatore e la lavatrice

Tutti questi device, in teoria possono esser monitorati direttamente da internet

 

 

Pro:
 Facilità di configurazione
Raggiungibilità da tutto il mondo
Contro :
Non e' detto che il nostro ISP ci fornisca un' ip pubblico per raggiungere dall'esterno i dispositivi
Qualsiasi utente di Internet potrà collegarsi ai nostri device


Perché ritengo che “ Qualsiasi utente di Internet potrà raggiungere i nostri device” sia un contro?

Perché non sempre si comperà un dispositivo di una buona marca, e quindi a volte saranno presenti dei bug:

Perché tutti i dispositivi hanno un:

-        End of life – ciclo di vita

E quelli di buona marca hanno pure un:

-        End of support – fine degli aggiornamenti

E se vengono scoperte delle vulnerabilità  ??? Si cambia il device?
A volte probabilmente avremo bisogno di accedere (oltre alle telecamere) a qualcosa collocata a casa nostra, a casa di un nostro amico , ma non è sicuro che sia raggiungibile da tutti via Internet.

openvpn openwrt 2

Quindi chiediamoci, è proprio necessario che sia raggiungibile da tutti??

Se la vostra risposta è no, allora possiamo prendere in considerazione l’idea di implementare una vpn

Cosa è una VPN ?
Una rete dentro una rete, se vogliamo isolata e quindi impenetrabile dall’esterno , di cui possiamo assicurarci dell’identità dei partecipanti e crittografare il traffico

Può una VPN ovviare ai contro che avevamo elencato?

SI

È costosa/difficile da implementare ?

NI

Puo' essere usata da chiunque?
Si a condizione che gli vengano forniti i certificati

Un altro dei motivi per cui ritengo utile una vpn facente uso di tecnologia openvpn è perché consente di configurare sul server qualsiasi porta (53 – DNS , 80 HTTP, 443 HTTPS) , dandoci così la possibilità di bypassare alcune protezioni/limitazioni di certe location dove si accede tramite rete protetta da proxy/firewall, aggiungendo al contempo uno strato di sicurezza alla nostra connessione , cosi' da poterci connettere in tranquillita anche da connessioni wifi aperte (bar, centri commerciali etc etc)
openvpn eventualmente permette effettuare l'  autenticazione su alcuni proxy in maniera interattiva o con le credenziali memorizzate su un file

openvpn openwrt 3

come possiamo vedere, inplementando openvpn tagliamo fuori tutti gli utenti curiosi e se vogliamo possiamo limitare le chiamate a casa dei dispositivi (eventuali comunicazioni verso server o indirizzi impostate dal costruttore dell' hardware)

Come implementiamo una VPN?

Le strade sono tante:
esistono degli hardware dedicati , professionali e costosi  ….

imola tiesse imola ha una serie di router con interfacce wan multiple (adsl/isdn/umts) e vari protocolli di routing

o con hardware di recupero/a basso costo - LINK a come installare OPENWRT su alcuni router

openwrt gate2voip openwrt nexx wt3020h openwrt TL MR3040 03

 

LINK aggiunta openvpn su openwrt

Tipologia di reti supportate

Rete bridged
è una rete dove i client hanno la stessa classe dell’indirizzo IP del server , non è supportata su android quindi non la prenderò in cosiderazione
Il traffico broadcast attraversa tutta la rete generando overhead a volte inutile e costoso se fatto su connessioni mobili (UMTS/LTE)

Rete routed
è una rete dove i client hanno una classe di indirizzi diversa da quella del server
Necessita di configurare i router con una rotta statica
Il traffico broadcast non si propaga da un sito all’altro

 

openvpn openwrt bridged

 

openvpn openwrt routed

Cosa ci serve

Per creare un server a cui connetterci ci serve:

Link all' installazione del server e generazione certificati

  • Un indirizzo ip statico o staticizzato tramite servizi tipo dyndns purché pubblico (i client possono puntare ad un nome di dominio)
  • Una macchina che faccia da server + router
  • Un router su cui poter gestire le rotte statiche se il server non farà da router
  • Aprire la porta giusta sul router
  • Generare il certificato per l’autorità di certificazione
  • Generare il certificato per la macchina server firmato dall’autorita
  • Generare un certificato firmato per ogni macchina client

Per permettere la connessione di un client ci serve:

link per la configurazione dei client e generazione dei certificati

  • Un router (anche di piccole dimensioni) con almeno due porte lan compatibile con openwrt su cui installare openvpn, eventualmente con porta USB se vogliamo la connettitività UMTS/LTE

o in alternativa

  • Un raspberry per fare da client
  • Un router per gestire le rotte statiche o un adattatore usb/lan per gestire la lan cliente
  • Uno smartphone android / ios
  • Un client openvpn
  • I certificati e la configurazione adatta per lo smartphone

 

Sicurezza aggiuntiva

OPENVPN consente alcuni accorgimenti per aumentare la sicurezza
Puo' esser eseguito come utente nobody  (se bucano il server devono fare privilege escalation)
Puo' esser disabilitato l' uso della memoria di paging (--mlock) (per non salvare dati sensibili sullo swap)
Puo' esser costretto al chroot (restringendo il suo campo di movimento)
I pacchetti possono esser firmati singolarmente (facendo si' che il calcolo della firma sia piu' rapido/leggero della decrittazione/elaborazione, cosa che consente di rendere il server piu' resistente ad attacchi dos)
Si puo' controllare che il client si connetta ad una macchina server evitando che qualcuno con i certificati di un' altro client tenti di impersonare il server

Reti routed navigazione

Nella rete routed possiamo isolare 3 tipologie di navigazione

  1. Ogni host sulla rete client naviga in Internet attravero la connessione disponibile e la connessione VPN viene sfruttata solo per raggiungere le macchine dell’intranet
  2. Ogni host della rete client NON può navigare direttamente su internet , ma il traffico della intranet verso Internet viene inviato al server dal quale uscirà verso la Rete ,utile se vogliamo filtrare il traffico verso alcuni siti/direttrici
  3. Nessun host puo' navigare su internet, si può navigare solo sulla intranet (in tal caso, se i nostri device hanno un virus/backdoor non potranno farsi raggiungere da internet) 

Generazione dei certificati

Il principio su cui si basa la VPN è che ogni client deve avere un certificato pubblico/privato con cui crittografare ed inizializzare il traffico dati
questi certificati devono per esser attendibili esser firmati da un' altro certificato detto di “CA” (autorita' di certificazione)
Il certificato CA possiamo anche generarcelo noi stessi
e' possibile dare una data di scadenza ad ogni certificato
e' possibile revocare un singolo certificato (in caso di telefonino perso ad esempio)
i certificati è auspicabile che non siano generati sulla macchina server, ma su di una machina “offline” e poi successivamente copiati sul server / client tanto sono dei semplici file di testo dal peso di pochi Kb

App per android

L' App per android ha bisogno di un unico file dentro il quale è presente sia la configurazione che i tre/quattro certificati

 

Finito di parlare della parte vpn generica , entriamo piu' nel dettaglio
Personalmente apprezzo il progetto OPENVPN sopratutto sposato al progetto OPENWRT avendo così la possibilità di integrare tutto in un unico device

OPENWRT è un progetto open source di firmware per router

Tra i suoi punti di forza abbiamo :

  • La compatibilità con svariato hardware
  • La modularità di un sistema linux che consente di aggiungere le funzioni che più ci servono
  • La possibilità di aggiungere dispositivi USB al router (chiavette, memorie)

 

Essendo il progetto basato su linux, possiamo installare anche i tool di diagnostica tipici di linux, l’unico limite è lo spazio sul device (tcpdump , nano , mc, netcat)

ecco come si presentera' l' interfaccia grafica del nostro router

 

openvpn6

 

 

Quasi tutti i router commerciali in circolazione non nascono con openwrt, ma va caricato il firmware adatto ed a volte si deve smontare il router e magari usare pure il saldatore!!
molti di questi router hanno una porta seriale onboard da cui si può gestire il router dalla riga di comando
i router di solito hanno 4 o 8 MB di memoria flash , con 4 mb si può solo accendere il router e caricare qualche programma (non openvpn però), quindi se abbiamo scelto un router da 4MB (il tplink mr3040) dovremo aggiungere una memoria flash esterna

 se come me vi interessa anche la connettitività UMTS vi basterà aggiungere una memory card alla chiavetta UMTS e seguire la procedura per l’EXTROOT, in pratica avviare in automatico il router montando una partizione esterna come OVERLAY (sovrapposizione), che ci dara' virtualmente spazio illimitato (io ho una 2GB)

Openwrt supporta pennette UMTS/LTE :

  • Che simulano una interfaccia seriale
  • Che simulano una interfaccia ethernet

basterà in sede di configurazione del router caricare il software aggiuntivo adatto - LInk alla configurazione delle pennette USB UMTS/LTE

Conclusioni

Alla fine siamo riusciti ad avere una installazione della vpn con un server su una VPS di aruba
uno o più router client ognuno con la sua sottorete per la gestione di alcune telecamere remote che non possono navigare su Internet
uno o più client su di alcuni pc che consentono di navigare tramite l’ip del server
uno o più client sul telefonino che consentono la navigazione tramite l’ip del server

Vai all'inizio della pagina