VPN¶
Una VPN (Virtual Private Network) consente di instaurare un collegamento sicuro e cifrato fra due o più sistemi utilizzando una rete pubblica come Internet.
Il sistema supporta due tipi di VPN:
roadwarrior: collegamento di un terminale remoto alla rete interna
net2net o tunnel: collegamento di due reti remote
Per impostazione predefinita, il traffico di rete tra le VPN è bloccato dal firewall. Per consentire tale traffico vai all'applicazione: ref: firewall-section e attiva il campo: guilabel: ʻAbilitato` sotto: guilabel:` Impostazioni> Traffico fra OpenVPN roadwarrior, tunnel OpenVPN e tunnel IPSec`.
OpenVPN¶
OpenVPN consente di creare facilmente collegamenti VPN, porta con sé numerosi vantaggi tra cui:
Disponibilità di client per vari sistemi operativi: Windows, Linux, Apple, Android, iOS
Attraversamento NAT multipli, ovvero non è necessario un IP statico dedicato al firewall
Elevata robustezza
Semplicità di configurazione
Roadwarrior¶
Il server OpenVPN in modalità roadwarrior consente il collegamento di client multipli.
I metodi di autenticazione supportati sono:
utente di sistema e password
certificato
Utente di sistema, password e certificato
Utente di sistema, One Time Password (OTP) e certificato
Il server può operare in due modalità: routed o bridged. Si consiglia di scegliere la modalità bridged solo se il tunnel deve trasportare traffico non-IP.
Per consentire ad un client di stabilire una VPN:
Creare un nuovo account: è consigliato creare un account VPN dedicato che utilizzi un certificato. In questo modo non è necessario creare un utente di sistema per garantire l'accesso VPN.
È invece obbligatorio scegliere un account di sistema se si desidera utilizzare l'autenticazione basata su nome utente e password o one time password (2FA).
Scaricare il file contiene la configurazione e i certificati. In alternativa, il file può essere inviato all'utente via mail (disponibile solo nel nuovo Server Manager).
Importare il file all'interno del client ed avviare la VPN.
Nota
Quando si utilizza l'autenticazione basata su OTP, gli utenti dovranno abilitare la 2FA prima di accedere alla VPN. È necessario inoltre assicurarsi che gli utenti non abilitino l'opzione "Salva password" sui loro client, perché una nuova OTP deve essere inserita ogni volta che viene avviata la VPN. Una password salvata all'interno di un client VPN potrebbe essere rilevata come un errore di accesso da Fail2ban.
Accounting¶
Ogni volta che un client si connette al server OpenVPN, l'accesso viene registrato in un database di accounting. Le statistiche di accesso sono disponibili nel nuovo Server Manager. Per ogni utente, le statistiche includono:
nome client
indirizzo IP virtuale
indirizzo IP reale
orario della connessione
orario della disconnessione
byte trasmessi
Notifica e-mail¶
Il server può inviare una notifica e-mail ogni volta che un utente si connette o si disconnette dal server OpenVPN roadwarrior.
Le e-mail di notifica sono solo in inglese. L'indirizzo del mittente può essere configurato da sezione-notifica-e-mail. Questa funzione è disabilitata per impostazione predefinita e può essere abilitata da riga di comando.
Per abilitare l'uso della funzione:
config setprop openvpn@host-to-net NotifyStatus enabled
config setprop openvpn@host-to-net NotifyAddresses user1@nethserver.org,user2@nethserver.org
La prop NotifyAddresses
può contenere un elenco di indirizzi di posta separati da virgole. Le notifiche vengono inviate tramite l'installazione locale di Postfix, quindi lo stato di consegna dei messaggi può essere controllato in /var/log/maillog
.
Esempio di e-mail in caso di connessione utente:
The user test1 established a VPN connection on Fri Mar 4 18:31:49 2022.
Public IP address: 1.2.3.4
Private IP address: 10.2.3.2
Esempio di e-mail in caso di disconnessione utente:
The user test1 was disconnected from VPN server.
Duration: 17 seconds
Sent: 2410 bytes
Received: 4099 bytes
Tunnel (net2net)¶
Quando si crea una connessione OpenVPN net2net, un server ricopre il ruolo di master. Tutti gli altri server sono considerati slave (client).
Un client può essere collegato ad un altro NethServer Enterprise od ad un qualsiasi altro firewall che utilizzi OpenVPN.
Tutti i tunnel utilizzano OpenVPN in modalità routed, ma esistono due tipi di topologie: subnet e p2p (Point to Point)
Topologia: subnet
Questa è la topologia consigliata. Nella topologia subnet, il server accetterà le connessioni e agirà come server DHCP per ogni client connesso.
In questo scenario
il server gestisce l'autenticazione dei client utilizzando certificati TLS
il server può eseguire il push delle rotte locali verso i client remoti
il client si possono autenticare con certificati TLS o tramite nome utente e password
Topologia: P2P
Nella topologia p2p, l'amministratore deve configurare un server per ciascun client.
In questo scenario:
l'unico metodo di autenticazione supportato è la PSK (Pre-Shared Key). Si consiglia di utilizzare un canale sicuro (come SSH o HTTPS) per scambiare la PSK
l'amministratore deve selezionare un IP per entrambi gli end point
le rotte per le reti remote devono essere configurate su ogni end point
Per configurare un tunnel procedere come segue:
Accedere al server del tunnel e aprire la pagina OpenVPN tunnels, spostarsi nella scheda Tunnel servers e cliccare sul bottone Create new
Valorizzare i campi richiesti ponendo attenzione al fatto che:
guilabel:Public IPs and/or public FQDN è una lista di IP pubblici o di nomi host che verranno usati dai client per collegarsi al server attraverso Internet
Local networks è una lista di reti locali che saranno accessibili dai server remoti. Se la topologia è di tipo p2p, la stessa lista sarà utilizzata per valorizzare il campo Remote networks del client
Remote networks è una lista di reti remote che si trovano dietro al server remoto e che saranno accessibili dagli host della rete locale
Dopo aver salvato la configurazione, cliccare sull'azione Download e selezionare Configurazione client
Accedere al client del tunnel, aprire la pagina OpenVPN tunnels, spostarsi sulla scheda Tunnel clients e cliccare sul bottone Upload
Funzionalità avanzate¶
L’interfaccia web consente di configurare funzionalità avanzate quali:
lato client, nel campo Remote hosts possono essere specificati indirizzi multipli per ridondanza; il client OpenVPN tenterà di connettersi a ciascun host rispettando l'ordine di inserimento
WAN priority: se il client ha più WAN (interfacce red), l'opzione consente di selezionare l'ordine in cui le WAN saranno utilizzate per connettersi al server remoto.
Protocollo: è importante rammentare che OpenVPN è progettata per funzionare in modo ottimale in UDP, ma è possibile utilizzare TCP nelle situazioni in cui non è possibile fare ricorso ad UDP
cifratura: l'algoritmo crittografico utilizzato per crittografare tutto il traffico. Se non viene selezionato in modo esplicito, il server e il client cercheranno di negoziare la migliore cifratura disponibile su entrambi i lati
compressione LZO: abilitata di default, può essere disabilitata quando si utilizzano server or client legacy
Modalità legacy¶
I tunnel possono ancora essere creati utilzzando gli account roadwarrior.
I passi da eseguire sul server master sono:
Abilitare il server roadwarrior
Creare un account solo VPN per ciascun slave che dovrà collegarsi
Durante la creazione dell'account ricordarsi di specificare la rete remota configurata dietro allo slave
I passi da eseguire sullo slave sono:
Creare un client dalla pagina Client specificando i dati di collegamento al server master
Copiare e incollare il contenuto dei certificati scaricati dalla pagina di configurazione del master
IPsec¶
Il protocollo IPsec (IP Security) è lo standard 'de facto' nei tunnel VPN, viene utilizzato tipicamente per creare tunnel di tipo net to net ed è supportato da tutti i produttori. È possibile utilizzare questo protocollo per creare tunnel VPN tra un NethServer Enterprise ed un dispositivo di un altro produttore nonché tunnel VPN tra 2 NethServer Enterprise.
Nota
IPSec non è progettato per collegare singoli host ma per la configurazione net2net, questo implica due gateway su entrambe le estremità (almeno un'interfaccia RED e una GREEN).
Tunnel (net2net)¶
IPsec è estremamente affidabile e compatibile con molti dispositivi. Infatti, è una scelta ovvia quando è necessario creare collegamenti net2net tra firewall di diversi produttori.
A differenza della configurazione OpenVPN, in un tunnel IPsec, i firewall sono considerati nodi pari livello.
Se si sta creando un tunnel tra due NethServer Enterprise, dati A e B i firewall:
Configurare il server A e specificare l'indirizzo remoto e la LAN del server B. Se il campo Remote IP è valorizzato con
% any
, il server rimane in attesa della connessione dell'altro endpoint.Configurare il secondo firewall B replicando la configurazione da A all'interno della sezione remota. Il valore speciale
%any
è consentito in un solo lato!
Se un endpoint è dietro un NAT, i valori per Local identifier e Remote identifier devono essere impostati con nomi univoci personalizzati preceduti da @
. I nomi comuni sono le posizioni geografiche dei server, ad esempio il nome di stato o città.