Hai un firewall basato su Pfsense e vorresti accedere da remoto alla tua rete LAN aziendale in modo sicuro tramite una VPN ? In questa guida scoprirai come farlo configurando su Pfsense una VPN Wireguard Road Warrior.
Requisiti
- Pfsense installato e già configurato per l’accesso ad Internet
- IP Pubblico statico o Dinamico con servizio DDNS (per configurare un DDNS su Pfsense leggi questa guida)
Intasllazione del package Wireguard
Entriamo nel nostro Firewall Pfsense e rechiamoci nel menù Sistema e poi sulla voce Gestore pacchetti
Selezioniamo la voce Pacchetti disponibili ed attendiamo che il sistema ci mostri tutti i pacchetti disponibili per l’installazione.
Una volta che i pacchetti disponibili saranno visualizzati, aiutandoci con il campo di Ricerca, cerchiamo il package Wireguard e procediamo ad installarlo cliccando su +Install
Confermiamo nuovamente di voler installare il pacchetto cliccando su Conferma
Configurazione interfaccia Wireguard
Ora che il pacchetto Wireguard è installato possiamo procedere alla configurazione dell’interfaccia Wireguard.
Andiamo nel menù VPN e clicchiamo su WireGuard
Ci troveremo nella pagina dei tunnel Wireguard e procediamo a creare un nuovo tunnel cliccando sulla voce +Add Tunnel.
Procediamo alla configurazione del tunnel:
- Abilita – Verifichiamo che il tunnel sia abilitato
- Descrizione – Inseriamo una descrizione per questo tunnel
- Listen port – Inseriamo una porta sulla quale sarà di ascolto il tunnel
- Clicchiamo su Generate per generare una coppia di chiavi Pfsense Wireguard
- Interface Addresses – Assegniamo un indirizzo all’interfaccia di Wireguard
- Clicchiamo su Save Tunnel
Salviamo la PublicKey. Ci servirà durante la configurazione del client(peer)
Abilitiamo il servizio Wireguard
Andiamo sulla voce Impostazioni e procediamo con:
- Abilitare il servizio Wireguard
- Deseleziona le voci Hide Secrets e Hide Peers
- Clicchiamo su Salva
- Clicchiamo su Applica le modifiche
Aggiunta Peer
Procediamo ora con l’aggiunta di un peer.
Ogni peer necessita della propria coppia di chiavi pubblica/privata ma pfsense non mette a disposizione uno strumento per la generazione delle chiavi durante la fase di creazione del peer.
Abbiamo 2 modi per generare la coppia di chiavi per il nostro peer:
- tramite il tool presente a questo link
- tramite Pfsense creando un nuovo tunnel e copiandoci la coppia di chiavi che verrà generata
Procediamo con la seconda opzione quindi rechiamoci nuovamente sul menù Tunnel, clicchiamo su +Add Tunnel e generiamo una coppia di chiavi cliccando sul tasto Generate.
Salviamo da qualche parte sia la private key che la public key, ci serviranno più avanti
Torniamo alla creazione del peer cliccando su Peers e poi su +Add Peer e procediamo a configurare i campi sotti:
- Abilita – selezionato
- Tunnel – selezioniamo il tunnel creato precedentemente
- Descrizione – diamo una descrizione al peer
- Dynamic Endpoint – selezionato
- Keep Alive – 25
- Public Key – la chiave pubblica che abbiamo generato e copiato al passaggio precedente
- Pre-shared Key – possiamo generare una chiave pre-condivisa per aumentare il livello di sicurezza. Clicchiamo su Generate e poi copiamoci la chiave generata
- Allowed IPs – Assegniamo un IP al nostro peer ed inseriamo una descrizione. Ed. Laptop
- Clicchiamo su Save peer
- Clicchiamo su Applica le modifiche
Verifichiamo lo stato del tunnel Wireguard su Pfsense
Verifichiamo se il tunnel è up cliccando su Stato
Assegniamo l’interfaccia Wireguard
Andiamo nel menù Interfacce –> Assegnazioni
Ci troveremo nelle porte di rete disponibili una situazione simile con un’interfaccia da assegnare. Nel mio caso viene chiamata tun_wg0
Clicchiamo su +Aggiungi
Una volta aggiunta clicchiamo sul nome dell’interfaccia che nel mio caso si chiama OPT1 e procediamo a configurarla come da esempio sotto.
Abilitiamo l’interfaccia ed assegniamo lo stesso indirizzo IP che abbiamo dichiarato prima nella creazione del Tunnel Wireguard
Rinominiamo anche l’interfaccia OPT1 con un nome che ci permette di identificarla più facilmente
Infine clicchiamo su Salva e poi su Applica le modifiche
Configuriamo le regole Firewall
Regola firewall per accettare le richieste sulla porta WAN
Rechiamoci nel menù Firewall –> Regole
Andiamo sulla nostra interfaccia WAN e clicchiamo sul tasto Aggiungi (quello con la freccia rivolta verso l’alto)
Compiliamo le voci seguenti in questo modo:
- Azione – consenti
- Interfaccia – WAN
- Indirizzo Famiglia – IPV4
- Protocollo – UDP
- Origine – Qualsiasi
- Destinazione – WAN address
- Intervallo porta di destinazione – altro, 55128, altro, 55128
- Descrizione – Accetta traffico Wireguard
Cliccare su Salva e poi su Applica le modifiche
Regola firewall per l’interfaccia Wireguard
Rechiamoci nel menù Firewall –> Regole
Andiamo sulla nostra interfaccia Wireguard clicchiamo sul tasto Aggiungi (quello con la freccia rivolta verso l’alto)
Compiliamo le voci seguenti in questo modo:
- Azione – Consenti
- Interfaccia – WireGuard
- Indirizzo Famiglia – IPV4
- Protocollo – Qualsiasi
- Origine – Qualsiasi
- Destinazione – Qualsiasi
- Descrizione – Permetti tutto il traffico Wireguard
Cliccare su Salva e poi su Applica le modifiche
Configuriamo i client(peer)
Apriamo un editor di testo come Blocco Note e copiamo il contenuto sotto.
Rinominiamo il file con estensione .conf
Attenzione:
- Endpoint – Inserite il vostro DDNS o IP Pubblico statico
- PublicKey – Inserite la chiave pubblica del tunnel che abbiamo creato e salvato all’inizio
[Interface]
PrivateKey = qMZ3XDeyyb5QosFbrZF6mhpBnKl24EBSq75Ao5r7a1o
Address = 172.16.100.10/32
DNS = 1.1.1.1
[Peer]
PublicKey = /SKGD1tnfLzc8nzHYChNdmAA+SLk/GYoO7F2371RIwA=
PresharedKey = lpUior2s21PHiQ6fN3vgEYo+gvGkkm6ckJcX8PERa1A=
AllowedIPs = 0.0.0.0/0
Endpoint = IP_PUBBLICO_O_DDNS:55128
PersistentKeepalive = 25
Client Wireguard VPN su dispositivo Windows
Scaricare il client dal sito ufficiale e procedere con l’installazione.
Una volta installato aprire l’applicazione cliccare sulla freccia di fianco la scritta Aggiungi tunnel e poi cliccare su Importa tunnel da file.
Selezioniamo il file di configurazione creato allo step precedente
Una volta importato il profilo il client apparirà come sotto.
Clicchiamo sul tasto Attiva e verifichiamo che il tunnel venga instaurato verificando che i pacchetti sia TX che RX incrementano
Test raggiungibilità Pfsense Wireguard Road Warrior
Ora testiamo la raggiungibilità da remoto delle risorse presenti nella nostra rete LAN.
Apriamo il prompt di Windows e proviamo a fare un ping verso un host presente nella nostra LAN, in questo caso verso 192.168.158.251.
Split-Tunnel vs. Full-Tunnel VPN
La configurazione che abbiamo appena visto di Wireguard sul clien è di tipo Full-Tunnel in quanto tutto il traffico generato dai peer(client) Wireguard passerà attraverso il nostro Pfsense.
Se volessimo invece una configurazione Split-Tunnel che ci permette di far passare attraverso il tunnel VPN solo il traffico destinato a specifiche network, dobbiamo modificare nel file di configurazione del client la direttiva AllowedIPs e specificare la/le network che saranno raggiungibili tramite il tunnel VPN Wireguard.
Nell’esempio sotto, le network raggiungibili tramite il tunnel sono:
- 192.168.158.0/24
- 172.16.100.0/24
[Interface]
PrivateKey = qMZ3XDeyyb5QosFbrZF6mhpBnKl24EBSq75Ao5r7a1o
Address = 172.16.100.10/32
DNS = 1.1.1.1
[Peer]
PublicKey = /SKGD1tnfLzc8nzHYChNdmAA+SLk/GYoO7F2371RIwA=
PresharedKey = lpUior2s21PHiQ6fN3vgEYo+gvGkkm6ckJcX8PERa1A=
AllowedIPs = 192.168.158.0/24,172.16.100.0/24
Endpoint = IP_PUBBLICO_O_DDNS:55128
PersistentKeepalive = 25