Políticas Firewall e LCA
1) Objetivos e princípios
O Firewall/LCA é o controle do plano de dados: quem, onde, quando e sob que protocolo caminha. Princípios básicos:- Least privege: permite apenas o necessário (allow, implicit deny).
- Segmentation: isolamento de ambientes (prod/estágio/dave), tenentes, contornos críticos (PCI/KMS/DB).
- Controle Egress: o tráfego de saída está restrito às listas FQDN/IP e pessoal endpoint 'ami.
- Identity-aware (L7): As decisões são tomadas sobre uma entidade autenticada (SPIFFE/OIDC) e não apenas sobre IP.
- Infraestrutura as Código: regras como código, review/CI/CD, auditoria de alterações.
2) Taxonomia: onde e o que filtramos
2. 1 Camadas e estado
L3/L4 stateless: LCA clássico (CIDR, protocolo, porta).
L3/L4 stateful: security groups/NSG, monitorando conexões.
L7-aware: proxy/WAF/mesh RBAC (métodos, caminhos, JWT-clims, SNI).
Inline vs out-of-band: O Inline roda o tráfego; out-of-band - análise/alert.
2. 2 Contornos
Perimeter: edge/WAF/Anti-DDoS.
Core: transit hub / меж-VPC/VNet.
Workload: SG/NSG на VM/ENI/POD.
App-level: Envoy/Istio/NGINX policy, service-to-service mTLS.
3) Modelos de nuvem
AWS
Security Group (SG): stateful на ENI/instance/LB.
Rede LCA (NACL): stateless na subrede, ordem de regras, gravações bidirecionais.
AWS Network Firewall/GWLB: L7 Inspecção/IDS.
Recomendação: «SG - Controle Básico, NACL - Vedação/Lista Deny».
Azure
NSG (stateful), ASG (grupos de aplicativos de tags), Azure FW para L7/IDS, Private Endpoants.
Recomendação: NSG para sabnet + NIC, tags de serviços via ASG.
GCP
VPC Firewall Rales (stateful), Hierarchical FW (organização/papo), Cloud Armor (L7), Private Service Connect.
Recomendação: org-level guardrails + projeto allow.
4) Design de regras: pattern
4. 1 Conjuntos básicos
Deny all egress → permitimos FQDN/IP para: repositórios de lotes, registros artefatos, APIs de terceiros (saídas privadas/fixas).
East-West mínimo: os serviços só se comunicam com as dependências necessárias.
Admin acesso: basion/JIT com MFA, gravação de sessões.
4. 2 Marcas e grupos
Use labels/tags em vez de IP: 'eng', 'service', 'tier', 'tenant', 'pci = true'.
Atualizar a política quando a marca é alterada - sem edição manual de malhas de IP.
4. 3 Ciclo de vida
Propose → Evoluate (staging) → Enforce (prod), com dry-run/logs de impacto.
Obsoleto: TTL/owner para cada regra, automático não utilizado.
5) Kubernetes e serviço-mesh
5. 1 NetworkPolicy (L3/L4)
O mínimo é «proibir tudo, exceto o necessário».
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata: { name: deny-all, namespace: core }
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
kind: NetworkPolicy metadata: { name: api-egress }
spec:
podSelector: { matchLabels: { app: api } }
egress:
- to:
- namespaceSelector: { matchLabels: { ns: db } }
ports: [{ protocol: TCP, port: 5432 }]
- to:
- ipBlock: { cidr: 10. 100. 0. 0/16 } # Private endpoints ports: [{ protocol: TCP, port: 443 }]
5. 2 L7 RBAC в mesh (Istio/Envoy)
mTLS + permissão por JWT/claims/scopes/paths.
yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy metadata: { name: api-rbac }
spec:
selector: { matchLabels: { app: api } }
rules:
- from:
- source:
principals: ["spiffe://svc. payments"]
to:
- operation: { methods: ["POST"], paths: ["/v1/payouts"] }
when:
- key: request. headers[x-tenant]
values: ["eu-1","eu-2"]
6) Controle Egress e perímetros privados
Prefira o PrivateLink/Private Service Connect para o PaaS/registros/armazenamento.
O resto do egress através de NAT/proxy com allowlist FQDN e IP fixo (para allowlist de terceiros).
Bloqueie a entrada direta da Internet/VM; exceções apenas através de uma porta de entrada egress.
7) DNS e SNI
Split-horizonte: As zonas internas não falam do lado de fora.
FW/Proxy com FQDN/SNI para HTTPS (SNI allow).
Fixe o pinning em domínios específicos de fornecedores; monitora as alterações no seu IP.
8) Logs, auditoria, observabilidade
Ative o flow logs (VPC/VNet/NSG/NACL) e envie para o SIEM.
Correlacione com aplicativos através de 'trace _ id' nos logs.
Métricas: hit/miss regras, top-talkers, drop-rates, assimetria de tráfego, «fugas de egress».
Relatórios: «regras não utilizadas», «permissões mais amplas».
9) Controle como código (IaC) e verificação
Terraform/CloudFormation + políticas de modelo modulares.
Policy as Code (OPA/Gatekeeper/Conftest): proibição de '0. 0. 0. 0/0 ', exigência' descrição/owner/ttl ', proibição de misturar prod/dave.
CI: Lente, análise de status, simuladores de alcançabilidade (reachability analyzer), plano de visualização, peer review de mandato.
10) Testes de alcançabilidade e caos
Sintético-amostras de diferentes subretas/AZ/regiões: TCP/443, portos específicos de BD/corretores.
Deny temporal para verificação de caminhos DR.: desabilitar dependência de → deve funcionar retries/circuito/fallback.
MTU/MSS: verifique se não há fragmentação em perimeters (especialmente IPsec/NAT-T).
11) Desempenho e confiabilidade
Evite o estreitamento centralizado: Escala inline-FW (GWLB/scale sets) horizontalmente.
ECMP/AS-path/BGP para distribuição entre os hub.
Perfis de inspeção TLS: incluir por pontos (caro), armazenar as impressões digitais das chaves separadamente, cumprir a complicação.
12) Exemplos de configs (embutidos, reduzidos)
12. 1 AWS SG: API → Postgres + S3 PrivateLink
hcl resource "aws_security_group" "api" {
name = "sg-api"
description = "Ingress from ALB, egress to DB and PrivateLink"
vpc_id = var. vpc_id
ingress { from_port=8080 to_port=8080 protocol="tcp" security_groups=[aws_security_group. alb. id] }
egress { from_port=5432 to_port=5432 protocol="tcp" security_groups=[aws_security_group. db. id] }
egress { from_port=443 to_port=443 protocol="tcp" prefix_list_ids=[aws_vpc_endpoint. s3. prefix_list_id] }
tags = { owner="team-api", env=var. env, ttl="2026-01-01" }
}
12. 2 Azure NSG: deny-by-default + allow bastion
bash az network nsg rule create -g rg -n allow-bastion --nsg-name nsg-app \
--priority 100 --direction Inbound --access Allow --protocol Tcp \
--source-address-prefixes 10. 0. 0. 10 --source-port-ranges "" \
--destination-port-ranges 22 --destination-address-prefixes 10. 1. 0. 0/16
12. 3 GCP hierarchical firewall: org-guardrail
yaml direction: INGRESS priority: 1000 action: deny enableLogging: true match:
layer4Configs: [{ ipProtocol: "all" }]
srcIpRanges: ["0. 0. 0. 0/0"]
targetResources: ["organizations/123456"]
12. 4 Envoy RBAC (L7 allow)
yaml
- name: envoy. filters. http. rbac typed_config:
rules:
action: ALLOW policies:
payments-post:
permissions: [{ url_path: { path: "/v1/payouts", ignore_case: true } }]
principals: [{ authenticated: { principal_name: { exact: "spiffe://svc. payments" } } }]
13) Antipattern
`0. 0. 0. 0/0 'no ingress/egress «temporariamente» → fica para sempre.
Flocos de neve (edição manual no console) sem código ou revisão.
SG/NSG geral para prod/estágio/dave; Mistura de subprocuradores críticos e não críticos.
Falta de controle egress e endpoint's privado → fuga de chaves/segredos para fora.
Ignorar DNS/SNI: Permitindo o IP do fornecedor - ele mudou amanhã e abriu toda a faixa.
Sem flow logs e runbook 'ov não é possível forense.
14) Especificidades do iGaming/Finanças (PCI/Regulação)
O PCI CDE em um segmento RRF/segmento separado, sem internet; Acesso ao PSP/logs - via private connectivity/proxy com mTLS e HMAC.
Data residency: PII/eventos de pagamento - dentro do país/região; interregionalmente - apenas unidades/anónimo.
KMS/Vault/HSM: Subredes individuais/SG, apenas clientes mTLS com certificados curtos.
Auditoria WORM: logs de FW/flow em armazenamento inalterado (Object Lock), retenção ≥ mínimo regulatório.
Associados (PSP/KYC): FQDN allowlist, IP estático e monitoramento SLA por provedores.
15) Folha de cheque pró-prontidão
- Modelo de segmentação unificado (hub-and-spoke, VRF), CIDR sem interseções.
- Deny-by-default на egress; endpoints privados para PaaS/armazenamento.
- SG/NSG stateful para workload, NACL/rota-filters para subrede/hub.
- K8s: NetworkPolicy «deny-all», mesh mTLS + L7 RBAC.
- Marcas de formatação/grupo em vez de IP; owner/TTL/descrição em cada regra.
- IaC + Policy-as-Code; CI com simulação de alcançabilidade; o peer review obrigatório.
- Flow logs incluídos; dashboards top-talkers, drop-rates; alertas para «fuga de egress».
- Base/JIT para acesso admin; MFA; registro de sessões.
- Runbook 'e: como adicionar/retirar uma regra, como trabalhar num incidente; revisões regulares das regras mortas.
- Para PCI/finanças: isolamento CDE, auditoria WORM, FQDN-allow para PSP/KYC, egress IP estático.
16) TL; DR
Construa a proteção em camadas: SG/NSG stateful em voorcloads, NACL/road-filters em sub-redes, L7 RBAC em mesh/proxy, WAF/edge no perímetro. Por padrão, deny-by-default, egress somente através de pontos controlados ou private endpoants. Descreva as regras como código, verifique as regras e simuladores de alcançabilidade, e colecione os logs flow. Para o iGaming/Finanças, adicione segmentação PCI, auditoria WORM e FQDN-allow rigoroso para PSP/KYC.