DMZ, NAT, PAT e port forwarding

📋 Obiettivi di apprendimento
Descrivere il ruolo e l’architettura della DMZ, distinguendo DMZ a singolo firewall da DMZ a doppio firewall
Distinguere NAT statico, NAT dinamico e PAT spiegando come ciascuno traduce gli indirizzi e in quale contesto si usa
Configurare NAT statico, PAT e port forwarding su router Cisco IOS e su firewall ASA 5506
Spiegare come DMZ, NAT, PAT e port forwarding si integrano in un’architettura di sicurezza perimetrale coerente
🎬
Video
Firewall ASA 5506 con DMZ, NAT e ACL in Packet Tracer
Guarda →
🎬
Video
ACL su router con DMZ, rete interna e rete esterna in Packet Tracer
Guarda →
📄
Slides
DMZ, NAT, PAT, ASA — slide complete con schemi
🔬
Lab A
Firewall ASA 5506 con DMZ, NAT e ACL in Packet Tracer
GITHUB →
🔬
Lab B
ACL su router con DMZ, rete interna e rete esterna in Packet Tracer
GITHUB →
🖧
Lab
Firewall ASA 5506 con DMZ, NAT e ACL in Packet Tracer
PKT →
🖧
Lab
ACL su router con DMZ, rete interna e rete esterna in Packet Tracer
PKT →

La DMZ — zona demilitarizzata

La DMZ (Demilitarized Zone — zona demilitarizzata) è un segmento di rete isolato che si interpone tra Internet e la rete interna aziendale. Il nome deriva dalla terminologia militare: è una zona neutra, né completamente fidata come la LAN né completamente ostile come Internet.

Lo scopo è ospitare i server che devono essere accessibili dall’esterno (web server, mail server, FTP server) mantenendoli fisicamente e logicamente separati dai sistemi interni critici. Se un server in DMZ viene compromesso, l’attaccante non ha accesso diretto alla rete interna.

📌 Il principio del cuscinetto

La DMZ funge da buffer: gli attacchi diretti ai server pubblici non compromettono immediatamente la rete interna. È come avere una reception accessibile al pubblico (DMZ) separata dagli uffici riservati (LAN) da una porta con serratura (firewall interno).

Tipologie di architettura DMZ

DMZ a singolo firewall
Internet [Firewall] DMZ
[Firewall] LAN interna

Un unico apparato firewall con tre interfacce: WAN, DMZ e LAN. Il firewall gestisce il traffico tra tutte e tre le zone.

✅ Economico
✅ Semplice da gestire
❌ Single point of failure
❌ Se il FW è compromesso, cade tutto
DMZ a doppio firewall ✅ Consigliata
Internet [FW esterno] DMZ
DMZ [FW interno] LAN interna

Due firewall distinti: il primo filtra il traffico verso la DMZ, il secondo protegge la LAN. Un attacco che bypassa il primo FW trova ancora il secondo.

✅ Difesa in profondità
✅ Vendor diversi = sicurezza maggiore
⚠️ Più costoso
⚠️ Più complessa la gestione

Quali server si collocano in DMZ

🌐 Web Server (HTTP/HTTPS)
Sito aziendale, portale clienti, e-commerce
📧 Mail Server (SMTP/IMAP)
Gateway email in ingresso e in uscita
📂 FTP/SFTP Server
Scambio file con partner e clienti esterni
🔀 Reverse Proxy / WAF
Protegge i server backend, bilancia il carico
🔒 VPN Gateway
Punto di ingresso per connessioni remote sicure
🌍 DNS Server pubblico
Risoluzione nomi per i domini aziendali pubblici
📌 Proxy in DMZ — il pattern più sicuro

Un pattern architetturale avanzato prevede di installare un reverse proxy in DMZ e spostare il server reale nella LAN. Il proxy riceve le richieste esterne, le valida (WAF) e le inoltra al server interno. In questo modo il server con i dati sensibili non è mai direttamente esposto a Internet — anche se il proxy venisse compromesso, i dati restano nella rete interna protetta.

NAT — Network Address Translation

Il NAT (Network Address Translation) è il meccanismo che traduce gli indirizzi IP privati degli host interni in indirizzi IP pubblici quando comunicano con Internet — e viceversa per il traffico di ritorno. Serve a due scopi fondamentali:

1 — Conservazione indirizzi IPv4

Migliaia di host privati condividono pochi (o un solo) indirizzo IP pubblico, risolvendo il problema dell’esaurimento degli indirizzi IPv4.

2 — Sicurezza per oscuramento

Gli host interni non sono direttamente visibili su Internet: un attaccante vede solo l’IP pubblico del router, non i singoli PC della LAN.

Terminologia NAT su Cisco IOS

Inside Local

IP privato dell’host interno. Es: 192.168.1.10

Inside Global

IP pubblico che rappresenta l’host interno su Internet. Es: 203.0.113.5

Outside Local

IP con cui il server esterno appare agli host interni (spesso uguale all’Outside Global)

Outside Global

IP reale del server esterno su Internet. Es: 8.8.8.8 (DNS Google)

Le tre varianti di NAT

