
Questa vuole essere una guida completa per effettuare il setup di una propria VPN utilizzando Wireguard e che filtra link pubblicitari e tracker grazie ad un filtro di AdBlocking fatto con Pi-Hole.
Se volete darmi consigli, contribuire alla guida o effettuare traduzioni, potete effettuare una pull request su GitHub e supportare lo sviluppo di queste guide con una donazione.
Tabella dei contenuti
- Obiettivo
- Scelta dell'hosting provider
- Connessione alla VPN tramite SSH
- Setup della VPN
- Configurazione PiHole e AdLists
- Esportazione delle configurazioni
- Test di funzionamento
- Conclusioni
Obiettivo
L'obiettivo finale di questa guida sarà quello di self-hostarci una VPN con un filtro per ads e tracker in maniera totalmente autonoma. Questa procedura comporta dei vantaggi e svantaggi rispetto all'utilizzo di una normale VPN commerciale:
pros
- Non doversi fidare di un provider VPN il cui modello di business, purtroppo, spesso è vendere i nostri dati personali
- Possibilità di inserire filtri per pubblicità e trackers; alcune VPN offrono questo servizio, ma spesso di qualità molto precaria
- Personalizzazione dell'esperienza: volete una VPN piu veloce? Dei filtri pubblicitari specifici? Vorreste condividerla con tutta la famiglia? Con una vostra VPN potete gestirvi nel modo che preferite
- Possibilità di scegliere la nazione e quindi anche la sede legale dei server da noleggiare (e sfruttare le migliori nazioni per privacy informatica)
contro
- Meno anon set sull'indirizzo IP: a meno che voi non condividiate la vostra vpn con molti familiari e amici, sarete gli unici ad utilizzare l'indirizzo IP in uscita della VPN; questo è uno svantaggio in quanto anche se esso non è direttamente collegato a voi è comunque un codice univoco che solo voi sfruttate ed usate. È quindi non ottimo per la privacy in quanto rende piu facile tracciarvi
- Anche se non regalate dati ad un fornitore VPN, nella maggior parte dei casi farete il set-up di questo sistema su una VPS (server a noleggio), sposterete quindi il vostro trust da un fornitore commerciale di questo servizio ad uno che noleggia server (che vedrà il vostro indirizzo IP quando utilizzate la VPN). È quindi fondamentale scegliere correttamente il provider di server o eseguire questo setup su una macchina connessa ad una rete internet non instestata a voi
Scelta dell'hosting provider
Con hosting provider s'intende l'azienda che vi fornirà il server su cui
fare il
set-up presente in questa guida. È fondamentale trovare un hosting con una
sede
legale che tutela la vostra privacy (stati interessanti possono essere
quelli
fuori dai 5 eyes, fuori dalla nato o che hanno buone politiche sui dati
informatici. Buoni esempi sono Islanda, Svezia, Svizzera, Gibilterra, ecc),
che sembra essere affidabile (non ha fatto leak di dati per piccolezze o
sembra
lottare per dare meno dati possibili alle autorità) e che richieda meno dati
personali possibili per
utilizzare il proprio servizio (pagamenti in bitcoin, dominio tor, login
senza
conferme telefoniche, ecc).
In questa guida vi consiglierò un paio di hosting provider, spesso quelli
piccoli o con politiche di privacy interessanti sono più costosi delle
grosse
hosting company.
È importante guardare anche che servizi ci vengono offerti per scegliere il
server più adatto alle nostre necessità (potenza, capacità e velocità di
banda,
ecc).
- 1984 Hosting é un sito che offre vari servizi (domini, vps, dns, ecc), ha sede legale in Islanda (molto interessante per l'aspetto di Privacy informatica) e offre server con 1 core, 1 GB di ram e 1TB di banda a 100Mb/s per circa 4.50 euro oppure lo stesso server con un po' più di ram e il doppio di banda a 9 euro al mese. Penso che questo vps provider sia molto interessante, accetta pagamenti in bitcoin e il servizio clienti nelle mie esperienze passate è sempre stato abbastanza efficiente (24/48h per avere supporto).
- Njalla è un vecchissimo ma ancora attivo servizio di hosting, vpn, domini con sede legale a Nevis (Caraibi) e la maggior parte dei server situata in Svezia. Come prezzi è leggermente più cara di 1984 ma offre server leggermente più potenti e con un po' più di banda: 1 Core, 1.5 GB RAM, 15 GB Disk, 1.5 TB Traffic per circa 15 euro (anche qua pagabili in bitcoin). È possibile usare questo servizio anche navigando attraverso il suo dominio tor.
Una volta scelto il servizio di hosting consiglio caldamente di proseguire acquistando una macchina con sopra una distribuzione debian based (debian o ubuntu) e settando una password di accesso complessa.
Connessione al server VPS con SSH
Come molti sapranno, per connettersi a server remoti, solitamente si
utilizza
SSH: un protocollo integrato nel terminale di linux con cui collegarsi a
server
o pc distanti.
Per connetterci alla nostra VPS apriamo un terminale su un qualsiasi nostro
pc e
diamo il comando:
ssh [nome utente]@[indirizzo ip]
un esempio potrebbe essere: ssh root@192.34.33.256 (root è solitamente il
nome
utente mentre il numero seguente è l'indirizzo IP del server, solitamente è
possibile trovarlo
nelle informazioni della macchina da voi acquistata sul sito di hosting).
Una
volta dato il comando basterà inserire la password precedentemente impostata
per
fare l'accesso al server.
Una volta connessi in SSH possiamo dare il comando:
sudo apt update && apt upgrade -y
in modo da aggiornare tutti i pacchetti del nostro sistema operativo.
In questa guida andremo a seguire un setup per la sicurezza del nostro
server
semplice e minimale (in modo che si adatti a tutti gli utenti), se volete
usare
setup piu avanzati vi consiglio di
cercare online come effettuare login sul proprio server utilizzando una
chiave
pubblica ssh.
Andiamo infine a dare il comando:
sudo apt install fail2ban
per andare ad installare questo leggerissimo software che permette di
limitare
l'accesso in caso di troppe password errate sul nostro server (e quindi
migliorare leggermente la sicurezza di esso).
Setup della VPN
Ora che abbiamo effettuato tutte le procedure preliminari per rendere piú sicura
e aggiornata
la nostra VPS possiamo procedere al vero setup, andiamo ad installare wireguard
con i seguenti comandi:
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh
a questo punto andiamo anche ad installare pi-hole (il software che useremo come
filtro pubblicitá, tracker e analytics):curl -sSL https://install.pi-hole.net | bash
durante l'installazione scegliete come interfaccia di rete "wg0", usate l'opzione custom dns (non così importante, alla peggio la andiamo comunque a sovrascrivere dopo), abilitate la 'web interface' e salvatevi la password per il login che vi verrá data di default (ci servirá in seguito).
Andiamo ora ad installare unbound, un software per avere un DNS resolver locale veloce (per fare una semplificazione ci servirá per avere il nostro setup finale completo, efficente e veloce).
sudo apt install unbound
ed andiamo a configurarlo con:
nano /etc/unbound/unbound.conf.d/pi-hole.conf
Incollate questa configurazione all'interno del file:
server:
verbosity: 0
interface: 127.0.0.1
port: 5335
do-ip4: yes
do-udp: yes
do-tcp: yes
do-ip6: yes
prefer-ip6: no
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: no
edns-buffer-size: 1472
prefetch: yes
prefetch-key: yes
minimal-responses: yes
cache-min-ttl: 300
cache-max-ttl: 86400
serve-expired: yes
msg-cache-size: 50m
rrset-cache-size: 100m
num-threads: 1
so-reuseport: yes
so-rcvbuf: 4m
so-sndbuf: 4m
private-address: 192.168.0.0/16
private-address: 169.254.0.0/16
private-address: 172.16.0.0/12
private-address: 10.0.0.0/8
private-address: fd00::/8
private-address: fe80::/10
andiamo quindi a riavviare unbound:sudo service unbound restart
a questo punto abbiamo correttamente prepato il dns locale, andiamo a configurare pi-hole per parlare con unbound correttamente:
nano /etc/pihole/setupVars.conf
potete editare o sostituire il vostro file di config con quello sottostante avendo accortezza di inserire i dati che nel box qua sotto ho inerito tra parentesi graffe:
WEBPASSWORD={lasciate quella presente nel file di default}
BLOCKING_ENABLED=true
WEBUIBOXEDLAYOUT=traditional
WEBTHEME=default-dark
PIHOLE_INTERFACE=wg0
IPV4_ADDRESS={mette l'indirizzo IP della vostra VPS esempio:123.24.223.11}
QUERY_LOGGING=true
INSTALL_WEB_SERVER=true
INSTALL_WEB_INTERFACE=true
LIGHTTPD_ENABLED=true
CACHE_SIZE=0
DNSMASQ_LISTENING=local
DNS_FQDN_REQUIRED=true
DNS_BOGUS_PRIV=true
DNSSEC=false
REV_SERVER=false
PIHOLE_DNS_1=127.0.0.1#5335
a questo punto re-buildiamo pihole con il seguente comando:pihole -r
Configurazione PiHole e AdLists
La parte a riga di comando é ormai finita, ce l'hai fatta guerriero! 🎉
A livello teorico in questo momento é gia tutto funzionante, andiamo peró prima di
utilizzare la VPN ad aggiungere dei filtri per la pubblicità!
Aprite un browser qualsiasi e nella barra di ricerca digitate:
http://{indirizzo ip della vpn}/admin
A questo punto dovreste vedere la pagina di login di Pi-Hole (il nostro sistema di
filtro pubblicitá, tracker e analytics). Come password dovete usare quella che ci
eravamo salvati
precedentemente (e che ci venive generata in fase di installazione). Una volta
effettuato l'accesso
avrete davanti questa schermata:
Andiamo ora nella sezione "AdLists" ed aggiungiamo delle liste di vari domain da
bloccare (o meglio,
il link ad alcune di queste liste). Di questo argomento si puó discorrere ore, il
concetto di base é che se aggiungiamo decine di di fonti a caso bloccheremo
tantissimo...troppo,
andando quindi a far smettere di funzionare molti siti web o funzioni di
applicazioni su nostri
dispositivi. Conviene usare poche liste e tendenzialmente fatte da persone di cui ci
fidiamo
almeno parzialmente. Vi lascio qua sotto alcune delle principali e piu famose, in
caso vogliate
ampliare la sezione vi lascio l'onere di farlo in autonomia in quanto in base alle
configurazioni ci
potrebbero essere diversi pro o contro.
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
https://adaway.org/hosts.txt
https://v.firebog.net/hosts/AdguardDNS.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://winhelp2002.mvps.org/hosts.txt
Una volta inserite le varie blocklist muoviamoci nella sezione: tools → update gravity
ed andiamo ad avviare il processo di attivazione delle varie liste. In caso di problemi
con
alcuni siti (io per esempio in passato con alcune liste avevo avuto problemi con i link
"t.co"
di twitter) basterá aggiungere il sito alla sezione "whitelist" in modo da escludero dai
siti
da bloccare. Ogni volta che effettuate modifiche andate poi a fare update gravity per
renderle
effettive.
Esportazione delle configurazioni
Andiamo ora ad attivare la configurazione sui nostri dispositivi. Iniziamo dai
telefoni:
Installiamo sul nostro dispositivo l'applicazione Wireguard, una volta fatto apriamo
il terminale della nostra VPS e diamo il comando:
bash wireguard-install.sh
selezioniamo "add new client", diamo un nome a scelta, selezioniamo come DNS
"current system resolver". Ora ci verrá mostrato un QRcode, con la nosta app mobile
di wireguard andiamo a scannerizzarlo, dopo averlo fatto ci dovrebbe mostrare una
schermata del genere:

Nella sezione "DNS servers" andiamo ad inserire l'indirizzo ip della nostra VPS, verifichiamo che nella sezione "Endpoint" sia presente lo stesso indirizzo IP piú la scritta ":51820" che indica la porta, fatto questo ci basterá salvare e attivare la VPN!
Per i pc la procedura è simile, ci basterá installare Wireguard, generare la configurazione sulla VPS (usate il comando spiegato sopra, nella procedura android), per poi copiarla nel pc:
- Su Windows, la configurazione è da inserire nell'interfaccia grafica di Wireguard
- Su Linux, la configurazione è da salvare in un file con estensione .conf nella cartella /etc/wireguard (ad esempio, vpn.conf), per poi attivare la VPN col comando da terminale:
sudo wg-quick up {nome del file .conf}
mentre per spegnerela:
sudo wg-quick down {nome del file .conf}
anche su pc, prestiamo attenzione ad avere modificato le sezioni 'DNS server' e 'Endpoint' con l'indirizzo IP del nostro server.
Test di funzionamento
Ora che abbiamo pronta e attiva la nostra VPN andiamo a testare che funzioni tutto
correttamente. Prima di tutto su un qualsiasi browser visitiamo il sito VPN testing e avviamo un test. Verificate che
tutti gli indirizzi IP e localizzazioni che vi vengono mostrate a schermo non siano
quelle del vostro paese di origine ma del server VPN.
Se tutto é corretto procediamo al test, non della VPN stessa, ma dell' adblocker,
visitando il sito AdBlock
test. Se il risultato finale é maggiore del 70/80% vuol
dire che tutto funziona correttamente (aggiungendo piu o meno blacklist a Pi-Hole i
risultati di questo test potrebbero variare). Prestate attenzione a disattivare
temporaneamente eventuali estensioni di AdBlock del vostro browser per non avere
risultati falsati. Anche il browser che utilizzate potrebbe influire sui risultati
del test.
Se entrambe le prove vengono passate correttamente sei un vero drago e sei riuscito a
seguire perfettamente questa guida!! 🐉
Conclusioni
Questo é uno dei tanti set-up possibili per crearsi una server VPN. Come ogni tipo di configurazione é possibile eseguire modifiche per adattare il servizio ai propri trade-off. Quello presentato in questa guida é, a mio parere, un buon bilanciamento tra sicurezza, funzionalitá e privacy. Se hai proposte di miglioramento, hai trovato errori puoi aiutarmi e far sentire la tua voce sul repository github.