Ogni giorno leggi una news su come vengono hackerati sistemi di ogni genere, ma tu a casa hai più dispositivi IOT della NASA ed hai il terrore di accedervi dall’esterno, quindi risolvi con una sicura VPN.
I servizi installati nel RaspberryPi restano in ascolto su determinate porte, di norma standard, ma che per ragioni di sicurezza o di “affollamento”, possono anche venire cambiate.
Alcuni esempi: la porta per i siti web non cifrati http, per convenzione, è la porta 80, per i cifrati HTTPS la 443, SSH usa la 22, ecc.
Chi “arriva” da internet si troverà il router / firewall che blocca tutte le porte non configurate su di esso, quindi questi servizi, e le loro porte, saranno accessibili solo dall’interno della rete locale.
Ci sono due modi per permetterne e reindirizzarne l’accesso e vanno usati in base alle esigenze.
Il primo è il NAT o Port Forwarding dove verrà aperta verso l’esterno una porta per ogni servizio, più porte si aprono e più i rischi di sicurezza aumentano.
Qui entra in gioco la seconda opzione, più idonea per i servizi che non necessitano di divenire pubblici, la VPN (Virtual Private Network).
Una VPN permette, aprendo una sola porta, l’accesso totale alla rete di destinazione trovando cosi disponibili tutte le porte e servizi del Raspberry ed eventuali altri dispositivi in rete, esattamente come se ci si trovasse fisicamente all’interno della rete locale, il tutto in modo cifrato e sicuro.
Un software opensource molto usato per creare una VPN è OpenVpn, dispone di client per Linux, Mac, Windows e Smartphone; il problema è che non è user-friendly, ma per ovviare a questo problema è stato creato il tool PiVpn che grazie ad un semplice comando ti permette di installare il server OpenVpn e di creare un semplice file da importare nei client da connettere.
Le caratteristiche principali
- Semplicità assoluta: si installa con un comando e la configurazione è molto semplice anche grazie al comando da shell “pivpn [parametro]“. Inoltre crea già il file di configurazione da importare nei client.
- Flessibilità: si possono modificare le porte VPN, i certificati, la robustezza delle chiavi crittografiche, usare un nome DNS nel caso avessimo un ip pubblico dinamico e molto altro;
- Gestione: tramite il comando
pivpn <command> [option]
Informazioni tecniche e caratteristiche Pi Vpn
- Supporta OpenVPN 2.4
- Supporto per WireGuard in fase di sviluppo (attualmente sul ramo di prova)
- Chiavi di crittografia basata su curve ellittiche fino a 512 bit
- Supporto Bitwardn
- Supporto portachiavi iOS
- Supporta più provider DNS
- Supporta server DNS personalizzati
- Domini di ricerca personalizzati
- Funziona con PiHole
- Non ha bisogno di avere un Raspberry Pi, funziona su qualsiasi server Debian VPS
Opzioni Pi Vpn
- -a, add [nopass] Crea un utente per il client vpn, opzione nopass
- -c, clients Elenca tutti i client connessi al server vpn
- -d, debug Avvia il debug in caso di problemi
- -l, list Elenca tutti i certificati validi e revocati
- -r, revoke Revoca l’accesso ad un profilo client
- -u, uninstall Rimuove PiVpn
Nelle mie guide parto sempre con Raspbian perché è conosciuto e la maggior parte dei tutorial in rete lo usano come riferimento.
Prerequisiti
- RaspberryPi connesso in rete o un pc / server debian
- Ip pubblico statico o un nome DDNS (No-Ip o consiglio DuckDns.org)
- Accesso al Router/Firewall della rete dove è connesso il RaspberryPi
- Installazione Pi Vpn
PiVpn è pensato per rendere semplice, nel modo più assoluto, una cosa normalmente molto complicata, e per installare il nostro Server OpenVpn su RaspberryPi basta questo semplice comando
sudo curl -L https://install.pivpn.io | bash
Lo script esegue apt-get update e poi scarica ed avvia l’installazione, che procederà con delle semplici schermate di selezione.
La prima cosa da scegliere sarà il nome dell’utente locale da utilizzare, verranno tutti proposti automaticamente in una comoda lista.
Successivamente consiglio di attivare [yes] alla proposta di attivare gli aggiornamenti di sicurezza automatici.
Poi la scelta tra il tipo di protocollo UDP o TCP, lasciamo UDP senza troppi problemi.
Ora la parte da modificare sarà la porta di ascolto, per scongiurare qualche attacco hacker, consiglio di cambiarla e restare magari tra la 10000 e la 20000, ovviamente la scelta spetta a voi.
Nella scelta del livello di criptazione i creatori di PiVpn consigliano 2048, considerato attualmente un livello già molto sicuro.
Una volta avviata la procedura di creazione del certificato, vai pure a prendere un caffè, ci sarà molto da aspettare…
Dopo il caffè, si configurano l’ip pubblico, se hai un ip Pubblico statico seleziona la prima scelta, se invece è dinamico, puoi creare cinque nomi DDNS gratuiti con DuckDns.org, scegline uno e scrivilo nella voce dns entry .
Per il DNS Provider, lasciamo tranquillamente Google, va più che bene.
I Client Open Vpn
Una volta completata l’installazione e riavviato il RaspberryPi eseguiamo il comando
sudo pivpn -a
per creare una configurazione da importare nei client
La cosa bella è che verrà creato il file di configurazione /home/pi/ovpns/nomeScelto.ovpn
e sarà sufficiente importarlo dal tuo client OpenVpn preferito per connetterti alla rete.
Infine è fondamentale creare nel Router / firewall il NAT / Port Forwarding dalla porta scelta prima verso l’ip Fisso INTERNO del RaspberryPi.
Se il RaspberryPi non ha un ip fisso all’ interno della LAN, ti verrà chiesto di impostarlo durante l’installazione di Pivpn.
Sito ufficiale di PiVpn
La repository su GitHub