Confronto NAT statico / dinamico / PAT
TipoNAT StaticoNAT DinamicoPAT (NAT Overload)
Mappatura1 IP privato → 1 IP pubblico fisso1 IP privato → 1 IP da un pool pubblicoN IP privati → 1 IP pubblico (distinti per porta)
IP pubblici necessariUno per ogni hostPool di IP (meno degli host)Uno solo
Connessioni dall’esterno✅ Possibili (IP fisso)❌ Difficili (IP variabile)❌ Non possibili (solo port forwarding)
Uso tipicoServer pubblici in DMZAccesso Internet gruppi di hostAccesso Internet per tutta la LAN
DiffusioneServer farm, hostingRara — poco efficienteQuasi ovunque — router casalinghi e aziendali

NAT Statico su Cisco IOS

Il NAT statico crea una mappatura permanente e bidirezionale tra un IP privato e un IP pubblico. È indispensabile per i server in DMZ che devono essere raggiungibili dall’esterno sempre allo stesso indirizzo.

Configurazione NAT statico su IOS
! Mappatura statica: IP privato → IP pubblico fisso
Router(config)# ip nat inside source static 192.168.2.10 203.0.113.10

! Designa l'interfaccia LAN/DMZ come "inside"
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside
Router(config-if)# exit

! Designa l'interfaccia WAN come "outside"
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
Ogni pacchetto che arriva su G0/1 con destinazione 203.0.113.10 viene automaticamente tradotto verso 192.168.2.10 — e viceversa per il traffico di risposta.

PAT — Port Address Translation

Il PAT (Port Address Translation), detto anche NAT Overload, estende il NAT dinamico permettendo a migliaia di host interni di condividere un unico IP pubblico. Il trucco sta nelle porte: ogni connessione viene identificata dalla combinazione IP pubblico + porta sorgente univoca.

Esempio di tabella PAT — tre host, un solo IP pubblico
Inside LocalPorta SrcInside Global (PAT)Porta AssegnataDestinazione
192.168.1.1052341203.0.113.110001google.com:80
192.168.1.1148921203.0.113.110002youtube.com:443
192.168.1.1261234203.0.113.110003github.com:443
Tutti e tre gli host escono con lo stesso IP pubblico 203.0.113.1, ma la porta di traduzione diversa permette al router di smistare correttamente le risposte.

Configurazione PAT su Cisco IOS

PAT con IP dell’interfaccia WAN (più comune)
! Step 1 — ACL che identifica gli host da sottoporre a PAT
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

