Ciao ragazzi, benvenuti nel primo tutorial
del 2018!
Il video di oggi è stato selezionato da voi
come prioritario nel sondaggio del mese scorso,
e quindi eccoci qui a parlare di VPN!
Nello specifico vedremo come configurare,
in modo super semplice e super veloce, il
Raspberry Pi Zero (ma va benissimo un qualsiasi
altro single board computer della fondazione
inglese) in modo da trasformarlo in un server
VPN, con anche qualche chicca aggiuntiva davvero
interessante.
Prima però vi dico che, dato che il risultato
del sondaggio ha visto vincere di poco la
tematica odierna, il prossimo tutorial sarà
direttamente dedicato al secondo classificato;
e tornerete a votare nella puntata successiva.
Intanto, se avete suggerimenti, idee o progetti
da proporre, non esitate a lasciare un commento
qui sotto!
Bene! Oggi vedremo -fondamentalmente- come
tirar su un'istanza di OpenVPN su Raspbian
OS Lite, con l'aggiunta di Pi-Hole. Ci tengo
a precisare che i due tool sono completamente
indipendenti e non è necessario installarli
entrambi: essi svolgono due funzioni differenti
che, però, se unite, permettono di avere
un sistema finale molto molto interessante.
Andiamo a scoprire il perché!
Prima di tutto, di che cosa stiamo parlando?
Nel tutorial che ho pubblicato a fine settembre
(e che, se ve lo foste perso, trovate linkato
in descrizione e tra le schede di questo video),
avevamo visto come trasformare il Raspberry
Pi in un Access Point "carrozzato": un punto
di ingresso per la connessione ad internet
che consentisse di 1) non farci condividere
la reale password di rete, 2) eventualmente
monitorare in modo più completo tutto il
traffico passante (con possibilità di blocco
o limiti), 3) fare da ripetitore del segnale
per aree poco coperte, o 4) cosa più interessante
di tutte, fare in modo di dirottare tutto
il traffico passante per il Pi stesso verso
una VPN remota o verso la rete TOR, senza
quindi dover configurare queste modalità
di accesso singolarmente su ogni dispositivo.
Il risultato di quell'esperimento era un "router
avanzato" da connettere a cascata su quello
principale, capace però di fornire una connettività
più sicura per i dispositivi ad esso collegati.
In più era portatile, viste le dimensioni
del Pi e la possibilità di poterlo alimentare
anche con un semplice powerbank, consentendoci
quindi di avere sempre con noi -anche in viaggio-
uno strumento di protezione per navigare.
A questo punto possiamo fare un passo ulteriore
cosicchè, quando ci colleghiamo ad internet
da fuori casa, sia possibile direzionare il
traffico dapprima sulla nostra linea domestica
e da qui online. In pratica andremo a creare
una nostra VPN privata, senza la necessità
di cercare servizi a pagamento di terze parti.
E questo consentirà, oltretutto, di farci
accedere senza problemi ad eventuali dischi
di rete che abbiamo in casa o qualsiasi altro
dispositivo generalmente non esposto sul web.
Per i nostri scopi ci viene incontro OpenVPN,
e soprattutto lo script PiVPN. PiVPN è
fondamentalmente una sequenza di istruzioni
che non fanno altro che installare sul Raspberry Pi
tutti i software necessari e farceli
configurare tramite una praticissima procedura guidata.
Visto che io questo processo l'ho già completato, non
ve lo farò vedere direttamente, ma vi spiegherò
passo-passo cosa fare per completare anche
voi l'installazione. Cosa che è davvero banale!
Prima di tutto si presuppone abbiate Raspbian
OS installato sulla microSD (meglio se la
versione Lite che occupa molte meno risorse)
e che abbiate abilitato l'accesso al pi via
SSH (accesso che, una volta completato il
tutto, per motivi di sicurezza, potreste anche
voler disabilitare). Non entro nel merito
di questi passaggi perché sono sempre gli
stessi, visti e rivisti più volte e che,
in ogni caso, trovate maggiormente esplicitati
nella guida abbinata a questo focus che ho
pubblicato sul blog, e che trovate linkata
qui sotto in descrizione e tra le schede di
questo video.
Una volta effettuato l'accesso al Raspberry
Pi via SSH, la prima cosa da fare è certamente
quella di cambiare la password per l'utente
pi con il comando passwd, quindi aggiornare
il sistema operativo tramite i classici comandi
preposti che vedete a video.
Il processo può impiegare un po' di tempo,
ma soprattutto in questo caso è davvero
fondamentale avere un sistema operativo
sempre aggiornato.
A questo punto, il primo comando da lanciare
lo vedete a video
e ciò che fa non è altro che scaricare
lo script PiVPN (che come anticipato contiene
tutti i passi da eseguire) e poi mandarlo
in esecuzione.
ATTENZIONE: lanciare comandi del genere è
molto rischioso, perché il sistema eseguirà
qualsiasi informazione contenuta nello script
senza verificare né autenticità né altro.
Quindi, se volete essere sicuri di ciò che
verrà fatto sul vostro Raspberry Pi, aprite
lo specifico link sul browser del PC e controllatene
il contenuto. In questo caso specifico comunque
possiamo stare sufficientemente sicuri.
Ad ogni modo, una volta avviato, il comando
inizierà la fase di configurazione che trasformerà
il Raspberry Pi in un Server OpenVPN. E questi
che vi descriverò sono tutti i passaggi da
completare:
1) impostazione di un indirizzo IP statico,
che può essere eseguita sulla porta ethernet
o sulla wi-fi. Io ho scelto l'ethernet ma
il risultato finale non cambia: scegliete
cosa preferite e confermate oppure modificate
a vostro piacimento l'indirizzo IP da utilizzare.
Io ad esempio ho scelto di usare l'indirizzo
IP 192.168.1.150 (visto che il mio router
assegna indirizzi in tale sotto rete), e ho
scelto questo perché l'ultimo ottetto ha
un numero sufficientemente alto che difficilmente
il mio router potrà assegnarlo nell'uso ad
un altro dispositivo, evitando quindi possibili
conflitti. In generale i router sono abbastanza
intelligenti da evitare conflitti, quindi
volendo potete usare qualsiasi IP vorrete...
2) selezionare l'utente con cui gestire le
configurazioni per OpenVPN. Scegliete l'utente
"pi", che poi dovrebbe anche essere l'unico
disponibile.
3) abilitare o meno l'aggiornamento automatico
del sistema. Qui c'è da aprire una parentesi:
visto che il Raspberry Pi verrà esposto su
internet, è importante che esso sia sempre
aggiornato, quindi personalmente consiglio
di abilitare gli aggiornamenti automatici.
Il risvolto della medaglia è che potrà capitare
che sia necessario di tanto in tanto riavviare
il Pi affinché gli update siano correttamente
installati, o che possa verificarsi qualche disservizio.
4) scegliere il protocollo di funzionamento.
Va benissimo UDP.
5) impostare la porta su cui esporre OpenVPN.
Di default viene utilizzata la porta 1194,
ma è possibile impostarne un'altra. Il mio
consiglio è di usarne un'altra, ad esempio
io ho settato la 11948, giusto per mischiare
un po' le carte in tavola in caso di attacchi
verso il vostro indirizzo IP con scansioni
automatiche sulle porte standard. Non si tratta
di una protezione elevata, ma è comunque
un inizio.
6) decidere la grandezza per la chiave crittografica
che OpenVPN utilizzerà. Utilizzare più bit
rende la chiave più sicura ma aumenta sensibilmente
i tempi di creazione. Diciamo che il valore
2048 è più che sufficiente e ragionevole
per un uso con Raspberry Pi 3, ma anche con
il Pi Zero non ho notato particolari problemi.
Sconsiglio l'uso di valori inferiori a 2048,
e forse 4096 può risultare esagerato.
7) una volta generata la chiave crittografica,
impostare il DNS Name per connettersi al proprio
server VPN. In pratica sarà possibile utilizzare
direttamente l'indirizzo IP pubblico della
nostra connessione (quello che il vostro fornitore
di rete rilascia al router e che, però, può
cambiare senza alcun preavviso), oppure affidarsi
ad un servizio DNS di terze parti che mappi
l'indirizzo IP pubblico con un nome fisso
immutabile. Di provider che offrono questo
servizio ne esistono tanti, con offerte gratuite
con o senza vincoli, offerte a pagamento,
etc... Per fare una rapida prova potete utilizzare
direttamente l'indirizzo IP pubblico della
vostra connessione, ma io vi consiglio fortemente
di abbinare l'IP pubblico ad un servizio DNS
perché altrimenti dovrete rigenerare i profili
di accesso ad ogni cambio IP e reinstallarli
su ogni dispositivo ogni volta, insomma sarebbe
davvero scomodo... Per fare delle rapide prove
con DNS è possibile registrarsi su noip.com
che consente di creare gratuitamente fino
a 3 DNS Name che possono essere associati
agli indirizzi IP che vorrete, come il vostro
IP pubblico. Una volta creato il DNS Name
potete inserirlo nella schermata sul Pi, oppure
potete confermare quello pubblico a seconda
della strada che avrete scelto di percorrere...
8) selezionare il DNS Provider per i client
VPN. Anche qui è possibile sceglierne uno
tra quelli presenti (tra Google, OpenDNS,
Level3 e così via) oppure indicarne uno custom.
Io ho provato sia con Google che OpenDNS senza
riscontrare problemi.
9) il setup è completato: riavviare il raspberry
pi con un classico sudo reboot, quindi iniziare
ad aggiungere i profili OpenVPN che dovranno
poi essere installati su ogni dispositivo
che vorrete connettere alla vostra VPN.
NOTA: in caso utilizzaste il Raspberry Pi
corazzato che avevamo visto nel tutorial di
cui parlavamo prima, in quel caso l'unico
dispositivo su cui dovrete aggiungere il profilo
sarà solo il Pi stesso che farà "da scudo"
per tutti gli altri dispositivi a lui connessi.
10) creare i profili. Per aggiungere un nuovo
profilo è sufficiente digitare il comando
"pivpn add" e seguire le istruzioni a video
(fondamentalmente si tratta di indicare un
nome ed una password). A questo punto verrà
creato un file per ogni profilo che avrete
deciso di creare, oguno con estensione .ovpn
e salvato all'interno della cartella "/home/pi/ovpns".
Questi file devono essere recuperati dal Pi,
e potete farlo in tanti modi: o collegando
la microSD ad un PC in grado di leggere file
system Ext, oppure molto più semplicemente
collegandovi con programmi FTPClient (tipo
FileZilla) al Pi e copiarli sul PC.
11) a questo punto è necessario dirottare
il traffico UDP (indicato nel punto 4) verso
la porta 1194 (o quella che avete impostato
nel passo 5) verso l'indirizzo IP statico
assegnato al Raspberry Pi nel punto 1. Per
fare ciò dovete accedere alle impostazioni
del vostro router e cercare tra le tante voci
presenti l'apposita schermata di configurazione
del Port Forwarding (a volte chiamato anche
Port Mapping). Purtroppo questa è l'unica
parte di tutta la guida che dipende fortemente
dal router che state utilizzando e dal software
su di esso in esecuzione.
12) configurato il router e avendo a disposizione
tutti i profili .ovpn che vorrete installare
sui vostri dispositivi, potete copiarli su
PC, telefonino e quant'altro, per aggiungere
l'accesso alla vostra VPN. Su iOS, ad esempio,
potete o spedirvi il file via email e quindi
aprirlo direttamente da lì, oppure trasferirlo
via iTunes o via cloud. Chiaramente distruggete
il file quanto prima, una volta settata la
VPN, perché non deve diffondersi. Su Android,
invece, ci sono meno problemi di trasferimento,
vista la natura dell'OS. In ogni caso potete
installare una qualsiasi applicazione OpenVPN
Client che permetta di importare il file appena
trasferito, inserire la password che avete
indicato al punto 10 durante la creazione
dei profili ovpn, e quindi abilitare la configurazione.
In questo modo il sistema operativo sarà
in grado di collegarsi correttamente al vostro
Server OpenVPN.
13) ultimo passo, testare il tutto. Ad esempio
io ho importato sul mio iPad mini il file
.ovpn tramite l'app OpenVPN Client che ha
provveduto ad integrare il tutto nelle impostazioni
di sistema. Quindi posso avviare la connessione
o direttamente dall'app (comodo visto che
così ho anche qualche info aggiuntiva come
la durata di connessione, i dati scambiati,
ed anche i log), oppure posso attivarla dalle
impostazioni di sistema. In ogni caso, in
alto viene indicato chiaramente che sto sfruttando
una VPN per navigare, ed in generale per verificare
che si stia passando attraverso il proprio
router basta controllare con una rapida ricerca
su google quale sia l'IP con cui si naviga: deve
essere chiaramente lo stesso assegnato al router.
Perfetto, questa era la semplice configurazione
da fare per tirar su un Server OpenVPN domestico
grazie allo script PiVPN. In questo modo anche
quando non si è connessi direttamente alla
propria rete di casa, quindi ad esempio sotto
rete dati dal cellulare o Wi-Fi pubbliche,
è possibile accedere agli indirizzi IP locali
e privati che utilizziamo in casa (magari
assegnati a dischi di rete, o altre periferiche
non esposte sul web); ma soprattutto si può
navigare su internet passando per la propria
connessione che, in linea teorica, dovrebbe
essere più sicura di quella offerta con le
pubbliche aperte, le reti degli hotel e quant'altro.
Ora possiamo aggiungere uno strato in più
che consenta di bloccare le pubblicità indesiderate
o, volendo, qualsiasi altro tipo di URL, per
tutti i dispositivi connessi al router. Per
fare ciò possiamo utilizzare Pi-Hole. Anche
in questo caso si tratta di uno script che
si preoccuperà di installare tutto il necessario
per noi.
Come prima è sufficiente lanciare il
comando che vedete a video
e seguire il processo a schermo. Ed
anche in questo caso, avendolo già effettuato,
non ve lo mostrerò direttamente ma vi spiegherò
tutti i passi da compiere:
1) una volta completato il download dei vari
pacchetti, effettuate le installazioni e quant'altro,
nella procedura guidata che si aprirà sarà
richiesto di impostare un indirizzo IP statico.
Potete lasciare quello che c'è, che poi è
quello che avete impostato per OpenVPN.
2) selezionare l'utente con cui eseguire il
software. Selezionate pihole.
3) richiesta dei protocolli da tenere in considerazioni
per gli eventuali blocchi. Selezionate sia
ipv4 che ipv6 visto che molte CDN di advertising
stanno iniziando a spostarsi sull'ipv6.
4) l'installazione è praticamente terminata,
ad eventuali altre richieste rispondete sempre
in modo affermativo. Ad esempio vi verrà
chiesto se volete attivare una interfaccia
grafica di supporto, e se vogliate avere dei
report grafici. Il mio consiglio è dire di
sì perché sono davvero utili per capire
se il sistema stia funzionando o meno.
5) a questo punto si passa alla configurazione
del router affinché possa sfruttare PiHole.
Entrando nella utility di configurazione dovete
trovare il punto in cui è possibile indicare
i parametri DNS per la connessione. Dovete
fare in modo che come primo indirizzo IP per
il DNS sia presente l'indirizzo IP statico
assegnato al Raspberry Pi nel punto 1, mentre
come indirizzo IP secondario potete inserire
l'indirizzo "8.8.8.8" che è il servizio DNS
fornito da Google ed è indispensabile nel
qual caso il pi fosse spento o non funzionante
in modo da non bloccare completamente
la connettività di rete.
6) riavviate tutto e il setup è completato,
ed è ora di testare!
Ad esempio ora sono collegato con il mio iPad
mini alla rete Wi-Fi domestica con il router
che passa per il Raspberry Pi per le interrogazioni
DNS, qundi provo ad accedere ad un sito qualsiasi.
Non me ne vogliano i ragazzi di androidworld,
sito che seguo da anni, è il primo che mi
è venuto in mente. Navigando con Pi-Hole
attivo possiamo vedere come ci siano spazi
bianchi in diverse aeree presumibilmente ricoperte
da annunci pubblicitari.
Se disattivo la connessione Wi-Fi e torno
al 4G, quindi esco dal giro router - raspberry
pi - pihole, e ricarico il sito, ecco che appariranno
tutti gli annunci e tutti i popup del caso...
PiHole può essere amministrato accedendo
all'indirizzo IP statico assegnato al Raspberry Pi
seguito da /admin. Dall'interfaccia possiamo
avere il dettaglio di tutto quello che è
accaduto per quanto riguarda gli accessi a
URL e domain bloccati e non. Loggandosi (la
prima password viene generata dal sistema e può
essere cambiata sul Raspberry Pi con il comando
"pihole -a -p") è possibile configurare un sacco
di opzioni, aggiungere e rimuovere domini, etc...
L'interfaccia è davvero curata e davvero
pratica da utilizzare. Assolutamente un must!
C'è anche l'area per il recupero automatico dei domini
da bloccare, e tante altre voci da spulciare...
Bene: oggi abbiamo visto come configurare
un Server OpenVPN privato e come installare
PiHole. Ci sono pro e contro nell'utilizzo
di entrambe le tecnologie.
Per quanto riguarda OpenVPN abbiamo detto
che consente di passare tutto il traffico
verso il nostro router e quindi navigare anche
da fuori casa sfruttando la nostra rete.
Di contro il processo rallenta in qualche modo
la navigazione, seppur leggermente, e comunque
potrebbe non risolvere alcuni problemi come
quello di accedere a siti bloccati in un determinato
paese etc. Al contrario potrebbe invece risolvere
il problema contrario e cioè se siete all'estero
e volete accedere a siti italiani bloccati
dall'esterno potete farlo in questo modo.
Per quanto riguarda PiHole, invece, i pro
sono chiaramente una navigazione più veloce,
senza interruzioni pubblicitarie, molto meno
consumo di dati, etc etc etc. Di contro chiaramente
c'è il problema etico del supporto ai siti
che vivono proprio grazie alla pubblicità
presente su di essi. In ogni caso, andando
sulla configurazione di PiHole si possono
abilitare o meno eventuali siti che si vogliono
escludere dal blocco.
In tutto questo, la cosa più comoda di tutte
è che la configurazione avviene una sola
volta su un solo dispositivo, il Pi Zero,
e a cascata tutti i device ad esso connessi
ereditano in modo trasparente quanto configurato.
Perfetto! Direi di avervi raccontato tutto
ciò che c'era da sapere. Ora voglio sapere
che ne pensate voi: usereste questo sistema?
Fatemelo sapere nei commenti e fatemi anche
sapere se avete trovato utile questo video
con un bel like. In attesa del prossimo tutorial
e dei prossimi video in genere, iscrivetevi
al canale se ancora non lo foste ed attivate
le notifiche per essere subito avvisati quando
pubblicherò nuovi focus.
Ci sentiamo presto! Ciao =)
