π Cos'Γ¨ una VPN?
Una VPN (Virtual Private Network) Γ¨ un tunnel cifrato che permette di connettere in modo sicuro dispositivi remoti alla rete aziendale attraverso Internet. Immagina di poter "teletrasportare" il tuo laptop dall'hotel, dal bar o da casa direttamente dentro l'ufficio - questo Γ¨ ciΓ² che fa una VPN!
π― Scenari d'Uso VPN
Smart Working
Dipendenti da casa accedono a file server, stampanti, applicazioni interne come se fossero in ufficio
Trasferte
Manager in viaggio accede a email aziendali, CRM, ERP da hotel/aeroporto in sicurezza
Filiali Remote
Collegamento permanente site-to-site tra sede centrale e filiali/magazzini
WiFi Pubblico
Protezione navigazione su reti non fidate (bar, aeroporti, hotel) - tutto il traffico cifrato
π Tipi di VPN
| Tipo | Scenario | Esempio |
|---|---|---|
| Road Warrior (Remote Access) |
Singoli utenti si connettono alla rete da remoto | Dipendente da casa β Rete aziendale |
| Site-to-Site | Due reti intere collegate permanentemente | Sede Milano β Filiale Roma (sempre connesse) |
| Hub-and-Spoke | PiΓΉ sedi remote connesse a sede centrale | HQ β Filiale1, Filiale2, Filiale3 |
In questa guida ci concentreremo sulla VPN Road Warrior con OpenVPN - il caso d'uso piΓΉ comune e versatile.
π OpenVPN: Il Protocollo Scelto
pfSense supporta tre protocolli VPN principali: OpenVPN, IPsec e WireGuard. Ecco perchΓ© scegliamo OpenVPN per questa guida:
π‘ Vantaggi OpenVPN
- β Cross-platform: Client per Windows, macOS, Linux, iOS, Android, ChromeOS
- β Firewall-friendly: Usa TCP 443 (HTTPS) - passa attraverso quasi tutti i firewall
- β Sicurezza enterprise: TLS/SSL con certificati X.509, cifratura AES-256
- β FlessibilitΓ : Configurabile per TCP o UDP, multiple porte
- β Autenticazione avanzata: Certificati + username/password + OTP
- β Wizard integrato: pfSense ha wizard che semplifica enormemente setup
- β Client Export: pfSense genera automaticamente configurazioni client
β οΈ Quando Considerare Alternative
- IPsec: Se serve interoperabilitΓ con firewall Cisco/Fortinet, o client iOS/Android nativi
- WireGuard: Se prestazioni massime sono prioritΓ (piΓΉ veloce di OpenVPN)
Per la maggior parte degli utenti, OpenVPN Γ¨ la scelta migliore!
π Prerequisiti e Preparazione
Prima di configurare OpenVPN, assicurati di avere:
- β IP pubblico statico o DDNS: I client devono connettersi a un indirizzo raggiungibile
- β Porta WAN disponibile: Default UDP 1194 (o TCP 443)
- β Certificati configurati: CA e certificati server (wizard li crea automaticamente)
- β Subnet VPN separata: Es: 10.0.8.0/24 (non sovrapposta a LAN/DMZ)
Esempio Architettura: LAN aziendale: 192.168.1.0/24 DMZ: 10.0.10.0/24 VPN Road Warrior: 10.0.8.0/24 β Pool per client VPN Quando client VPN si connette: - Riceve IP da 10.0.8.0/24 (es: 10.0.8.10) - PuΓ² accedere LAN (192.168.1.x) - PuΓ² accedere DMZ (10.0.10.x) se permesso da firewall - Tutto il traffico cifrato attraverso tunnel
π§ Configurazione OpenVPN con Wizard
pfSense include un wizard fantastico che automatizza il 90% del lavoro. Seguiamolo passo-passo!
π₯ Video Tutorial: OpenVPN Road Warrior
Guarda questo laboratorio pratico completo sulla configurazione VPN.
βΆοΈ Guarda: VPN Lab pfSenseπ§ Step 1: Avviare il Wizard
-
Accedi al wizard OpenVPN
Vai in VPN β OpenVPN β Wizards -
Seleziona tipo configurazione
Type of Server: Local User Access
(Autentica utenti con account locali pfSense)
Alternative:- Local User Access: Utenti locali pfSense (semplice, consigliato)
- LDAP: Autenticazione Active Directory/LDAP
- RADIUS: Server RADIUS esterno
π Step 2: Certificate Authority (CA)
La CA Γ¨ l'autoritΓ che firma i certificati. Serve per verificare l'identitΓ del server VPN e dei client.
Configurazione Certificate Authority per firma certificati OpenVPN
-
Crea nuova CA
Select a Certificate Authority (CA): Add new CA
Clicca Add new CADescriptive name: VPN-CA-Azienda (Nome descrittivo - apparirΓ nella lista CA) Key length: 2048 bit (2048 = buon compromesso sicurezza/performance) (4096 = piΓΉ sicuro ma piΓΉ lento - overkill per maggior parte casi) Lifetime: 3650 (giorni = 10 anni) (La CA puΓ² vivere a lungo - certificati firmati hanno vita piΓΉ breve) Country Code: IT State or Province: Lombardia City: Milano Organization: Azienda SRL Email Address: admin@azienda.com Common Name: VPN-CA-Azienda (interno) (Nome identificativo CA - usa qualcosa di riconoscibile)
π₯οΈ Step 3: Certificato Server
-
Crea certificato server
Select a Server Certificate: Add new Certificate
Clicca Add new CertificateDescriptive name: OpenVPN-Server-Cert Key length: 2048 bit Lifetime: 825 (giorni = ~2 anni) (Certificati server vanno rinnovati piΓΉ frequentemente della CA) Country, State, City, Organization: (Come sopra - puoi copiare) Common Name: vpn.azienda.com (IMPORTANTE: Usa il nome DNS/IP pubblico del server!) Alternative: IP pubblico (es: 203.0.113.50)
π Step 4: Configurazione Server OpenVPN
-
Configura parametri server
Interface: WAN (Interfaccia dove OpenVPN ascolta connessioni) Protocol: UDP on IPv4 only (UDP = piΓΉ veloce, consigliato per VPN) Alternative: TCP se UDP bloccato da firewall ISP Local Port: 1194 (Porta default OpenVPN - puΓ² essere cambiata) Alternative popolare: 443 (HTTPS) - bypassa quasi tutti firewall Description: OpenVPN Road Warrior Server
-
Configura crittografia
TLS Configuration: β Use a TLS Key (consigliato - extra sicurezza) Automatically generate a TLS Key: β DH Parameter Length: 2048 bit (Diffie-Hellman - scambio chiavi sicuro) Encryption Algorithm: AES-256-GCM (Cifratura top - veloce con accelerazione hardware moderna) Alternative: - AES-128-GCM (piΓΉ veloce, comunque sicurissimo) - AES-256-CBC (legacy, piΓΉ lento) Auth digest algorithm: SHA256 (Algoritmo hash per autenticazione pacchetti)
-
Configura tunnel network
Tunnel Network: 10.0.8.0/24 (Subnet usata per assegnare IP ai client VPN) IMPORTANTE: - NON deve sovrapporsi con LAN (192.168.1.0/24) - NON deve sovrapporsi con DMZ (10.0.10.0/24) - Deve essere /24 o piΓΉ piccolo - Fornisce 254 IP client (10.0.8.1 - 10.0.8.254) Redirect Gateway: β Lascia DESELEZIONATO (Se selezionato: tutto traffico client va in VPN - anche Internet) (Deselezionato: solo traffico LAN aziendale va in VPN - Internet diretto) Consiglio: Lascia deselezionato per performance migliori Seleziona solo se vuoi forzare tutto traffico attraverso VPN
-
Configura local network
Local Network: 192.168.1.0/24 (Rete LAN che i client VPN possono raggiungere) Puoi aggiungere piΓΉ reti separate da virgola: 192.168.1.0/24,10.0.10.0/24 (LAN + DMZ accessibili)
-
Concurrent connections
Concurrent connections: 10 (Numero massimo connessioni simultanee) Dimensiona in base a necessitΓ : - SOHO: 5-10 connessioni - PMI: 20-50 connessioni - Enterprise: 100+ (considera server dedicato)
-
Compression
Compression: Adaptive LZO Compression (Comprime dati - riduce traffico ma aumenta CPU) Raccomandazione moderna: Disable - CPU moderna veloce, banda Internet veloce - Compressione introduce latenza - Alcuni considerano compressione rischio sicurezza (CRIME attack) Abilita solo se linea Internet lenta (< 10 Mbps)
-
Type-of-Service
β Type-of-Service: Lascia DESELEZIONATO (A meno che non hai QoS specifico configurato)
-
Inter-client communication
β Inter-client communication: Seleziona SOLO se vuoi che client VPN possano comunicare tra loro (es: client A puΓ² pingare client B) Default: DESELEZIONATO (piΓΉ sicuro)
-
Duplicate Connections
β Duplicate Connections: SELEZIONA Permette stesso utente connesso da piΓΉ dispositivi simultaneamente (es: laptop + smartphone stesso user) Deseleziona solo se vuoi forzare 1 connessione per utente
-
DNS Settings
β DNS Default Domain: β β Provide a default domain name to clients DNS Default Domain: azienda.local (Client VPN useranno questo suffisso DNS) DNS Server 1: 192.168.1.1 (pfSense) DNS Server 2: (lascia vuoto o backup) Effetto: Client VPN usano DNS interno aziendale Possono risolvere server.azienda.local, stampante.azienda.local, etc.
-
NTP Server
NTP Server 1: 192.168.1.1 (pfSense) (Opzionale - sincronizza orario client)
-
NetBIOS Options
β NetBIOS enable (solo se hai share Windows) NetBIOS node type: none β WINS server enable WINS server 1: 192.168.1.10 (se hai Windows server con WINS) Utile per accesso share Windows: \\server\share
-
Clicca Next
Il wizard procede alla configurazione firewall
π₯ Step 5: Regole Firewall Automatiche
-
Firewall Rule Configuration
Clicca Nextβ Firewall Rule: SELEZIONA Crea automaticamente regola WAN per permettere connessioni VPN β OpenVPN rule: SELEZIONA Crea automaticamente regola su interfaccia OpenVPN per permettere client VPN accedere alla LAN
-
Conferma completamento
Vedrai messaggio "OpenVPN Remote Access Server setup complete"
Clicca Finish
π Congratulazioni!
Hai appena configurato un server OpenVPN enterprise-grade! Il wizard ha creato automaticamente:
- β Certificate Authority (CA)
- β Certificato Server
- β Server OpenVPN configurato e avviato
- β Regola firewall WAN (porta 1194 UDP aperta)
- β Regola firewall interfaccia OpenVPN (client β LAN permesso)
π₯ Creazione Utenti e Certificati Client
Ora che il server Γ¨ pronto, creiamo utenti che possono connettersi.
π Step 1: Creare Utente
-
Accedi a User Manager
Vai in System β User Manager β Users -
Aggiungi utente
Clicca + Add -
Configura utente
Username: mario.rossi (Solo lettere minuscole, numeri, punto, underscore) Password: ββββββββββββ (Password FORTE - 12+ caratteri!) β Confirm Password: ββββββββββββ Full name: Mario Rossi Email: mario.rossi@azienda.com Group membership: (opzionale) Puoi aggiungere a gruppo per gestione permessi
-
Salva utente
Scroll down β Save
π Step 2: Creare Certificato Client
-
Modifica utente appena creato
Nella lista utenti, clicca βοΈ accanto a "mario.rossi" -
Scroll a User Certificates
Trova sezione User Certificates -
Aggiungi certificato
Clicca + Add (sotto User Certificates) -
Configura certificato client
Method: Create an internal Certificate Descriptive name: mario.rossi-laptop (Nome descrittivo - utile se stesso user ha piΓΉ dispositivi) Certificate authority: VPN-CA-Azienda (Seleziona la CA creata prima) Key length: 2048 bit Lifetime: 365 (giorni = 1 anno) (Certificati client vanno rinnovati annualmente) Common Name: mario.rossi (Corrisponde allo username)
-
Salva certificato
Clicca Save Certificate
Poi Save (per salvare modifiche utente)
π‘ Certificati Multipli per Utente
Un utente puΓ² avere piΓΉ certificati (uno per dispositivo):
- mario.rossi-laptop
- mario.rossi-smartphone
- mario.rossi-tablet
Vantaggio: Puoi revocare singolo certificato se dispositivo perso/rubato senza bloccare altri device dell'utente!
π¦ Esportazione Configurazione Client
pfSense include il fantastico package OpenVPN Client Export che genera automaticamente file di configurazione per tutti i sistemi operativi!
Interfaccia di configurazione ed export dei profili client OpenVPN
π₯ Installare Client Export Package
-
Accedi a Package Manager
Vai in System β Package Manager β Available Packages -
Cerca e installa
Cerca:openvpn-client-export
Clicca + Install β Confirm
Attendi installazione (30-60 secondi)
π€ Esportare Configurazione Client
-
Accedi a Client Export
Vai in VPN β OpenVPN β Client Export -
Configura opzioni export
Remote Access Server: OpenVPN Road Warrior Server (Seleziona il server creato) Host Name Resolution: β Interface IP Address (se hai IP statico) β Other (se usi DDNS): vpn.azienda.dyndns.org Verify Server CN: Automatic (consigliato) Use Random Local Port: β SELEZIONA (Client usa porta locale random - permette multiple VPN) Certificate Export Options: Password Protect Certificate: (opzionale - extra sicurezza) Se abiliti, certificato cifrato con password
-
Scroll alla lista utenti
Vedrai tutti gli utenti con certificati -
Download configurazione per mario.rossi
Nella riga di mario.rossi, clicca sul link appropriato:Windows: - Windows Installer (x86-amd64) β mario.rossi-laptop-win-install.exe (Include client OpenVPN + configurazione - semplicissimo!) - Archive β mario.rossi-laptop-config.zip (Solo config - se OpenVPN giΓ installato) macOS: - Viscosity Bundle β mario.rossi-laptop-Viscosity.visc (Per app Viscosity - consigliata macOS) - Tunnelblick β mario.rossi-laptop.tblk (Per app Tunnelblick - gratuita) Linux: - Inline Configurations β mario.rossi-laptop-config.ovpn (File .ovpn compatibile con network-manager) iOS: - Inline Configurations β mario.rossi-laptop-ios.ovpn (Import in app OpenVPN Connect) Android: - Inline Configurations β mario.rossi-laptop-android.ovpn (Import in app OpenVPN for Android)
π» Installazione e Connessione Client
πͺ Windows
-
Metodo 1: Installer Automatico (CONSIGLIATO)
- Download:
mario.rossi-laptop-win-install.exe - Esegui installer con privilegi amministratore
- Segui wizard (Next β Next β Install)
- Fine! Icona OpenVPN appare in system tray
- Download:
-
Connessione
- Click destro icona OpenVPN (system tray)
- Seleziona profilo (es: "OpenVPN Road Warrior")
- Click "Connect"
- Inserisci username/password quando richiesto
- β Connesso! Icona diventa verde
-
Verifica connessione
CMD: ipconfig Dovresti vedere adattatore TAP: Adattatore Ethernet TAP-Windows Adapter: IPv4 Address: 10.0.8.10 β IP assegnato dal pool VPN ping 192.168.1.1 Risposta da 192.168.1.1 β pfSense raggiungibile! ping server.azienda.local Risposta da 192.168.1.10 β Server interno raggiungibile!
π macOS
-
Installa Tunnelblick (gratuito)
Download da:https://tunnelblick.net
Installa app -
Importa configurazione
- Doppio click su
mario.rossi-laptop.tblk - Tunnelblick chiede "Install for all users?" β Scegli preferenza
- Inserisci password macOS quando richiesta
- Configurazione importata!
- Doppio click su
-
Connessione
- Click icona Tunnelblick (barra menu)
- Click "Connect OpenVPN Road Warrior"
- Inserisci username/password
- β Connesso!
π± iOS / Android
-
Installa app OpenVPN
iOS: App Store β "OpenVPN Connect"
Android: Play Store β "OpenVPN for Android" -
Trasferisci file .ovpn
Opzioni:- Email a te stesso β download da mobile
- AirDrop (iOS) / Drive (Android)
- Scan QR code (se pfSense configurato)
-
Importa profilo
- Apri file .ovpn con app OpenVPN
- App riconosce profilo β "Add"
- Profilo importato!
-
Connessione
- Apri app OpenVPN
- Toggle connessione ON
- Inserisci username/password
- β VPN attiva - icona VPN in status bar
π Monitoraggio Connessioni VPN
Dashboard stato VPN con lista connessioni attive, utenti, IP assegnati e traffico
ποΈ Visualizzare Client Connessi
-
Status connessioni OpenVPN
Vai in Status β OpenVPN -
Informazioni visualizzate
Per ogni client connesso vedrai:Common Name: mario.rossi (utente) Real Address: 203.0.113.100:54231 (IP pubblico client + porta) Virtual Address: 10.0.8.10 (IP assegnato nel tunnel VPN) Bytes Sent: 125.3 MB Bytes Received: 45.8 MB Connected Since: 2025-01-03 09:15:23 Service: Server: UDP4:1194 Azioni disponibili: π Disconnect: Disconnetti forzatamente client π Kill: Termina connessione immediatamente
πͺ΅ Log OpenVPN
Per vedere dettagli connessioni e troubleshooting:
Status β System Logs β OpenVPN Eventi loggati: - Tentativi connessione - Autenticazione successo/fallimento - Disconnessioni - Errori certificati - Rinegoziazioni chiavi TLS Esempio log connessione riuscita: Jan 3 10:25:12 openvpn[12345]: mario.rossi/203.0.113.100:54321 VERIFY OK Jan 3 10:25:13 openvpn[12345]: mario.rossi/203.0.113.100:54321 peer info: IV_VER=2.5.8 Jan 3 10:25:13 openvpn[12345]: mario.rossi/203.0.113.100:54321 Control Channel: TLSv1.3 Jan 3 10:25:14 openvpn[12345]: mario.rossi/203.0.113.100:54321 Peer Connection Initiated Jan 3 10:25:15 openvpn[12345]: mario.rossi/203.0.113.100:54321 PUSH: Received control message Jan 3 10:25:15 openvpn[12345]: mario.rossi/203.0.113.100:54321 MULTI: Learn: 10.0.8.10
π§ Troubleshooting VPN
β Problema: Client Non Riesce a Connettersi
-
Verifica server OpenVPN attivo
Status β OpenVPN β Server deve essere "up"
Se "down": VPN β OpenVPN β Servers β Edit server β Save -
Verifica regola firewall WAN
Firewall β Rules β WAN
Deve esistere regola: Allow UDP 1194 from any to WAN address -
Test porta aperta
Da Internet, usa tool:canyouseeme.org
Test porta: 1194 UDP
Se chiusa = problema firewall ISP o port forward -
Verifica certificati validi
System β Cert Manager β Certificates
Certificato server e CA non devono essere scaduti -
Check log client
Windows: Click destro icona OpenVPN β View Log Errori comuni: "Connection timeout" = Firewall blocca o IP/porta errati "TLS handshake failed" = Certificati incompatibili "AUTH_FAILED" = Username/password errati "Certificate has expired" = Certificato client scaduto
β Problema: Connesso ma Non Accede LAN
Sintomi: β VPN connessa (icona verde) β Non pingo 192.168.1.1 β Non accedo a server interni Verifica 1: Regola firewall OpenVPN Firewall β Rules β OpenVPN Deve esistere: Pass from OpenVPN net to any (o to LAN net) Verifica 2: Routing su client Windows CMD: route print Deve esserci route: 192.168.1.0/24 β 10.0.8.1 (gateway VPN) Se manca = problema configurazione server VPN β OpenVPN β Servers β Edit β Local Network: 192.168.1.0/24 Verifica 3: Client riceve route Log client deve mostrare: PUSH: Received control message: 'PUSH_REPLY,route 192.168.1.0 255.255.255.0' Se manca = server non pusha route correttamente
β Problema: VPN Lenta
Ottimizzazioni: 1. Cambia cifratura AES-256-GCM β AES-128-GCM (piΓΉ veloce, comunque sicuro) 2. Disabilita compressione Compression: Disable (CPU risparmiata) 3. UDP invece di TCP Protocol: UDP (25-30% piΓΉ veloce) 4. MTU tuning Aggiungi opzione custom: mssfix 1400 (Riduce frammentazione pacchetti) 5. Hardware con AES-NI CPU moderna con accelerazione AES hardware Check: sysctl hw.model (se CPU supporta AES-NI) 6. Bandwidth reale VPN non puΓ² superare banda Internet piΓΉ lenta tra server e client (se client ha 10Mbps, max VPN = 10Mbps)
π Sicurezza Avanzata VPN
π Rotazione Certificati
I certificati vanno rinnovati periodicamente:
- CA: Ogni 10 anni (raramente necessario)
- Server cert: Ogni 2 anni
- Client cert: Ogni 1 anno (consigliato)
π« Revoca Certificato
Se dispositivo compromesso/perso, revoca certificato:
- System β Cert Manager β Certificates
- Trova certificato da revocare (es: mario.rossi-smartphone)
- Click icona ποΈ (Revoke)
- Conferma revoca
- β Certificato revocato - non puΓ² piΓΉ connettersi!
π Two-Factor Authentication (2FA)
Aggiungi OTP per sicurezza extra (username + password + codice temporaneo):
1. System β Package Manager β Install "freeradius3" 2. Configura RADIUS con Google Authenticator 3. VPN β OpenVPN β Servers β Edit 4. Backend for authentication: RADIUS 5. RADIUS Server: localhost Client deve inserire: Username: mario.rossi Password: password_fissa + 123456 (OTP code) Esempio: MyP@ssw0rd123456 (concatenati)
β Best Practices VPN
- β Certificati individuali: Un certificato per dispositivo (non condividere)
- β Password forti: 12+ caratteri per account VPN
- β Rinnovo regolare: Certificati client annuali
- β Revoca tempestiva: Revoca certificati dispositivi persi/rubati
- β Monitoring attivo: Review settimanale connessioni VPN
- β Log retention: Conserva log VPN per audit (30-90 giorni)
- β Subnet separata: Pool VPN isolato da LAN/DMZ
- β Firewall granulare: Limita accesso VPN solo a risorse necessarie
- β 2FA per admin: Considera 2FA per account privilegiati
- β Backup configurazione: Esporta configurazione VPN regolarmente
π― Prossimi Passi
Eccellente! Ora hai configurato una VPN enterprise con OpenVPN, i tuoi utenti possono accedere in sicurezza alla rete aziendale da qualsiasi luogo, e sai monitorare e troubleshootare le connessioni!
Nel prossimo capitolo configureremo il Traffic Shaping per ottimizzare l'utilizzo della banda e garantire che i servizi critici abbiano sempre la prioritΓ .