π₯ Il Firewall di pfSense: Concetti Fondamentali
Il firewall Γ¨ il cuore di pfSense. Γ la componente che decide quali pacchetti possono passare attraverso il sistema e quali devono essere bloccati. Comprendere come funziona il firewall di pfSense Γ¨ essenziale per configurare una rete sicura ed efficiente.
π§ Stateful Packet Filtering
pfSense utilizza un firewall stateful, basato su pf (Packet Filter) di OpenBSD. A differenza dei firewall stateless che esaminano ogni pacchetto in isolamento, un firewall stateful:
- β Traccia lo stato delle connessioni - Ricorda quali connessioni sono state aperte dai client interni
- β Permette automaticamente il traffico di ritorno - Se un client interno fa una richiesta HTTP, la risposta Γ¨ automaticamente permessa
- β Previene spoofing e attacchi - Blocca pacchetti che non appartengono a connessioni valide
- β PiΓΉ efficiente - Richiede meno regole rispetto ai firewall stateless
π‘ Esempio Pratico: Come Funziona lo Stateful Firewall
Scenario: Un PC nella LAN (192.168.1.100) apre una pagina web su google.com
- Client invia richiesta: 192.168.1.100:54321 β 172.217.16.142:443 (HTTPS)
- pfSense crea "state entry": Registra questa connessione nella tabella degli stati
- Regola firewall permette: LAN β any (allow)
- Server Google risponde: 172.217.16.142:443 β 192.168.1.100:54321
- pfSense riconosce lo stato: Questo pacchetto appartiene a una connessione esistente
- Traffico automaticamente permesso: Anche senza regola esplicita per il ritorno!
Risultato: Hai bisogno di UNA sola regola (LAN β Internet) invece di DUE (andata + ritorno)
π Ordine di Valutazione delle Regole
Le regole firewall di pfSense sono valutate dall'alto verso il basso, e si applica la prima regola che corrisponde (first match wins). Questo Γ¨ cruciale da capire!
Pacchetto in arrivo: 192.168.1.50 β 8.8.8.8:53 (DNS) Regole LAN (dall'alto verso il basso): 1. β Block: 192.168.1.50 β Facebook β Non corrisponde (dest diversa) 2. β Allow: 192.168.1.100 β any β Non corrisponde (source diversa) 3. β Allow: 192.168.1.0/24 β any β CORRISPONDE! β Pacchetto PERMESSO 4. Allow: 192.168.1.50 β any β MAI VALUTATA (giΓ match sopra) 5. Block: any β any β MAI VALUTATA Risultato: Pacchetto PERMESSO (regola 3)
β οΈ Attenzione all'Ordine!
Errore comune: Mettere una regola "Allow any β any" in cima disabilita tutte le regole successive di blocco!
Regola d'oro:
- 1οΈβ£ Regole piΓΉ specifiche in ALTO (es: blocca singolo IP)
- 2οΈβ£ Regole intermedie al centro (es: permetti subnet)
- 3οΈβ£ Regole generiche in BASSO (es: blocca tutto il resto)
π― Default Deny
pfSense applica il principio di "default deny": ciΓ² che non Γ¨ esplicitamente permesso Γ¨ automaticamente bloccato. Questo Γ¨ visibile come regola invisibile finale:
# Alla fine di ogni interfaccia, pfSense ha una regola implicita: Block: any β any (non loggata per default) Questo significa che DEVI creare regole esplicite per permettere traffico.
π¨ Creazione Regole Firewall
Creiamo la prima regola passo-passo per capire ogni singolo parametro disponibile.
π Esempio 1: Permettere Accesso a Internet dalla LAN
-
Accedi alle regole LAN
Vai in Firewall β Rules β LAN
Vedrai le regole esistenti (probabilmente giΓ presente una regola "Default allow LAN to any") -
Aggiungi nuova regola
Clicca il pulsante β Add (in alto) o β Add (in basso)
Nota: "Add top" aggiunge in cima, "Add bottom" in fondo -
Configura azione
Action: Pass (permetti il traffico) Altre opzioni: - Block: Blocca e invia reset (TCP) o ICMP unreachable (UDP) - Reject: Come Block ma piΓΉ "educato" (invia reset/unreachable) Consiglio: Usa "Pass" per permettere, "Block" per bloccare silenziosamente
-
Disabilita/Abilita
β Disabled: Deseleziona (vogliamo la regola attiva)
Seleziona solo se vuoi disabilitare temporaneamente la regola senza cancellarla -
Interfaccia
Interface: LAN
Questa regola si applica al traffico che ENTRA nell'interfaccia LAN -
Address Family
Address Family: IPv4 (o IPv6, o IPv4+IPv6)
Per la maggior parte dei casi, IPv4 Γ¨ sufficiente -
Protocollo
Protocol: any (permetti TCP, UDP, ICMP, etc.)
π‘ Opzioni Protocollo
- TCP: Web (HTTP/HTTPS), Email (SMTP/IMAP), SSH, FTP
- UDP: DNS, VoIP, Gaming, Streaming video
- ICMP: Ping, traceroute
- any: Tutti i protocolli (piΓΉ comune)
-
Source (Sorgente)
Source: LAN net (192.168.1.0/24 - tutta la rete LAN) Altre opzioni comuni: - any: Qualsiasi sorgente - Single host or alias: Singolo IP (es: 192.168.1.50) - Network: Subnet specifica (es: 192.168.1.0/28) - LAN address: L'IP di pfSense sulla LAN - (alias name): Gruppo di IP predefinito
-
Destination (Destinazione)
Destination: any (qualsiasi destinazione - Internet incluso) β not: Inverte la logica (es: "not 192.168.1.0/24" = tutto tranne LAN)
-
Destination Port Range
From: any
To: any
Permetti qualsiasi porta (HTTP, HTTPS, DNS, etc.) -
Descrizione
Description: Permetti LAN a Internet
Usa descrizioni chiare - apparirΓ nella lista regole! -
Salva
Clicca Save β La regola appare nella lista
Clicca Apply Changes (banner rosso in alto)
β Regola attiva immediatamente!
Esempio di regole firewall configurate sull'interfaccia WAN
π Esempio 2: Bloccare Facebook dalla LAN
Scenario: Vuoi bloccare l'accesso a Facebook per tutti gli utenti LAN durante l'orario lavorativo.
-
Crea alias per Facebook
(Vedremo gli alias dettagliatamente dopo, per ora segui)
Firewall β Aliases β IP β Add
Name: Facebook_IPs Description: Indirizzi IP Facebook Type: Host(s) IP Address: 31.13.64.0/18 66.220.144.0/20 69.63.176.0/20 157.240.0.0/16 (Lista IP di Facebook - aggiorna periodicamente)
-
Crea regola di blocco
Firewall β Rules β LAN β Add (in CIMA!)
Action: Block Interface: LAN Protocol: any Source: LAN net Destination: Single host or alias β Facebook_IPs Description: Blocca accesso Facebook IMPORTANTE: Questa regola deve essere SOPRA la regola "Allow LAN to any"!
-
Salva e applica
Save β Apply Changes
β Facebook ora bloccato per tutta la LAN!
β οΈ Limitazioni Blocco per IP
Bloccare siti web tramite IP funziona ma ha limiti:
- β Molti siti usano CDN con IP che cambiano frequentemente
- β Gli IP possono essere condivisi con altri servizi
- β HTTPS cifrato nasconde il nome del sito (vedi solo IP)
Soluzione migliore: Usa pfBlockerNG per bloccare per dominio (DNS filtering) - vedremo nel Capitolo 11
π Firewall Aliases
Gli Aliases sono uno strumento potentissimo che semplifica enormemente la gestione delle regole firewall. Un alias Γ¨ un nome simbolico che rappresenta uno o piΓΉ indirizzi IP, reti, porte, o URL.
π― PerchΓ© Usare gli Aliases?
Riutilizzo
Definisci una volta, usa in multiple regole
Manutenzione
Modifica l'alias β aggiorna automaticamente tutte le regole
LeggibilitΓ
"Servers_DMZ" Γ¨ piΓΉ chiaro di "10.0.10.10-10.0.10.20"
Organizzazione
Raggruppa logicamente IP correlati
βοΈ Tipi di Aliases
| Tipo | Contenuto | Esempio Uso |
|---|---|---|
| Host(s) | Singoli IP o subnet | Server aziendali, workstation VIP |
| Network(s) | Reti intere (CIDR) | Filiali remote, subnet |
| Port(s) | Porte TCP/UDP | Servizi custom, range porte |
| URL (IPs) | Lista IP da URL remoto | Blocklist malware (aggiornate automaticamente) |
| URL Table (IPs) | Grande lista da URL | Geoblocking, threat intelligence |
π Creazione Alias: Esempi Pratici
Interfaccia di creazione alias con campi per nome, tipo e indirizzi IP
Esempio 1: Alias Host - Server Aziendali
-
Apri gestione Aliases
Vai in Firewall β Aliases β IP -
Aggiungi nuovo alias
Clicca + Add -
Configura alias
Name: Servers_Critical (Solo lettere, numeri, underscore - NO spazi!) Description: Server critici aziendali Type: Host(s) Host(s): IP Address 1: 192.168.1.10 | Description: Mail Server IP Address 2: 192.168.1.11 | Description: File Server IP Address 3: 192.168.1.12 | Description: Database Server IP Address 4: 10.0.10.5 | Description: Web Server DMZ (Clicca "Add Host" per aggiungere piΓΉ righe)
-
Salva
Save β Apply Changes
Elenco completo degli aliases IP configurati nel firewall
Esempio 2: Alias Port - Servizi Custom
Vai in Firewall β Aliases β Ports:
Name: VoIP_Ports Description: Porte per telefonia VoIP Type: Port(s) Ports: 5060 | SIP signaling 5061 | SIP TLS 10000:20000 | RTP media (range) Uso: Ora puoi usare "VoIP_Ports" nelle regole invece di scrivere tutte le porte ogni volta!
Esempio 3: Alias URL - Blocklist Automatiche
Potentissimo! pfSense scarica automaticamente liste IP da URL e le aggiorna periodicamente.
Name: Malware_IPs Description: IP malevoli da Spamhaus Type: URL (IPs) URL: https://www.spamhaus.org/drop/drop.txt Update Frequency: 1 day Cosa succede: - pfSense scarica la lista ogni giorno - La usa automaticamente nelle regole che referenziano "Malware_IPs" - Lista sempre aggiornata senza intervento manuale!
π Uso degli Aliases nelle Regole
Una volta creato un alias, lo usi nelle regole selezionandolo dal menu:
Firewall β Rules β LAN β Add Source: Single host or alias β (seleziona) Servers_Critical Destination: any Port: VoIP_Ports Descrizione: Permetti server critici a usare VoIP Vantaggio: Se domani aggiungi un server, basta modificare l'alias "Servers_Critical" e la regola si aggiorna automaticamente!
π NAT (Network Address Translation)
Il NAT Γ¨ la funzionalitΓ che permette a piΓΉ dispositivi di una rete privata (LAN) di condividere un singolo indirizzo IP pubblico (WAN). pfSense gestisce tre tipi principali di NAT.
πΉ 1. Outbound NAT (NAT in Uscita)
Traduce gli IP privati della LAN nell'IP pubblico della WAN quando i client accedono a Internet.
Client LAN: 192.168.1.50 β Internet (google.com)
PRIMA del NAT:
Source: 192.168.1.50:54321 β Dest: 172.217.16.142:443
DOPO il NAT (fatto da pfSense WAN):
Source: 203.0.113.5:12345 β Dest: 172.217.16.142:443
ββ IP pubblico WAN ββ Porta random assegnata
Google risponde a 203.0.113.5:12345
pfSense riconosce la connessione e rimanda a 192.168.1.50:54321
Configurazione: Firewall β NAT β Outbound
Mode: βͺ Automatic outbound NAT (default) - pfSense gestisce tutto automaticamente - Consigliato per 95% degli utenti βͺ Hybrid Outbound NAT - Automatic + regole manuali aggiuntive - Utile per eccezioni specifiche βͺ Manual Outbound NAT - Controllo totale, tutte regole manuali - Solo per scenari molto avanzati
πΉ 2. Port Forwarding (NAT in Entrata)
Permette di rendere accessibili da Internet servizi ospitati nella LAN/DMZ.
Scenario Tipico: Hai un server web nella DMZ (10.0.10.10) e vuoi renderlo raggiungibile da Internet sulla porta 443.
Creazione regola NAT/Port Forward per esporre servizio interno
-
Accedi a Port Forward
Vai in Firewall β NAT β Port Forward -
Aggiungi regola
Clicca β Add -
Configura Port Forward
Interface: WAN Protocol: TCP Destination: WAN address (l'IP pubblico della WAN) Destination port range: From: HTTPS (443) To: HTTPS (443) Redirect target IP: 10.0.10.10 (IP del server interno) Redirect target port: HTTPS (443) (Puoi cambiare porta: es. WAN:443 β LAN:8443) Description: Port Forward HTTPS a Web Server DMZ β Filter rule association: Add associated filter rule (pfSense crea automaticamente la regola firewall WAN necessaria!)
-
Salva e applica
Save β Apply Changes -
Verifica regola firewall creata
Vai in Firewall β Rules β WAN
Dovresti vedere una nuova regola automatica:
NAT HTTPS β 10.0.10.10
π‘ Test Port Forward
Per testare se il port forward funziona:
- Da Internet: Apri browser β
https://IL_TUO_IP_PUBBLICO - Dovresti vedere: Il sito del server interno (10.0.10.10)
- Tool utili:
- canyouseeme.org (verifica porta aperta)
- nmap -p 443 TUO_IP_PUBBLICO (da esterno)
β οΈ Sicurezza Port Forward
Esporre servizi su WAN Γ¨ PERICOLOSO se non fatto correttamente:
- β Usa SOLO protocolli cifrati (HTTPS, SSH, SFTP - NO HTTP, FTP, Telnet)
- β Mantieni il server aggiornato (patch di sicurezza)
- β Usa password forti o autenticazione a chiave
- β Implementa fail2ban per bloccare brute force
- β Considera VPN invece di port forward quando possibile
- β Limita source IP se possibile (non "any")
πΉ 3. NAT 1:1 (One-to-One NAT)
Associa un IP pubblico dedicato a un IP privato in modo bidirezionale. Utile quando hai piΓΉ IP pubblici.
Scenario: Hai 2 IP pubblici e vuoi dedicare il secondo al mail server IP Pubblico WAN: 203.0.113.5 (principale) IP Pubblico Extra: 203.0.113.6 (dedicato mail server) Mail Server LAN: 192.168.1.10 Firewall β NAT β 1:1 Interface: WAN External subnet IP: 203.0.113.6 / 32 Internal IP: 192.168.1.10 Description: Mail Server dedicato Risultato: - Tutto il traffico verso 203.0.113.6 va a 192.168.1.10 - Tutto il traffico DA 192.168.1.10 esce con IP 203.0.113.6 - Bidirezionale e automatico per tutte le porte
π₯ Video Tutorial: Regole Firewall Avanzate
Guarda questo tutorial completo su regole firewall, aliases e NAT.
βΆοΈ Guarda: Regole Firewall pfSenseβ Best Practices Firewall
π Sicurezza
- β Principio del minimo privilegio: Permetti solo ciΓ² che Γ¨ strettamente necessario
- β Regole specifiche prima: Blocchi specifici in alto, permessi generici in basso
- β Descrizioni chiare: Ogni regola deve avere description comprensibile
- β Log regole critiche: Abilita logging per regole di blocco importanti
- β Review periodica: Rivedi le regole ogni 3-6 mesi, elimina obsolete
- β Test prima di produzione: Testa regole in orari a basso traffico
- β Mai "allow any any" su WAN: Estremamente pericoloso!
π Organizzazione
- β Usa aliases abbondantemente: Semplifica manutenzione
- β Naming convention: Es. "BLOCK_", "ALLOW_", "FWD_" come prefissi
- β Separa logicamente: Usa separator (Firewall β Rules β Add Separator)
- β Documenta eccezioni: Regole "strane" devono avere spiegazione dettagliata
β‘ Performance
- β Regole usate spesso in alto: Meno confronti = piΓΉ veloce
- β Usa aliases invece di molteplici regole: PiΓΉ efficiente
- β Evita regole ridondanti: Pulisci regole duplicate
- β Monitora tabella stati: Status β States (troppi stati = problema)
π Debugging Regole Firewall
π Visualizzare Stati Attivi
Vai in Diagnostics β States per vedere tutte le connessioni attive tracciate dal firewall.
tcp 192.168.1.100:54321 (LAN) β 172.217.16.142:443 (WAN) ESTABLISHED udp 192.168.1.50:53124 (LAN) β 8.8.8.8:53 (WAN) MULTIPLE:SINGLE tcp 10.0.10.10:443 (DMZ) β 203.0.113.100:51234 (WAN) ESTABLISHED Filtri utili: - Filter by: 192.168.1.100 (mostra solo connessioni di questo IP) - Interface: LAN (solo stati LAN) - Protocol: tcp (solo TCP)
πͺ΅ Log Firewall
Per vedere quali pacchetti vengono bloccati/permessi:
-
Abilita logging su regola
Modifica regola β β Log packets that are handled by this rule -
Visualizza log
Vai in Status β System Logs β Firewall -
Analizza log
Jan 3 15:30:42 LAN block 192.168.1.100:54321 β 31.13.64.1:443 (TCP:S) βββ¬ββ ββββ¬βββ ββββββββββ¬βββββββββ βββββββ¬ββββββ βββ¬ββ β β β β β Data Intf Sorgente:porta Dest:porta Flags Flags TCP comuni: S = SYN (inizio connessione) A = ACK (acknowledge) F = FIN (fine connessione) R = RST (reset)
π§ Test Regole con Packet Capture
Per debug avanzato, cattura pacchetti in tempo reale:
- Vai in Diagnostics β Packet Capture
-
Configura cattura:
Interface: LAN Address Family: IPv4 Protocol: any Host Address: 192.168.1.100 (IP da monitorare) Packet Length: 0 (cattura tutto) Start β Cattura pacchetti
- Riproduci il problema (es: prova a connetterti al servizio)
- Stop β Download PCAP β Analizza con Wireshark
π― Prossimi Passi
Eccellente! Ora sai configurare regole firewall avanzate, creare aliases intelligenti e gestire NAT come un professionista. Il tuo firewall pfSense Γ¨ ora sicuro e ben organizzato.
Nel prossimo capitolo configureremo il DHCP Server per assegnare automaticamente IP ai client della rete con configurazioni avanzate e prenotazioni statiche.