Come configurare il server VPN OpenConnect

Avere una rete privata virtuale (VPN) è fondamentale in quest’era tecnologica. Le VPN sono diventate sempre più importanti per uso personale e soprattutto per le aziende e le imprese. E se stai ancora decidendo quale soluzione VPN scegliere, perché non considerare OpenConnect VPN?

OpenConnect VPN è una soluzione VPN gratuita con prestazioni e funzionalità di livello enterprise. E in questo tutorial, imparerai come configurare e connetterti al server OpenConnect VPN (ocserv).

Continua a leggere e tieni lontane le entità maliziose dalla tua rete!

Prerequisiti

Questo tutorial prevede dimostrazioni pratiche. Per seguirla, assicurati di avere quanto segue:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • Un utente amministratore o un utente non-root con privilegi sudo/root.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

Installazione del server OpenConnect VPN

Il server OpenConnect VPN è un server VPN basato su SSL open-source per Linux, disponibile sulla maggior parte delle distribuzioni Linux, come Debian, Ubuntu, RHEL/CentOS e Fedora.

Il server OpenConnect VPN supporta la maggior parte dei client, dai desktop/computer ai dispositivi mobili (Android e iOS). Allo stesso modo, il server OpenConnect VPN supporta diversi metodi di autenticazione, come Radius, OpenID, Kerberos e Smart Card.

Ma prima di poter sfruttare queste funzionalità, devi installare il server OpenConnect VPN, come segue:

1. Accedi al tuo server via SSH e esegui il seguente comando apt update per aggiornare e aggiornare l’indice dei pacchetti. Questo comando garantisce di avere le informazioni sui pacchetti più recenti.

sudo apt update
Updating the package repository

2. Successivamente, esegui il comando apt install seguente per installare il pacchetto ocserv.

sudo apt install ocserv -y

Una volta completata l’installazione, il nuovo servizio di sistema chiamato ocserv sarà attivo e

Installing the OpenConnect VPN Server

3. Ora, esegui i seguenti comandi systemctl per assicurarti che il servizio ocserv sia in esecuzione.

# Verifica che il servizio ocserv sia abilitato
sudo systemctl is-enabled ocserv
# Verifica che il servizio ocserv sia in esecuzione
sudo systemctl status ocserv

Come puoi vedere dall’output, lo stato del servizio ocserv è abilitato e in esecuzione.

Verifying the ocserv service is enabled and running

Generazione di Certificati SSL/TLS

Con il Server VPN OpenConnect installato, il passo successivo è assicurarsi di poter connettersi in modo sicuro al Server VPN OpenConnect. Come? Il primo passo è generare i certificati SSL/TLS tramite Certbot e LetsEncrypt.

Ma prima di generare i certificati, assicurati di avere un indirizzo email per registrarti su LetsEncrypt, e che il nome di dominio punti all’indirizzo IP del server Debian.

Per generare certificati SSL/TLS:

1. Esegui il comando seguente per installare certbot sul tuo server Linux.

sudo apt install certbot -y
Installing Certbot

2. Successivamente, esegui il comando certbot di seguito per generare i certificati SSL/TLS. Assicurati di modificare l’indirizzo email ([email protected]) e il nome di dominio (vpn.atadomain.io) di conseguenza.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. Infine, esegui il seguente comando per verificare che i certificati SSL/TLS generati esistano nella directory del tuo dominio.

ls /etc/letsencrypt/live/vpn.atadomain.io

Se avviene con successo, vedrai le chiavi pubbliche (fullchain.pem) e private (privkey.pem), come mostrato di seguito.

Verifying the SSL/TLS certificates exist

Configurazione del server VPN OpenConnect

Anche con i certificati SSL/TSL a tua disposizione, rimarranno lì a meno che non configuriamo il server VPN OpenConnect. Modificherai la configurazione predefinita del server VPN OpenConnect (/etc/ocserv/ocserv.conf) come segue:

  • Cambia il metodo di autenticazione predefinito.
  • Disabilita UDP sul server VPN OpenConnect.
  • Cambia i certificati SSL/TLS predefiniti.
  • Impostazione del nome di dominio e di una rete interna o indirizzo IP per i client.

Per configurare il server VPN OpenConnect, segui i passaggi seguenti:

1. Prima di tutto, esegui il comando cp di seguito per eseguire il backup della configurazione predefinita del server VPN OpenConnect (ocserv.conf) in ocserv.conf.orig memorizzato nella directory /etc/ocserv.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. Successivamente, apri la configurazione del server VPN OpenConnect (/etc/ocserv/ocserv.conf) utilizzando il tuo editor preferito.

