In questa lezione impari a
- spiegare che cos'Γ¨ una DMZ e perchΓ© serve
- aggiungere l'interfaccia DMZ e le sue regole
- rendere pubblico un server con il port forwarding
- verificare l'isolamento tra DMZ e LAN
I server che devono essere raggiungibili da Internet non vanno messi nella LAN: vanno in una zona separata, la DMZ.
Cos'Γ¨ una DMZ?
La DMZ (DeMilitarized Zone - Zona Demilitarizzata) Γ¨ una rete separata e isolata che ospita server accessibili da Internet (server web, mail server, FTP, ecc.) proteggendoli dalla LAN interna e viceversa. Γ come avere una "sala d'attesa" tra Internet e il tuo ufficio privato.
PerchΓ© serve una DMZ?
- Isolamento Sicurezza β Server pubblico compromesso NON accede direttamente alla LAN aziendale
- Difesa in ProfonditΓ β Attaccante deve violare DMZ E poi firewall interno - doppia barriera
- Controllo Granulare β Regole firewall specifiche per traffico pubblico vs interno
- Compliance β Molte normative (PCI-DSS, GDPR) richiedono segregazione server pubblici
Scenari tipici DMZ
| Server DMZ | Accessibile Da | PuΓ² Accedere A |
|---|---|---|
| Web Server | Internet (HTTP/HTTPS) | Database server LAN (porta specifica), Internet |
| Mail Server | Internet (SMTP/IMAP) | Active Directory LAN, Internet |
| FTP Server | Internet, Partner VPN | File storage LAN (read-only), Internet |
| Reverse Proxy | Internet | Application servers LAN, Internet |
| VPN Concentrator | Internet (VPN) | LAN (accesso limitato), Internet |
Architetture DMZ
1. Single DMZ (piΓΉ comune):
Internet
β
ββ WAN (IP pubblico)
β
pfSense (3+ interfacce)
β
ββ LAN (192.168.1.0/24) β PC, stampanti, server interni
β
ββ DMZ (10.0.10.0/24) β Web server, mail server pubblici
2. Dual DMZ (alta sicurezza):
Internet
β
ββ WAN
β
pfSense Esterno
β
ββ DMZ Esterna (10.0.10.0/24) β Server totalmente pubblici
β
pfSense Interno
β
ββ DMZ Interna (10.0.20.0/24) β Server semi-pubblici
β
ββ LAN (192.168.1.0/24) β Rete aziendale
3. Triple-homed (singolo firewall - questa guida):
Internet
β
ββββ΄βββ
β WAN β
ββββ¬βββ
β
βββββββββ΄βββββββββ
β pfSense β
βββββ¬ββββββββββ¬βββ
β β
βββββ΄βββ ββββ΄ββββ
β LAN β β DMZ β
ββββββββ ββββββββ
(Interna) (Pubblica)
Configurazione DMZ Step-by-step
Configuriamo una DMZ completa con interfaccia dedicata, regole firewall e server web pubblico.
Step 1: aggiungere interfaccia DMZ
- Prerequisito hardware
Assicurati di avere una terza porta ethernet disponibile su pfSense
Minimo richiesto: WAN + LAN + DMZ = 3 porte - Connetti cavo DMZ
Collega uno switch managed alla terza porta ethernet
I server DMZ saranno collegati a questo switch - Assegna interfaccia
Vai in Interfaces β Assignments
Nel menu "Available network ports", seleziona la terza scheda di rete (es: igb2)
Clicca + Add
L'interfaccia appare come OPT1 - Configura interfaccia DMZ
Clicca su OPT1β Enable interface Description: DMZ (Rinomina da OPT1 a DMZ - piΓΉ chiaro!) IPv4 Configuration Type: Static IPv4 IPv4 Address: 10.0.10.1 / 24 (pfSense Γ¨ il gateway della DMZ) Subnet mask: /24 (255.255.255.0) = 254 IP disponibili (10.0.10.2 - 10.0.10.254) Upstream Gateway: None (DMZ non ha gateway - pfSense Γ il gateway) Reserved Networks: β Block private networks (DESELEZIONA - DMZ usa IP privati) β Block bogon networks (DESELEZIONA)
Clicca Save β Apply Changes
Scelta subnet DMZ. Usa subnet SEPARATA e NON sovrapposta a LAN/VPN:
- LAN: 192.168.1.0/24
- DMZ: 10.0.10.0/24 (separata!)
- VPN: 10.0.8.0/24 (separata!)
- MALE: DMZ 192.168.2.0/24 (troppo vicina a LAN - confusione routing)
Step 2: regole firewall DMZ base
Le regole firewall DMZ seguono il principio di minimo privilegio: blocca tutto di default, permetti solo il necessario.

