PI Guide/ Accesso esterno alla LAN

Per accedere alla rete locale da remoto, in tutta sicurezza, creiamo una VPN su una macchina GNU/Linux utilizzando il software OpenVPN

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.