Firewall e filtraggio del traffico
(Sezione Tecnologia e infrastruttura)
Breve riepilogo
Faervol non è una singola casella sul perimetro, ma un modello di filtraggio a strati da L3-L4 a L7: cloud Security Groups/NACL, regole di rete in Kubernets, egress-control (uscita), WAF e bot management su edge, e mTLS/sorgente-autenticità per il servizio Al servizio. Per il iGaming, la protezione dei flussi di pagamento e dei provider di gioco, geo-policy, controllo DNS e osservabilità (dove, quando e perché).
1) Obiettivi e principi
Default deny - Non consentito per impostazione predefinita, consentendo il minimo necessario.
Defense-in-depth - Criteri identici su perimetro, cloud, cluster e applicazione.
Egress-first: il traffico di uscita è lo stesso rischio di ingresso (PSP, provider di giochi, posta, analisi).
Identità> Indirizzo: dove possibile, autorizzato per identità (mTLS/Spiffe) al posto di IP nudi.
Osservazione e verifica: loghi di soluzioni (allow/deny), tracciabilità, correlazione con gli incidenti.
2) Mappa dei livelli di filtraggio
1. Edge: CDN/WAF/DDoS/bot-protezione, regole L7, terminazione TLS.
2. Cloud: Security Groups/NACL/Firewall Rule a livello VPC/subnet/VM.
3. Cluster: Kubernets, servizio-mesh (Avvoy/Istio) con filtri e L7.
4. Host: iptable/nftable/ufw, filtri eBPF di agenzia.
5. Applicazione: rate-limit/idempotency/WAF-up, elenchi dei domini per l'egress.
6. DNS: split-horizon, allowlist resolver, blocco dei domini/tipi di rischio.
3) Perimetro: WAF, DDoS e Bot Management
WAF: firme di base + regole di custome per gli schemi API (JSON, metodi/content-type).
Bot: scorciatoia comportamentale, device fingerprint, goccia dinamica per anomalie.
DDoS: L3/4 (Wolm/Sinaps) e L7 (HTTP floods) - scollegamento automatico su edge.
GEO/ASN: limitiamo le regioni/sistemi autonomi per le destinazioni di rischio (ad esempio, pannello admine).
nginx
Разрешаем только JSON POST/GET на /api/
location /api/ {
limit_req zone=rl_api burst=50 nodelay;
if ($request_method!~ ^(GET POST)$) { return 405; }
if ($http_content_type!~ "application/json") { return 415; }
proxy_pass http://api_upstream;
}
ModSecurity CRS + собственные правила modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/crs.conf;
4) Cloud: Security Groups e NACL
Gruppo di sicurezza (stateful) - Filtri per porte/protocolli/segmenti.
NASL (stateless) - Filtra retinica brusca delle sottotete.
yaml security_group:
name: api-sg ingress:
- proto: tcp; port: 443; cidr: 0.0.0.0/0 # через CDN/WAF egress:
- proto: tcp; port: 443; cidr: 203.0.113.0/24 # PSP-X
- proto: tcp; port: 443; cidr: 198.51.100.0/24 # ProviderA
- proto: udp; port: 53; cidr: 10.10.0.10/32 # только наш DNS
Pratica: per i pagamenti tenere separati SG ed egress-allowlist su specifici diapositivi PSP/provider di giochi. Gli aggiornamenti sono tra l'acqua e la gelosia.
5) Kubernets: NetworkPolicy e servizio-mesh
NetworkPolicy limita L3/4 all'interno del cluster; per impostazione predefinita, «tutti parlano con tutti» - Chiudi.
Deny-all + risoluzione solo per:yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: { name: deny-all, namespace: prod }
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
ingress: []
egress: []
---
Разрешаем API разговаривать с платежным сервисом и DNS apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: { name: api-allow-specific, namespace: prod }
spec:
podSelector: { matchLabels: { app: api } }
policyTypes: [Ingress, Egress]
egress:
- to:
- namespaceSelector: { matchLabels: { name: prod } }
podSelector: { matchLabels: { app: payments } }
ports: [{ protocol: TCP, port: 8080 }]
- to:
- ipBlock: { cidr: 10.10.0.10/32 }
ports: [{ protocol: UDP, port: 53 }]
Strumenti mesh (Istio/Linkerd/Consul) aggiunge:
- mTLS dappertutto (autenticazione dei servizi di identità, non IP).
- Filtro L7 (metodi/host/percorsi/intestazioni), circuito-breaker, outlier-ejection.
- Criteri di accesso per l'account di assistenza/Spiffe ID.
yaml apiVersion: security.istio.io/v1 kind: AuthorizationPolicy metadata: { name: api-to-payments, namespace: prod }
spec:
selector: { matchLabels: { app: payments } }
action: ALLOW rules:
- from:
- source:
principals: ["spiffe://prod/ns/prod/sa/api-sa"]
to:
- operation:
methods: ["POST"]
paths: ["/deposit","/withdraw"]
6) Firewall host: iptables/nftables/eBPF
Esempio di nftable (statful, deny-all):nft table inet filter {
sets {
psp { type ipv4_addr; elements = { 203.0.113.10, 203.0.113.11 } }
}
chains {
input { type filter hook input priority 0; policy drop;
ct state established,related accept iifname "lo" accept tcp dport {22,443} accept
}
output { type filter hook output priority 0; policy drop;
ct state established,related accept udp dport 53 ip daddr 10.10.0.10 accept # только наш DNS tcp dport 443 ip daddr @psp accept # egress к PSP
}
forward { type filter hook forward priority 0; policy drop; }
}
}
gli agenti eBPF (Cilium, ecc.) forniscono sottili criteri L3-L7 e visibilità (flows, DNS, metadati HTTP).
7) Egress-control e directory di destinazione
Allowlist domini/IP per chiamate esterne (PSP, posta, KYC, provider di giochi).
Criteri DNS-Pinning/SNI - Accantonare solo attraverso un resolver affidabile. vietare l'IP-egress crude.
VPC/VNet egress separati per i circuiti di pagamento, gioco e condivisione.
Proxy con ispezione TLS per traffico non-PII; flussi di pagamento - senza MITM, solo mTLS/PII-safe.
8) TLS/mTLS e crittopolitica
TLS 1. 2 +, codici moderni, OCSP stapling, HSTS.
mTLS all'interno - collegamento a Spiffe ID/certificazione dei servizi acount.
Rotazione regolare dei certificati e verifica delle catene di fiducia.
KORS/CSP sul proxy L7 per tagliare le sorgenti di attacco sul fronte.
9) Rate-limit e quote L7
Limiti Edge per IP/ASN/prefissi i limiti di applicazione sono per identità (account/tenente/chiave).
Idempotency-keys per i pagamenti POST in modo che i retrai non creino riprese.
Leaky/Token bucket con jitter; quando il degrado è «risposta grigia «/goccia/rallentamento.
10) Protezione DNS
Solo i resolver aziendali (VPC resolver/sollevato) sono consentiti.
Split-horizon - I nomi interni non vengono tagliati all'esterno.
Blocco di categorie di TLD dannose, impedito di uscire dall'esterno.
Loging delle query e alerting per anomalie (nuovi domini, frequenti NXDOMAIN).
11) Logi, osservabilità e test
Logi di faervole (allow/deny, regole, byte), controllo WAF, logi DNS → SIEM/SOAR.
Explars: le metriche di bloccò trace _ id "consentono di saltare rapidamente nella pista di una query problematica.
Sintetica: controlli regolari sulla disponibilità di PSP/provider di videogiochi dalle regioni giuste.
Crash test di rete: packet loss, RTT, errori DNS - Verifica la risposta delle regole e la remediazione automatica.
12) Automazione e IaC
Tutte le regole sono come codice (Terraform/Ansible/Helm/Kyverno/Gatekeeper).
Pull-sollest-review con regole di sicurezza (OPA).
Versioning e annotazioni: ogni modifica delle regole viene contrassegnata nei grafici.
Modifiche canarie: espandere gradualmente i criteri di rete (namespace/label, 5-10% sottom).
13) Specificità del iGaming
Percorsi di pagamento (PSP): singoli gruppi egress, allowlist rigorosi, monitoraggio codici/timeout.
I provider di giochi sono i domini CDN whitelisting, la protezione contro i reading improvvisi.
Geo-regole: conformità ai vincoli locali, blocchi regionali su edge.
Backoffice/KYC: accesso solo da reti affidabili/tramite base + MFA.
Frod: limiti velocity per L7 e richieste «pesanti» per l'API di origine anomala.
14) Esempi di regole rapide
UFW (host)
bash ufw default deny incoming ufw default deny outgoing ufw allow 22/tcp ufw allow 443/tcp ufw allow out to 10.10.0.10 port 53 proto udp ufw allow out to 203.0.113.0/24 port 443 proto tcp
Istio EnvoyFilter (divieto di metodi non convenzionali, idea)
yaml typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router до роутера — Lua/Match для блокировки методов not in [GET,POST,OPTIONS]
NGINX rate-limit
nginx limit_req_zone $binary_remote_addr zone=rl_api:10m rate=10r/s;
server {
location /api/ { limit_req zone=rl_api burst=50 nodelay; proxy_pass http://api; }
}
15) Assegno-foglio di implementazione
1. Default deny a livello di nuvola (SG/NACL), cluster (NetworkPolicy) e host.
2. Egress-allowlist ai fornitori PSP e resoluti solo tramite DNS affidabile.
3. WAF/bot management/DDoS su edge, regole L7 su REST/JSON e download.
4. mTLS tra i servizi, autorizzazione per identità (Spiffe/SA).
5. Rate-limit/quote su edge e nell'applicazione idempotency-keys per i pagamenti.
6. Criteri DNS: disabilitazione, split-horizon, loging.
7. Logi e SIEM: raccolta centralizzata allow/deny/WAF/DNS, alert per anomalie.
8. Processi IaC: codice delle regole, RV, mappature canarie, annotazioni.
9. Test/caos: RTT/loss/guasti DNS, verifica percorsi fallback e script auto.
10. Revisioni regolari: controllo delle regole inutilizzate, rotazione degli indirizzi PSP/CDN.
16) Anti-pattern
«Aprire tutto e sperare nella WAF». Il perimetro non salverà il traffico interno.
Nessun controllo egress - tunnel di lampade verso l'esterno per le fughe/C2.
Allow-all NetworkPolicy a Kubernets - spostamento laterale garantito.
Filtra solo IP nel mondo CDN/PSP dinamici senza controllo dominio/DNS.
L'unico punto di terminazione TLS all'interno è il cambio di servizi.
Modifiche manuali delle regole in vendita senza IaC/auditing - impermeabilizzazione e debiti.
Il firewall del Faervol, senza osservabilità, è solo una scatola nera.
Riepilogo
Un efficiente filtraggio del traffico è il tessuto architettonico della piattaforma, da edge-WAF e cloud SG a NetworkPolicy e mTLS all'interno del cluster, con rigidi controlli egress verso i fornitori PSP/PSP e controllo tramite IaC. Questo sistema riduce il rischio di perdite e attacchi, mantiene i pagamenti e i giochi all'interno di SLO e aiuta a indagare rapidamente gli incidenti grazie alla completa verifica e osservabilità.