In questa lezione impari a
- spiegare il funzionamento di un firewall stateful
- creare regole nell'ordine corretto
- usare gli alias
- configurare NAT in uscita e port forwarding
Le regole del firewall decidono che cosa passa e che cosa no. Γ la lezione piΓΉ importante del corso: tutte le successive la danno per acquisita.
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:
- Regole piΓΉ specifiche in ALTO (es: blocca singolo IP)
- Regole intermedie al centro (es: permetti subnet)
- 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: scarta il pacchetto senza rispondere - Reject: scarta il pacchetto e avvisa il mittente (reset TCP o ICMP 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 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 β AddName: 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 semplificano molto 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

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

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
Molto flessibile. 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.

- 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: βΆ Guarda: Regole Firewall pfSense
Buone pratiche 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)
Verificare le regole
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
Esercizi
Regole, alias e NAT: prima ragiona, poi prova in laboratorio.
Esercizio 1 β L'ordine conta. Sulla LAN ci sono, in quest'ordine: 1) Pass qualsiasi traffico; 2) Block verso l'alias SOCIAL; 3) Pass HTTP verso Internet. Un client apre un social: cosa succede? PerchΓ©? Come correggi?
Suggerimento
pfSense applica la prima regola che corrisponde: la regola 1 lascia passare tutto e la 2 non viene mai letta. Sposta il blocco in cima.
Esercizio 2 β Port forwarding con alias. Crea l'alias SERVER_WEB (host 192.168.1.10) e l'alias PORTE_WEB (porte 80 e 443). Crea il port forward dalla WAN verso SERVER_WEB sulle PORTE_WEB e verifica la regola firewall associata creata in automatico.
Esercizio 3 β La rete ospiti. Sulla rete ospiti consenti solo DNS (53) e navigazione web (80, 443) verso Internet e blocca tutto verso le reti private. Suggerimento: crea un alias con le reti RFC 1918.
Suggerimento
Alias RETI_PRIVATE: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16. Prima la regola Block verso l'alias, poi le Pass per 53, 80, 443.
Esercizio 4 β "La regola non funziona". Un collega dice che la sua regola non ha effetto. Scrivi in ordine i controlli che fai, indicando per ognuno dove si trova in pfSense.
Suggerimento
Interfaccia giusta (le regole valgono in ingresso) β ordine delle regole β stati giΓ aperti (Diagnostics β States) β log della regola β Packet Capture.