Regola 1: blocca DMZ β LAN
CRITICO PER SICUREZZA! Server DMZ compromesso NON deve accedere alla LAN.
- Vai in Firewall β Rules β DMZ
Clicca β Add (in cima - importante!) - Configura regola blocco
Action: Block Interface: DMZ Address Family: IPv4 Protocol: any Source: DMZ net (10.0.10.0/24) Destination: LAN net (192.168.1.0/24) Description: BLOCCA DMZ β LAN (isolamento critico!) β Log packets: ABILITA (Importantissimo - logga tentativi accesso DMZ β LAN!)
Clicca Save
Regola 2: permetti DMZ β Internet
Server DMZ devono poter scaricare aggiornamenti, contattare API esterne, ecc.
- Aggiungi regola sotto la precedente
Clicca β Add - Configura regola allow
Action: Pass Interface: DMZ Protocol: any Source: DMZ net Destination: any β Invert match: SELEZIONA (Significa "any EXCEPT" - vedi sotto) Destination: LAN net (Con invert = "any EXCEPT LAN" = solo Internet!) Description: Permetti DMZ β Internet (no LAN) Logica finale: DMZ puΓ² accedere a qualsiasi destinazione TRANNE LAN = Solo Internet accessibile!
Clicca Save
Regola 3: permetti DMZ β servizi LAN specifici (opzionale)
Se web server DMZ deve accedere a database LAN, crea regola specifica SOPRA il blocco.
Firewall β Rules β DMZ β Add (IN CIMA!) Action: Pass Source: 10.0.10.5 (web server DMZ) Destination: 192.168.1.20 (database server LAN) Destination Port: 3306 (MySQL) Description: Web DMZ β Database LAN (SOLO MySQL) Ordine regole DMZ finale: 1. Allow Web DMZ β Database LAN (porta 3306) 2. Block DMZ net β LAN net (tutto il resto) 3. Allow DMZ net β Internet Logica: - Web server (10.0.10.5) puΓ² accedere MySQL (192.168.1.20:3306) - Web server NON puΓ² accedere ad altro sulla LAN - Altri server DMZ NON possono accedere LAN affatto
Minimo privilegio: solo porte necessarie. Quando permetti DMZ β LAN, sii ESTREMAMENTE specifico:
- Specifica IP sorgente: Solo web server, non tutta DMZ
- Specifica IP destinazione: Solo database server, non tutta LAN
- Specifica porta: Solo 3306 MySQL, non "any"
- Specifica protocollo: TCP, non "any"
- MAI: DMZ net β LAN net β any β any (troppo permissivo!)
Step 3: regole WAN per accesso pubblico
Ora configuriamo port forwarding WAN β DMZ per esporre servizi pubblici.
Esporre web server DMZ su Internet
- Accedi a Port Forward
Vai in Firewall β NAT β Port Forward
Clicca β Add - Configura HTTP (porta 80)
Interface: WAN Protocol: TCP Destination: WAN address Destination port range: From: HTTP (80) To: HTTP (80) Redirect target IP: 10.0.10.5 (web server DMZ) Redirect target port: HTTP (80) Description: Port Forward HTTP β Web Server DMZ β Filter rule association: Add associated filter rule (Crea automaticamente regola WAN)
Clicca Save
- Configura HTTPS (porta 443)
Ripeti per HTTPS:Interface: WAN Protocol: TCP Destination: WAN address Destination port: HTTPS (443) β HTTPS (443) Redirect target: 10.0.10.5:443 Description: Port Forward HTTPS β Web Server DMZ
Save
- Applica modifiche
Clicca Apply Changes
Web server DMZ ora accessibile da Internet.
Esporre mail server DMZ
SMTP (invio mail): Port Forward: WAN:25 β DMZ_MailServer:25 SMTP Submission (secure): Port Forward: WAN:587 β DMZ_MailServer:587 IMAP (ricezione mail): Port Forward: WAN:993 β DMZ_MailServer:993 POP3 (alternativa IMAP): Port Forward: WAN:995 β DMZ_MailServer:995 IMPORTANTE: Mail server esposto su Internet richiede: β Certificati SSL validi (Let's Encrypt) β SPF/DKIM/DMARC configurati (anti-spam) β Reverse DNS configurato β Fail2ban attivo (blocco brute force) β Aggiornamenti di sicurezza regolari

Hardening DMZ avanzato
IDS/IPS con Suricata/Snort
Installa Intrusion Detection/Prevention System sulla DMZ per rilevare attacchi.
- Installa Suricata
System β Package Manager β Available Packages
Cerca:suricataβ Install - Configura Suricata su DMZ
Services β Suricata β Interfaces β AddInterface: DMZ Enable: β Mode: IPS mode (blocca attacchi) Block offenders: β (Blocca automaticamente IP che attaccano) Rulesets: β ET Open (Emerging Threats - gratis) β Snort VRT (se hai account) Categories: β Web attacks β SQL injection β Malware β Exploit kits β Brute force
Save β Start
- Monitor alerts
Services β Suricata β Alerts
Review giornaliero tentativi attacco verso DMZ
Fail2Ban per brute force protection
Sui server DMZ, installa fail2ban per bloccare IP che fanno troppe richieste failed.
Su server web DMZ (Linux): # Installa fail2ban apt-get install fail2ban # Configura jail per SSH /etc/fail2ban/jail.local: [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 findtime = 600 Risultato: 3 tentativi SSH falliti in 10 minuti β IP banned per 1 ora Jail consigliati per DMZ: - sshd (SSH brute force) - apache-auth (HTTP auth failures) - apache-badbots (bot malevoli) - apache-noscript (script injection) - postfix (mail brute force)
VLAN per Multi-DMZ
Se hai piΓΉ tipologie server pubblici, crea DMZ separate con VLAN.
Scenario: Separare web servers da mail servers
pfSense (1 porta fisica DMZ con VLAN)
β
ββ VLAN 10 (DMZ_WEB: 10.0.10.0/24)
β ββ Web servers, API servers
β
ββ VLAN 20 (DMZ_MAIL: 10.0.20.0/24)
β ββ Mail server, SMTP relay
β
ββ VLAN 30 (DMZ_FTP: 10.0.30.0/24)
ββ FTP server, file exchange
Vantaggi:
β
Isolamento ulteriore tra tipologie server
β
Regole firewall granulari per ogni DMZ
β
Se web server compromesso, mail server ancora protetto
β
Risparmio porte fisiche (tutte su 1 porta con VLAN trunk)
Test sicurezza DMZ
Checklist sicurezza DMZ
- Test 1: DMZ NON puΓ² pingare LAN
Dal server DMZ (10.0.10.5):ping 192.168.1.1 ping 192.168.1.10 Risultato atteso: β Request timeout / Destination unreachable β BLOCCO FUNZIONA! Se ping funziona: β οΈ PROBLEMA CRITICO! Regola "Block DMZ β LAN" non funziona Verifica regole firewall DMZ
- Test 2: DMZ puΓ² accedere Internet
Dal server DMZ:ping 8.8.8.8 ping google.com Risultato atteso: β Reply from 8.8.8.8 β Reply from google.com Se fallisce: - Verifica regola "Allow DMZ β Internet" - Verifica DNS server configurato su server DMZ
- Test 3: Internet puΓ² accedere servizio DMZ
Da PC esterno (4G/5G, o usa tool online):Browser: http://TUO_IP_PUBBLICO Risultato atteso: β Vedi sito web server DMZ Tool test: - canyouseeme.org (test porta 80/443) - nmap da esterno: nmap -p 80,443 TUO_IP_PUBBLICO Se fallisce: - Verifica port forward WAN β DMZ - Verifica web server DMZ ascolta su 10.0.10.5:80 - Verifica firewall WAN permette porta 80/443
- Test 4: LAN puΓ² accedere DMZ (management)
Da PC LAN (192.168.1.100):ssh admin@10.0.10.5 (o RDP se Windows server) Risultato atteso: β Connessione SSH funziona (Admin LAN puΓ² gestire server DMZ) IMPORTANTE: Devi aver creato regola esplicita su interfaccia LAN: Firewall β Rules β LAN β Allow LAN net β DMZ net (porte admin) Se non vuoi LAN β DMZ: Gestisci server DMZ via VPN o console fisica
- Test 5: Log funzionano
Tenta ping DMZ β LAN (che deve essere bloccato)
Verifica log:Status β System Logs β Firewall Cerca entry: DMZ block 10.0.10.5 β 192.168.1.10 Se vedi log: β Logging funziona - puoi monitorare tentativi accesso Se non vedi log: - Verifica regola ha "Log packets" abilitato - Log potrebbero essere filtrati (check filtri pagina)
Monitoraggio DMZ
Monitoraggio traffico Real-time
1. Traffic Graph: Status β Traffic Graph β Interface: DMZ Mostra bandwidth DMZ in real-time Identifica picchi traffico, possibili attacchi DDoS 2. States: Diagnostics β States β Filter: DMZ Mostra connessioni attive DMZ: - Quante connessioni web (porta 80/443) - IP client connessi - Connessioni anomale (porte strane) 3. Firewall Logs: Status β System Logs β Firewall β Interface: DMZ Review blocchi DMZ β LAN (tentativi compromissione) Se vedi molti tentativi: possibile server DMZ compromesso! 4. Suricata Alerts (se installato): Services β Suricata β Alerts Attacchi rilevati e bloccati su DMZ: - SQL injection attempts - Web shell upload - Exploit scans - Brute force attacks
Alert automatici
Configura notifiche email per eventi critici DMZ:
- Configura SMTP
System β Advanced β NotificationsE-Mail server: smtp.gmail.com SMTP Port: 587 Secure SMTP Connection: Enable STARTTLS From e-mail address: pfsense@azienda.com Notification E-Mail address: admin@azienda.com Notification E-Mail auth username: your_email@gmail.com Notification E-Mail auth password: app_password
- Test notifica
Clicca Test SMTP
Verifica ricezione email - Installa package alerting
System β Package Manager β Installmailreport
Configura report giornalieri firewall activity
Backup e disaster recovery DMZ
Backup regolari
1. Backup configurazione pfSense: Diagnostics β Backup & Restore β Backup configuration Salva XML settimanalmente 2. Backup server DMZ: Automatizza backup giornalieri server DMZ verso storage LAN: - Database dumps (mysqldump) - Config files (/etc, /var/www/html) - User data 3. Snapshot virtuali (se VM): Se server DMZ sono VM: - Snapshot pre-aggiornamenti - Snapshot settimanali - Retention: 4 snapshot (1 mese) 4. Documentazione: Mantieni documentato: - Topologia rete DMZ - Regole firewall critiche - Procedure ripristino - Credenziali di emergenza (in cassaforte!)
Piano disaster recovery
Scenario 1: Server DMZ compromesso 1. Isola server immediatamente: - Firewall β Rules β DMZ β Disable regola allow Internet - Disconnect cavo rete fisico 2. Analizza compromissione: - Review Suricata alerts - Check file modificati (find / -mtime -1) - Analizza processi sospetti (ps aux, netstat) 3. Ripristina da backup: - Wipe server compromesso - Restore ultimo backup PULITO (pre-compromissione) - Applica patch mancanti 4. Post-mortem: - Identifica vettore attacco - Aggiorna regole firewall - Update IDS signatures Scenario 2: pfSense failure 1. HA setup consigliato (CARP): - 2 pfSense in failover automatico - IP virtuale condiviso - Sync configurazione automatica 2. Se no HA: - Hardware spare pronto - Restore ultimo config backup - RTO target: < 30 minuti Scenario 3: DDoS attack 1. Mitigazione immediata: - Rate limiting regole firewall - Suricata IPS mode - Contatta ISP per null routing 2. Mitigazione cloud: - Cloudflare (proxy reverse) - AWS Shield - Akamai Kona
Buone pratiche DMZ
- Isolamento assoluto: DMZ NEVER accede LAN senza regola esplicita
- Minimo privilegio: Solo porte/protocolli strettamente necessari
- Hardening server: Disabilita servizi non usati, firewall locale attivo
- Aggiornamenti frequenti: Patch sicurezza settimanali su server DMZ
- Password forti: 16+ caratteri per account admin server DMZ
- 2FA dove possibile: SSH key + password, no password solo
- Logging completo: Centralizza log (syslog server) per audit
- IDS/IPS attivo: Suricata o Snort su interfaccia DMZ
- Rate limiting: Limita richieste per IP (anti-DDoS base)
- Backup automatizzati: Giornalieri, testati mensile restore
- Monitoring 24/7: Alert email per eventi critici
- Penetration test: Annuale da team esterno
- Segregazione ulteriore: VLAN per diverse tipologie server
- Reverse proxy: Nginx/HAProxy davanti web servers (layer aggiuntivo)
- WAF: Web Application Firewall (ModSecurity) per protezione web app
Esercizi
Esercizio 1 β Lo schema. Disegna un'architettura a tre gambe (WAN, LAN, DMZ) con indirizzi di rete, gateway e un server web nella DMZ.
Esercizio 2 β La tabella delle regole. Scrivi, interfaccia per interfaccia, le regole per: Internet β web server in DMZ (80, 443) consentito; DMZ β LAN bloccato; LAN β DMZ consentito; DMZ β Internet solo 53, 80, 443.
Esercizio 3 β Prova di sicurezza. Dal server in DMZ prova a raggiungere un host della LAN (deve fallire); dalla WAN apri il sito del server; con nmap dalla WAN controlla quali porte risultano aperte. Scrivi un breve report.