3. Cambia il valore del parametro auth in plain[passwd=/etc/ocserv/ocpasswd], come mostrato di seguito. Ciò sostituirà l’autenticazione predefinita tramite file di password con i moduli di autenticazione plug-in (PAM).

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. Ora, metti il # davanti al parametro udp-port per disabilitare le connessioni UDP predefinite.

Utilizzerai OpenConnect VPN solo con il protocollo TCP, il quale può aumentare la velocità tramite parametri del kernel.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. Sostituisci il percorso del file del certificato nel parametro server-cert con la chiave pubblica e il parametro server-key con la chiave privata.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. Cambia il valore del parametro try-mtu-discovery a true per abilitare la scoperta dell’MTU. Farlo aumenta la velocità e le prestazioni del server VPN OpenConnect.

try-mtu-discovery = true
Enabling MTU discovery

7. Successivamente, inserisci il nome di dominio del server VPN OpenConnect nel parametro default-domain e cambia l’indirizzo IP interno predefinito nel parametro ipv4-network.

In questo esempio, i client VPN utilizzeranno la rete interna 10.11.0.0/24.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. Commenta i parametri di default della route aggiungendo un carattere # all’inizio di ogni riga per disabilitare il gateway di default della route predefinita. Una volta finito, salva il file ed esci dall’editor.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. Ora, esegui i seguenti comandi per riavviare il servizio ocserv, applicare le modifiche e elencare tutte le porte aperte (ss) nel tuo sistema.

# Riavvia il servizio ocserv e applica le modifiche
sudo systemctl restart ocserv
# Elenca tutte le porte aperte
ss -tulpn | grep ocserv

Se il server VPN OpenConnect è in esecuzione, vedrai la porta 443 nello stato LISTEN e utilizzato dal servizio ocserv, come mostrato di seguito.

Checking the ocserv port

Aggiunta di utenti al server VPN OpenConnect

Con il server VPN OpenConnect configurato, hai bisogno di un modo per connetterti. Come? Creando e aggiungendo un utente VPN al server VPN OpenConnect.

Per aggiungere un utente al server OpenConnect VPN, creerai un utente VPN e genererai un file password tramite l’utilità ocpasswd nel seguente modo:

Esegui il comando ocpasswd qui sotto per creare un nuovo utente. Quando richiesto, inserisci una nuova password per l’utente e ripetila. La scelta del nome utente per questo tutorial è atauser, ma puoi fornirne uno personalizzato.

Una volta creato l’utente, viene creato anche il file password (/etc/ocserv/ocpasswd).

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

