Runbook: Regole Firewall

Durata: ~10 minuti
Ruolo: Network-Admin, Security-Admin
Prerequisito: Diritti Root/Admin

Controllo degli accessi al Data Gateway a livello di rete.


Workflow

flowchart TD A[Start] --> B[Identificare porte] B --> C{Piattaforma?} C -->|Windows| D[Windows Firewall] C -->|Linux| E[iptables/firewalld] C -->|Cloud| F[Security Groups] D --> G[Creare regola] E --> G F --> G G --> H[Testare] H --> I{Accesso OK?} I -->|Si| J[Documentare] I -->|No| K[Modificare regola] style J fill:#e8f5e9 style K fill:#ffebee


Porte Necessarie

Porta Protocollo Direzione Descrizione
—————–———-————–
443 TCP Entrata HTTPS (Produzione)
5000 TCP Entrata HTTP (solo Sviluppo)
9090 TCP Uscita Prometheus (opzionale)
1433 TCP Uscita SQL Server
5432 TCP Uscita PostgreSQL
3306 TCP Uscita MySQL

1. Windows Firewall

PowerShell (come Admin):

# Entrata: Permettere HTTPS
New-NetFirewallRule -DisplayName "Data Gateway HTTPS" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443
 
# Entrata: Solo da IP specifici
New-NetFirewallRule -DisplayName "Data Gateway HTTPS Restricted" `
    -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443 `
    -RemoteAddress "10.0.0.0/8","192.168.0.0/16"
 
# Uscita: Permettere SQL Server
New-NetFirewallRule -DisplayName "Data Gateway to SQL Server" `
    -Direction Outbound -Action Allow -Protocol TCP -RemotePort 1433
 
# Elencare regole
Get-NetFirewallRule -DisplayName "Data Gateway*" | Format-Table Name, Enabled, Direction, Action
 
# Rimuovere regola
Remove-NetFirewallRule -DisplayName "Data Gateway HTTPS"

2. Linux: firewalld (RHEL/CentOS)

# Aprire porta HTTPS
sudo firewall-cmd --permanent --add-port=443/tcp
 
# Solo da rete specifica
sudo firewall-cmd --permanent --add-rich-rule='
    rule family="ipv4"
    source address="10.0.0.0/8"
    port protocol="tcp" port="443"
    accept'
 
# Applicare modifiche
sudo firewall-cmd --reload
 
# Mostrare regole
sudo firewall-cmd --list-all
 
# Rimuovere regola
sudo firewall-cmd --permanent --remove-port=443/tcp
sudo firewall-cmd --reload

3. Linux: ufw (Ubuntu/Debian)

# Permettere HTTPS
sudo ufw allow 443/tcp
 
# Da rete specifica
sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp
 
# Mostrare stato
sudo ufw status verbose
 
# Rimuovere regola
sudo ufw delete allow 443/tcp

4. Linux: iptables (manuale)

# Permettere HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 
# Solo da rete specifica
sudo iptables -A INPUT -p tcp --dport 443 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j DROP
 
# Salvare regole
sudo iptables-save > /etc/iptables/rules.v4
 
# Mostrare regole
sudo iptables -L -n --line-numbers
 
# Rimuovere regola (per numero)
sudo iptables -D INPUT 3

5. Cloud: AWS Security Group

# Creare Security Group
aws ec2 create-security-group \
    --group-name gateway-sg \
    --description "Data Gateway Security Group" \
    --vpc-id vpc-12345678
 
# HTTPS da ovunque
aws ec2 authorize-security-group-ingress \
    --group-id sg-12345678 \
    --protocol tcp \
    --port 443 \
    --cidr 0.0.0.0/0
 
# HTTPS solo da VPN
aws ec2 authorize-security-group-ingress \
    --group-id sg-12345678 \
    --protocol tcp \
    --port 443 \
    --cidr 10.0.0.0/8

6. Cloud: Azure NSG

# Creare NSG
az network nsg create \
    --resource-group rg-gateway \
    --name gateway-nsg
 
# Regola HTTPS
az network nsg rule create \
    --resource-group rg-gateway \
    --nsg-name gateway-nsg \
    --name AllowHTTPS \
    --priority 100 \
    --direction Inbound \
    --access Allow \
    --protocol Tcp \
    --destination-port-ranges 443 \
    --source-address-prefixes '10.0.0.0/8'

7. IP-Whitelist nel Gateway

Alternativa al Firewall: Filtrare nell'applicazione.

appsettings.json:

{
  "Security": {
    "AllowedIPs": [
      "10.0.0.0/8",
      "192.168.0.0/16",
      "172.16.0.0/12"
    ]
  }
}

8. Testare

# Locale
curl https://localhost/health
 
# Dalla rete autorizzata
curl https://gateway.example.com/health
 
# Dall'esterno (dovrebbe essere bloccato)
curl --connect-timeout 5 https://gateway.example.com/health
# Atteso: Connection refused o Timeout

9. Checklist

# Punto di verifica v
———–
1 Porta 443 entrata permessa
2 Porta 5000 (HTTP) bloccata
3 Solo IP necessari permessi
4 Uscita verso DB permessa
5 Testato dall'esterno
6 Regole documentate

Troubleshooting

Problema Causa Soluzione
————————–
Connection refused Porta non aperta Aggiungere regola firewall
Connection timeout Firewall blocca Verificare regola/IP sorgente
Accesso da ovunque Nessuna restrizione Limitare IP sorgente
Connessione DB fallita Uscita bloccata Aggiungere regola outbound

Best Practices

Principle of Least Privilege:

  • Aprire solo porte necessarie
  • Permettere solo IP necessari
  • Bloccare HTTP (5000) in produzione
  • Auditare regolarmente le regole

Runbook Correlati


« <- Rinnovare certificato | -> Panoramica Operatore »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional

Zuletzt geändert: il 29/01/2026 alle 23:38