La risorsa Italiana per pfSense

7 marzo 2024

OpenVPN Server su pfSense 2.7


Una delle funzionalità più utilizzate e più apprezzate di pfSense è la possibilità di fare da terminatore per la OpenVPN.

Abbiamo già descritto come creare un Server OpenVPN in diversi articoli precedenti (OpenVPN Server su pfSense 2.3, l'ultimo), ma vogliamo riprendere l'argomento, in quanto col passare del tempo e delle versioni sono cambiati gli algoritmi supportati e anche alcune delle funzionalità offerte dal configuratore.

In questo articolo prendiamo in considerazione la configurazione di un server pfSense come terminatore per una VPN Road Warrior, che permetta agli utenti remoti di collegare il proprio pc, da ovunque si trovino, alla rete aziendale.
Per autenticarsi saranno necessari un certificato SSL + username e password.
Il backend di autenticazione sarà il database locale del firewall stesso.

La configurazione che vedremo in seguito è effettuata su un pfSense 2.7.2

Gli step da effettuare sono i seguenti:
  • Creazione dei certificati (CA - Server - User)
  • Configurazione del server OpenVPN
  • Configurazione dell'interfaccia virtuale
  • Impostazione regole di firewall
  • Export della configurazione del client

Creazione dei certificati

Creazione del certificato della CA

Portarsi nel menù System > Cert Manager > CAs
Cliccare su Add
Compilare in modo preciso i campi sotto ripotati per la creazione del nostro certificato
  • Descriptive Name: Nome del certificato
  • Method: Create an internal Certificate Authority
  • Key length: 4096
  • Digest Algorithm: sha512
  • Lifetime: 3650 days (10 anni)
  • Country Code:
  • State or Province:
  • City:
  • Organization:
  • Email Address:
  • Common Name: internal-ca


Cliccare su Save    

Creazione del certificato Server

Portarsi nel menù System > Cert Manager > Certificates
Cliccare su Add
Compilare in modo preciso i campi sotto ripotati per la creazione del nostro certificato
  • Method: Create an internal Certificate
  • Descriptive Name: Nome del certificato
  • Certificate Authority: la CA creata in precedentza
  • Key length: 4096
  • Digest Algorithm: sha512
  • Lifetime: 3650 days (10 anni)
  • Common Name: nome dns firewall
  • Country Code:
  • State or Province:
  • City:
  • Organization:
  • Email Address:
  • Certificate Type: Server Certificate
Cliccare su Save


Creazione della Certificate Revocation List

A questo punto è buona prassi creare anche  una Certificate Revocation List che tornerà utile nel momento in cui ci sarà da invalidare dei certificati.

Portarsi nel menù System > Cert Manager > Certificate Revocation
Cliccare su Add or Import CRL in corrispondenza del nome del certificato della nostra CA
 
Compilare in modo preciso i campi sotto riportati per la creazione del nostro certificato
  • Certification Authority: la CA creata in precedentza
  • Method: Create an internal Certificate Revocation List
  • Descriptive Name: CRL
  • Lifetime: 730 days
  • Serial: 0
Cliccare su Save


Creazione del certificato User

Portarsi nel menù System > Cert Manager > Certificates
Cliccare su Add
Compilare in modo preciso i campi sotto riportati per la creazione del nostro certificato
  • Method: Create an internal Certificate
  • Descriptive Name: Nome del certificato (per esempio lo username dell'utente)
  • Certificate Authority: la CA creata in precedentza
  • Key length: 4096
  • Digest Algorithm: sha512  
  • Lifetime: 3650 days (10 anni)
  • Common Name: lo username dell'utente
  • Distinguished Name:
  • Country Code:
  • State or Province:
  • City:
  • Organization:
  • Email Address:
  • Certificate Type: User Certificate
Se si utilizzano utenti locali al firewall la creazione del certificato può essere fatta contestualmente alla creazione dell'utente cliccando sulla voce apposita



Configurazione del server OpenVPN

Portarsi nel menù VPN > OpenVPN > Server

Cliccare su Add

Impostare i seguenti campi:
  • Description: il nome descrittivo
  • Server Mode: Remote Access (SSL/TSL + User Auth)
  • Selezioniamo i backend di autenticazione

  • Device Mode: tun
  • Protocol: UDP
  • Interface: WAN (interfaccia su cui viene fatto il bind)
  • Local Port: 1194
  • TLS authentication: YES
  • Automatically generate a shared TLS authentication key: YES
  • Peer Certificate Authority: Selezionare il certificato della CA appena creato
  • Peer Certificate Revocation List: Selezionare  la CRL appena creata
  • Server Certificate: Selezionare il certificato del server appena creato
  • DH Parameters Length: 4096 bits
  • Encryption algorithm: CHACHA20-POLY1305 + AES-256-GCM
  • Auth digest algorithm: SHA256 (256-bit)
  • Hardware Crypto: selezionare una eventuale scheda di accelerazione
  • Certificate Depth: One (Client+Server)
  • Flaggare Strict User-CN Matching
  • Flaggare Enforce key usage
  • Tunnel Network: Inserire una subnet per il tunnel, non usare subnet già in uso.
  • Ipv4 Local network(s): inserire le subnet locali raggiugibili tramite la VPN separandole con virgola
  • Allow Compression: Refuse any non-stub compression
  • Topology: One IP address per client
  • Configurare eventuali impostazioni relative a DNS default domain, server DNS, NTP, NetBIOS secondo le proprie esigenze
Cliccare su Save

Configurazione dell'interfaccia virtuale

Per poter utilizzare il tunnel VPN come gateway nelle roules o per creare rotte statiche, è necessario assegnare al tunnel VPN un interfaccia virtuale.
  • Portarsi nel menù Interfaces > (assign
  • Nella colonna Network port selezionare ovpns1 (REMOTE ACCESS)
  • Cliccare su Add per aggiungere la nuova interfaccia
  • Cliccare sul nome della nuova interfaccia, tipicamente optx
  • Nell'interfaccia effettuare le seguenti modifiche:
    • Enable: Yes
    • Description: OPENVPN_REMOTE



Cliccare su Save

Impostazione regole di firewall

A questo punto non ci resta che configurare il firewall affinchè permetta il traffico verso la wan sulla porta 1194 UDP per ricevere le connessioni dai client OpenVPN e creare le regole sull'interfaccia virtuale per permettere il traffico tra i client e il site della vpn.

Portarsi sul menù Firewall > Rules > WAN
Cliccare su Add
E compilare i seguenti campi:
  • Action: Pass
  • Protocol: UDP
  • Destination Port Range: From OpenVPN to OpenVPN  
Cliccare su Save

Portarsi sul menù Firewall > Rules > OPENVPN_REMOTE
Cliccare su Add
E compilare i seguenti campi:
  • Action: Pass
  • Protocol: Any
  • Source: Any  
  • Destination: Any 
Cliccare su Save (questa regola fa passare tutto il traffico verso le subnet raggiungibili in VPN, restringere le regole secondo necessità).



Export della configurazione del client

Per esportare la configurazione da inserire nel client OpenVPN sul proprio device, installare il pacchetto aggiuntivo openvpn-client-export

Una volta installato posizionarsi su VPN > OpenVPN > Client Export 
Scaricare il file di configurazione cliccando sul tasto Most Clients di fianco al nome dell'utnete di nostro interesse








0 commenti:

Nome

Email *

Messaggio *