πŸ”’ Configurazione DMZ

Zona Demilitarizzata per Server Pubblici Sicuri e Isolati

Capitolo 9 di 11

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

  1. Prerequisito hardware
    Assicurati di avere una terza porta ethernet disponibile su pfSense
    Minimo richiesto: WAN + LAN + DMZ = 3 porte
  2. Connetti cavo DMZ
    Collega uno switch managed alla terza porta ethernet
    I server DMZ saranno collegati a questo switch
  3. 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
  4. 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.

Regole firewall DMZ

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.

  1. Vai in Firewall β†’ Rules β†’ DMZ
    Clicca ↑ Add (in cima - importante!)
  2. 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.

  1. Aggiungi regola sotto la precedente
    Clicca ↓ Add
  2. 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

  1. Accedi a Port Forward
    Vai in Firewall β†’ NAT β†’ Port Forward
    Clicca ↑ Add
  2. 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
  3. 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
  4. 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
Gruppi gateway per multi-WAN

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.

  1. Installa Suricata
    System β†’ Package Manager β†’ Available Packages
    Cerca: suricata β†’ Install
  2. Configura Suricata su DMZ
    Services β†’ Suricata β†’ Interfaces β†’ Add
    Interface: 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
  3. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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:

  1. 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
  2. Test notifica
    Clicca Test SMTP
    Verifica ricezione email
  3. Installa package alerting
    System β†’ Package Manager β†’ Install mailreport
    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.

πŸ“Š Prossimo: Monitoring & Analytics β†’