La nostra rete locale deve essere privata, così come ogni dato presente al suo interno. Tuttavia potrebbe essere utile accedervi da remoto per svolgere alcune operazioni. Come fare dunque a garantirci una via di accesso sicura (per esplorare, ad esempio i dati presenti sul NAS o le directory condivise da un client) che tenga lontani i potenziali intrusi? Ci serve una VPN (Virtual Private Network). Tutti i pacchetti da e verso la nostra LAN verranno inoltrati sulla rete Internet facendo uso di vari sistemi di cifratura dei dati e creando una sorta di rete virtuale. L’accesso sarà consentito soltanto a chi è dotato dei certificati che dimostrino la propria identità e, ovviamente, delle chiavi di accesso. In questa guida ci affideremo ad OpenVPN , una soluzione affidabile, efficiente e multipiattaforma . Nel nostro test abbiamo utilizzato una macchina equipaggiata con Fedora e il software EasyRSA per generare i certificati di sicurezza. Prima di addentarci nel tutorial è bene procedere all’apertura della porta 33940 del router in nostro possesso.
Per l’installazione di OpenVPN occorre effettuare una serie di operazioni preliminari da ripetere su ogni macchina (server e client).
Installiamo OpenVPN lanciando alcuni semplici comandi da terminale: sudo dnf install openvpn easy-rsa
, a seguire sudo mkdir /etc/openvpn/rsa
e poi sudo cp -rf /usr/share/easyrsa/3.0.1/* /etc/openvpn/rsa
.
Accediamo alla directory appena creata con
cd /etc/openvpn/rsa
e lanciamo sudo./easyrsa init-pki
e sudo./easyrsa build-ca
. Sul server, digitiamo sudo./easyrsa init-pki
e sudo./easyrsa gen-req nomeserver nopass
.
Il parametro nopass crea chiavi non crittografate, quindi attenzione a chi ne ha accesso e ai permessi del file system. Spostiamoci su ogni client che deve accedere al nostro server VPN e lanciamo i comandi
sudo./easyrsa init-pki
e sudo./easyrsa gen-req nomeclient nopass
.
Spostiamoci sulla macchina CA (il server) ed eseguiamo il comando
sudo./easyrsa import-req /percorso/client.req nomefiledestinazione
. Nel caso in figura il percorso è /etc/openvpn/rsa/pki/reqs/ e la request è client.req .
Siamo quasi pronti per connetterci alla LAN di casa utilizzando la VPN creta: firmiamo le richieste e ultimiamo la configurazione.
Per firmare le richieste: lato server usiamo il comando
./easyrsa sign server nomerichiesta
e confermiamo con yes . Lato client, invece, ./easyrsa sign client nomerichiesta
. Questi comandi generano il file certificato ca.crt .
Per aumentare la sicurezza faremo uso di un file di Diffie-Helman, da generare con un semplice comando
sudo openssl dhparam -out dh2048.pem 2048
. Infine, generiamo una chiave OpenVPN con sudo /usr/sbin/openvpn --genkey --secret ta.key
.
I file ca.crt , ta.key , dh2048.pem devono essere copiati sia sul server che sul client nella cartella /etc/openvpn . I file /pki/issued/server.crt e client.crt , /pki/private/server.key e client.key devono essere copiati rispettivamente sul server e sul client.
Servono infine i file di configurazione per OpenVPN, che possiamo scaricare da questa pagina : copiamoli in /etc/openvpn/ . Sulla macchina client lanciamo
nano client.conf
e alla voce remote inseriamo l’IP del VPN server.
Sulla macchina server lanciamo
nano server.conf
e modifichiamo l’IP della voce route inserendo l’indirizzo della nostra rete locale. Se gli host hanno IP 192.168.2.x dovremo inserire 192.168.2.0 e potremo così accedere alla LAN.
Lanciamo
ln -s /lib/systemd/system/openvpn\@.service /etc/systemd/system/user/openvpn\@server.service
e systemctl -f enable openvpn@server.service
sia su server che su client ( client.service ). Infine, connettiamoci con systemctl start openvpn@server.service
.