Inhaltsverzeichnis
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
- Configurare TLS - Attivare HTTPS
- Kubernetes - NetworkPolicies
- Alerting - Monitoraggio connessioni
« <- 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