! Step 2 — Configura il PAT usando l'IP dell'interfaccia WAN
! La keyword "overload" attiva il PAT (porta multipla)
Router(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload

! Step 3 — Designa le interfacce
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip nat inside

Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip nat outside
La parola chiave overload è ciò che distingue il PAT dal NAT dinamico: dice al router di usare le porte TCP/UDP per multiplexare più connessioni sullo stesso IP pubblico.

Port Forwarding

Il port forwarding (o inoltro di porta) è una forma speciale di NAT statico che mappa una porta specifica dell’IP pubblico verso un host e una porta specifici nella rete privata. Permette di rendere accessibile dall’esterno un singolo servizio interno senza esporre l’intero host.

Schema Port Forwarding
Client esterno
→ 203.0.113.1:443
Router NAT
→ 192.168.2.10:443
Web Server in DMZ
Configurazione su Cisco IOS
! Forward porta TCP 443 al server
ip nat inside source static
 tcp 192.168.2.10 443
     203.0.113.1 443

! Forward porta TCP 80 allo stesso server
ip nat inside source static
 tcp 192.168.2.10 80
     203.0.113.1 80
⚠️ Sicurezza del port forwarding

Ogni porta aperta verso Internet è una potenziale superficie di attacco. Regole di port forwarding mal configurate possono esporre servizi interni non protetti. È fondamentale: usare port forwarding solo quando necessario, combinarlo con ACL che limitino gli IP sorgente autorizzati, e assicurarsi che il servizio esposto sia aggiornato e hardened.

Configurazione del Firewall ASA 5506

Il Cisco ASA 5506-X è un firewall hardware di fascia media molto usato in ambienti aziendali e nel laboratorio Packet Tracer. A differenza dei router IOS, l’ASA usa una sintassi di configurazione dedicata e introduce il concetto di security level per gestire automaticamente il traffico tra zone.

Security Level — il concetto chiave dell’ASA

Ogni interfaccia dell’ASA ha un security level da 0 a 100. La regola di default è:

100
inside (LAN)
Massima fiducia — traffico verso livelli inferiori sempre permesso
50
dmz
Fiducia intermedia — accesso limitato verso inside e outside
0
outside (WAN)
Nessuna fiducia — traffico verso inside/dmz bloccato di default
Il traffico da un livello più alto verso uno più basso è permesso di default (es. LAN → Internet). Il traffico da un livello più basso verso uno più alto è bloccato di default e richiede ACL esplicite (es. Internet → DMZ).

Configurazione completa ASA 5506 — topologia del Lab A

La configurazione che segue corrisponde alla topologia dell’immagine 1 del laboratorio: ASA con LAN interna, DMZ con web server e connessione Internet con PC esterno.

Step 1 — Configurazione delle interfacce ASA
! Interfaccia WAN (verso Internet)
ciscoasa(config)# interface GigabitEthernet1/3
ciscoasa(config-if)# ip address 150.10.0.1 255.255.255.0
ciscoasa(config-if)# nameif outside
ciscoasa(config-if)# security-level 0
ciscoasa(config-if)# no shutdown

! Interfaccia LAN (verso switch interno)
ciscoasa(config)# interface GigabitEthernet1/2
ciscoasa(config-if)# ip address 192.168.1.1 255.255.255.0
ciscoasa(config-if)# nameif inside
ciscoasa(config-if)# security-level 100
ciscoasa(config-if)# no shutdown

! Interfaccia DMZ (verso switch DMZ)
ciscoasa(config)# interface GigabitEthernet0/2
ciscoasa(config-if)# ip address 192.168.2.1 255.255.255.0
ciscoasa(config-if)# nameif dmz
ciscoasa(config-if)# security-level 50
ciscoasa(config-if)# no shutdown
Step 2 — Configurazione NAT/PAT con auto-NAT (object NAT)
! PAT dinamico — gli host LAN escono con l'IP dell'interfaccia outside
ciscoasa(config)# object network LAN
ciscoasa(config-network-object)# subnet 192.168.1.0 255.255.255.0
ciscoasa(config-network-object)# nat (inside,outside) dynamic interface
ciscoasa(config-network-object)# exit

! PAT dinamico — gli host DMZ escono con l'IP dell'interfaccia outside
ciscoasa(config)# object network DMZ
ciscoasa(config-network-object)# subnet 192.168.2.0 255.255.255.0
ciscoasa(config-network-object)# nat (dmz,outside) dynamic interface
ciscoasa(config-network-object)# exit

! NAT statico — il web server in DMZ è raggiungibile dall'esterno
! IP privato 192.168.2.10 → IP pubblico 150.10.0.1
ciscoasa(config)# object network WEBSERVER
ciscoasa(config-network-object)# host 192.168.2.10
ciscoasa(config-network-object)# nat (dmz,outside) static 150.10.0.1
ciscoasa(config-network-object)# exit
Step 3 — Rotta di default e ACL
! Rotta di default — tutto il traffico verso il router Internet
ciscoasa(config)# route outside 0.0.0.0 0.0.0.0 150.10.0.1

! ACL per l'interfaccia outside — permessi da Internet
! Permette risposte ICMP (echo-reply e unreachable)
ciscoasa(config)# access-list OUTSIDE extended permit icmp any any echo-reply
ciscoasa(config)# access-list OUTSIDE extended permit icmp any any unreachable

! Permette traffico HTTP verso il web server (IP pubblico)
ciscoasa(config)# access-list OUTSIDE extended permit tcp any host 150.10.0.1 eq www

! Applica ACL all'interfaccia outside in ingresso
ciscoasa(config)# access-group OUTSIDE in interface outside
Nota: su ASA le ACL si applicano con access-group invece di ip access-group come su IOS. La sintassi è diversa ma il comportamento è analogo.

Integrazione — l’architettura completa

Tutti gli elementi studiati in questo modulo — firewall, ACL, DMZ, NAT, PAT — non sono strumenti indipendenti ma componenti di un’architettura coerente. Ecco come si integrano in un flusso reale:

Flusso di un client esterno che visita il web server aziendale
1

Client esterno invia richiesta HTTP verso 150.10.0.1:80 — l’IP pubblico dell’azienda

2

Il firewall ASA riceve il pacchetto sull’interfaccia outside (security-level 0)

3

L’ACL OUTSIDE verifica: il traffico TCP su porta 80 verso 150.10.0.1 è permesso

4

NAT statico: la destinazione viene tradotta da 150.10.0.1 a 192.168.2.10 (web server in DMZ)

5

Il pacchetto raggiunge il web server nella DMZ sulla porta 80

6

La risposta percorre il percorso inverso — ASA applica il NAT inverso e reinvia al client esterno

In tutto questo, i server interni nella LAN (192.168.1.x) non sono mai stati esposti o raggiungibili dal client esterno — la DMZ ha fatto da scudo.
📌 Riepilogo — Punti chiave
  • La DMZ isola i server pubblici dalla LAN interna — una compromissione in DMZ non si propaga automaticamente alla rete interna
  • NAT statico: 1 IP privato ↔ 1 IP pubblico fisso (server in DMZ); PAT: N IP privati → 1 IP pubblico con porte diverse (host LAN su Internet)
  • Il port forwarding mappa una porta specifica dell’IP pubblico verso un host interno — utile per esporre servizi selettivi senza esporre l’host intero
  • Su ASA, il security level determina il flusso di default: traffico da livello alto a basso permesso, da basso ad alto bloccato — richiede ACL esplicite
  • DMZ, NAT, PAT, ACL e firewall non sono strumenti separati ma componenti di un’architettura perimetrale integrata — ognuno svolge un ruolo preciso nel flusso completo

Lascia un commento