πŸ›‘οΈ Configurazione Firewall

Regole Avanzate, Aliases, NAT e Port Forwarding

Capitolo 4 di 11

πŸ”₯ 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

  1. Client invia richiesta: 192.168.1.100:54321 β†’ 172.217.16.142:443 (HTTPS)
  2. pfSense crea "state entry": Registra questa connessione nella tabella degli stati
  3. Regola firewall permette: LAN β†’ any (allow)
  4. Server Google risponde: 172.217.16.142:443 β†’ 192.168.1.100:54321
  5. pfSense riconosce lo stato: Questo pacchetto appartiene a una connessione esistente
  6. 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

  1. Accedi alle regole LAN
    Vai in Firewall β†’ Rules β†’ LAN
    Vedrai le regole esistenti (probabilmente giΓ  presente una regola "Default allow LAN to any")
  2. Aggiungi nuova regola
    Clicca il pulsante ↑ Add (in alto) o ↓ Add (in basso)
    Nota: "Add top" aggiunge in cima, "Add bottom" in fondo
  3. 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
  4. Disabilita/Abilita
    β˜‘ Disabled: Deseleziona (vogliamo la regola attiva)
    Seleziona solo se vuoi disabilitare temporaneamente la regola senza cancellarla
  5. Interfaccia
    Interface: LAN
    Questa regola si applica al traffico che ENTRA nell'interfaccia LAN
  6. Address Family
    Address Family: IPv4 (o IPv6, o IPv4+IPv6)
    Per la maggior parte dei casi, IPv4 Γ¨ sufficiente
  7. 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)
  8. 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
  9. Destination (Destinazione)
    Destination: any (qualsiasi destinazione - Internet incluso)
    
    ☐ not: Inverte la logica (es: "not 192.168.1.0/24" = tutto tranne LAN)
  10. Destination Port Range
    From: any
    To: any
    Permetti qualsiasi porta (HTTP, HTTPS, DNS, etc.)
  11. Descrizione
    Description: Permetti LAN a Internet
    Usa descrizioni chiare - apparirΓ  nella lista regole!
  12. Salva
    Clicca Save β†’ La regola appare nella lista
    Clicca Apply Changes (banner rosso in alto)
    βœ… Regola attiva immediatamente!
Regole firewall WAN

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.

  1. 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)
  2. 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"!
  3. 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

Creazione alias firewall

Interfaccia di creazione alias con campi per nome, tipo e indirizzi IP

Esempio 1: Alias Host - Server Aziendali

  1. Apri gestione Aliases
    Vai in Firewall β†’ Aliases β†’ IP
  2. Aggiungi nuovo alias
    Clicca + Add
  3. 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)
  4. Salva
    Save β†’ Apply Changes
Lista aliases configurati

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.

Configurazione Port Forward

Creazione regola NAT/Port Forward per esporre servizio interno

  1. Accedi a Port Forward
    Vai in Firewall β†’ NAT β†’ Port Forward
  2. Aggiungi regola
    Clicca ↑ Add
  3. 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!)
  4. Salva e applica
    Save β†’ Apply Changes
  5. 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:

  1. Da Internet: Apri browser β†’ https://IL_TUO_IP_PUBBLICO
  2. Dovresti vedere: Il sito del server interno (10.0.10.10)
  3. 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:

  1. Abilita logging su regola
    Modifica regola β†’ β˜‘ Log packets that are handled by this rule
  2. Visualizza log
    Vai in Status β†’ System Logs β†’ Firewall
  3. 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:

  1. Vai in Diagnostics β†’ Packet Capture
  2. 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
  3. Riproduci il problema (es: prova a connetterti al servizio)
  4. 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.

πŸ“‘ Prossimo: Configurazione DHCP β†’