π 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
Clicca Save β Apply Changesβ 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)
π‘ 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.
Configurazione completa regole firewall per interfaccia DMZ con porte 80/443
π« 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
Clicca SaveAction: 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!)
β 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
Clicca SaveAction: 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!
π 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)
Clicca SaveInterface: 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)
-
Configura HTTPS (porta 443)
Ripeti per HTTPS:
SaveInterface: 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
-
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
Configurazione gateway groups per failover e load balancing multi-WAN
π 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 β Add
Save β StartInterface: 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
-
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)
π Monitoring 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 β Notifications
E-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
β Best Practices 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
π― Prossimi Passi
Eccezionale! Ora hai configurato una DMZ enterprise-grade con isolamento completo, regole firewall granulari, IDS/IPS e monitoring avanzato. I tuoi server pubblici sono esposti a Internet ma la LAN interna rimane protetta!
Nel prossimo capitolo implementeremo Monitoring e Analisi Traffico con ntopng, grafici avanzati e dashboard personalizzate per visibilitΓ completa sulla rete.