Ora, esegui il seguente comando cat per controllare i dettagli del file password (/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

Aggiunta delle regole del firewall UFW per aprire porte cruciali

Su un sistema Debian, il firewall predefinito è IPTables, che richiede una comprensione approfondita delle reti per essere configurato. Perché non semplificare il processo? In questo tutorial, installerai e configurerai UFW come firewall predefinito.

1. Esegui il seguente comando per installare UFW accettando automaticamente tutte le richieste (-y)

sudo apt install ufw -y
Installing UFW

2. Una volta installato UFW, esegui i seguenti comandi ufw per aprire le porte cruciali affinché il server OpenConnect VPN funzioni correttamente.

# Aggiungi il servizio OpenSSH che gira sulla porta 22.
sudo ufw allow OpenSSH
# Aggiungi la porta 80 per rinnovare i certificati LetsEncrypt, 
# e la porta 443 da utilizzare dal server VPN OpenConnect.
sudo ufw allow 80,443/tcp
# Avvia e abilita UFW.
sudo ufw enable

Quando richiesto, inserisci Y e premi Invio per procedere con l’operazione, come mostrato di seguito.

Adding firewall rules to open ports

3. Infine, esegui il seguente comando per verificare lo stato di UFW e assicurarti che UFW sia in esecuzione.

sudo ufw status

Il risultato qui sotto mostra lo stato attivo di UFW e tutte le regole del firewall aggiunte.

Checking the UFW status and listing all firewall rules

Attivazione del Port Forwarding

Con un server VPN in esecuzione, devi indirizzare il traffico dal mondo esterno al tuo server abilitando il port forwarding. Consentirai il port forwarding sul tuo server Debian tramite parametri del kernel.

Per abilitare il port forwarding, segui questi passaggi:

Esegui il seguente comando, che non produce output nel terminale, ma crea un nuovo file chiamato /etc/sysctl.d/60-ocserv.conf. Questo file contiene parametri del kernel per abilitare il port forwarding nel tuo sistema.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Ora, esegui il comando sysctl qui sotto per applicare i nuovi parametri del kernel e abilitare il port forwarding.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

Configurazione NAT con UFW

Abilitare il port forwarding è solo uno dei primi passi da compiere. Questa volta, devi garantire che i client VPN possano connettersi a Internet o a reti specifiche tramite il server VPN OpenConnect. Come? Configurando il NAT tramite UFW.

Per configurare NAT con UFW per il server VPN OpenConnect:

1. Esegui il seguente comando per controllare l’elenco delle interfacce sul tuo sistema.

ip a

In questo esempio, l’interfaccia eth1 sarà il gateway NAT per i client VPN.

Checking available interfaces

2. Successivamente, apri la configurazione UFW (/etc/ufw/before.rules) utilizzando il tuo editor preferito e aggiungi le seguenti righe prima dell’opzione *filter. Queste configurazioni applicheranno NAT agli utenti VPN (specificando l’interfaccia in uscita) o alla rete interna all’interfaccia eth1.

Assicurati di modificare il subnet (10.11.0.0/24) con le reti dei tuoi client VPN e l’interfaccia (eth1) con l’interfaccia di rete.

# NAT per il server VPN OpenConnect
# con rete client 10.11.0.0/24
# all'interfaccia eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. Aggiungi le seguenti righe sotto la sezione ok icmp code for FORWARD delle opzioni ufw-before-forward, salva il file ed esci dall’editor.

Queste configurazioni abilitano l’inoltro (sorgente e destinazione) della rete client VPN.

# permetti l'inoltro della rete client VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. Una volta salvato, esegui il seguente comando per ricaricare le regole UFW e riavviare il servizio UFW. In questo modo assicuri che la configurazione NAT venga applicata al sistema.

sudo ufw reload
sudo systemctl restart ufw

5. Infine, esegui il seguente comando iptables per controllare lo stato NAT su UFW poiché il backend di UFW è IPTables.

sudo iptables -t nat -L POSTROUTING

Quando avrai successo, riceverai un output simile a quello sotto riportato.

Collegamento al server VPN OpenConnect tramite OpenConnect-GUI

Seguendo le istruzioni, dovresti ora avere un server OpenConnect VPN completamente funzionante. Ma dopo tutto il lavoro svolto, è arrivato il momento della verità.

Il server OpenConnect VPN potrebbe essere in esecuzione, ma c’è solo un modo migliore per verificarlo: connettersi al server OpenConnect VPN.

Per connettersi al server OpenConnect VPN, è necessario installare l’applicazione OpenConnect-GUI:

1. Apri il tuo browser web preferito e visita la pagina GitHub di OpenConnect-GUI.

2. Successivamente, scarica e installa l’applicazione OpenConnect VPN per Windows.

Downloading the OpenConnect VPN application for Windows

3. Apri il client VPN OpenConnect-GUI e fai clic sul menu FileProfiliNuovo profilo (avanzato) (o premi Ctrl+Shift+N). Comparirà una piccola finestra in cui è possibile compilare i dettagli del nuovo profilo (passaggio quattro).

Creating a new VPN profile

4. Ora, compila le informazioni del profilo VPN con quanto segue:

  • Nome – Fornisci un nome di connessione (ad esempio, testvpn).
  • Gateway – Specifica il nome di dominio del tuo server OpenConnect VPN (ad esempio, https://vpn.atadomain.io).
  • Username – L’utente aggiunto (atauser) al server OpenConnect VPN.

Una volta compilato, fai clic su Salva per confermare le informazioni e creare il profilo VPN.

Configuring the new VPN profile

5. Successivamente, imposta il profilo VPN appena creato (testvpn) come Server e clicca su Connetti per stabilire una connessione al server OpenConnect VPN.

Connecting to the OpenConnect VPN Server

6. Quando richiesto, inserisci la Password del tuo utente VPN e clicca su OK.

Authenticating the connection to the OpenConnect VPN Server

7. Una volta connesso, il colore del lucchetto cambierà in verde, come mostrato di seguito.

Confirming successful connection to the OpenConnect VPN Server

8. Infine, clicca sulla scheda Informazioni VPN per ottenere uno stato dettagliato della connessione. Dovresti vedere l’indirizzo IP interno ottenuto dal server VPN, il server DNS e la versione TLS utilizzata.

Checking the VPN connection details

Conclusione

In questa guida, hai imparato a configurare il server VPN OpenConnect. Allo stesso tempo, hai imparato ad utilizzare certificati SSL/TLS e ad aggiungere regole del firewall per stabilire una connessione sicura con il server VPN OpenConnect.

Con questa nuova conoscenza, perché non integrare il server VPN OpenConnect con molteplici back-end di autenticazione, come Radius e OpenID? O aggiungere uno strato di sicurezza per l’autenticazione del cliente tramite autenticazione a due fattori?

Source:
https://adamtheautomator.com/openconnect-vpn/