Uma proteção que dava para contornar
O site e a plataforma do cliente ficavam atrás de uma CDN com WAF. Só que o load balancer de origem, na nuvem, continuava aceitando acesso direto da internet. Quem descobrisse o IP da origem passava por fora de toda a proteção.
Fechar essa porta parecia coisa de uma regra de firewall: bloquear tudo que não viesse da CDN. Na prática, havia três peças que precisavam mudar juntas e na ordem certa. O domínio raiz não aceita CNAME, por uma regra do próprio DNS, e o DNS do cliente não suportava registros do tipo ALIAS. Por isso, o domínio raiz apontava para um IP fixo da CDN, configurado à mão: se a CDN trocasse esse IP, o site saía do ar. A ordem também importava, porque bloquear a origem antes de o DNS apontar para a CDN derrubaria o site. E a coleta de métricas dos servidores passava justamente pelo caminho que ia ser fechado.
Ensaiar antes
Validei o fluxo inteiro numa prova de conceito antes de mexer em produção, e foi ali que apareceram os erros 403 ao ativar o bloqueio no firewall do load balancer. Corrigidos esses, restringi a origem: o firewall passou a aceitar só os IPs da CDN.
Automatizar o que depende de terceiros
O ponto frágil continuava sendo depender de IPs que não eram nossos. Escrevi dois scripts em Python. O primeiro sincroniza os IPs atuais da CDN nos registros DNS dos domínios que não aceitam CNAME. Refatorei a lógica para uma função genérica, o que permitiu incluir um subdomínio que ainda apontava direto para a origem, e corrigi um bug no modo de simulação: em Python, a string "false" é verdadeira. O segundo script mantém os IPs da CDN atualizados na lista de permissões do firewall.
Para que o monitoramento sobrevivesse ao bloqueio, ajustei a coleta de métricas para descobrir os IPs das instâncias de autoscaling pela API da nuvem, sem passar pelo caminho fechado. Também apoiei a prova de conceito de APM, com proxy reverso e certificados TLS, incluindo um wildcard, para o coletor.
Um redirect que quebrava imagens
No meio do trabalho, um redirect passou a quebrar imagens, e a primeira suspeita era o DNS. Mostrei com testes que o DNS estava certo e que o problema era a regra de redirect da CDN, que descartava o caminho da URL. O servidor de origem, em comparação, preservava o caminho. Separar o que era DNS do que era CDN poupou uma mudança errada.
O que mudou
A origem deixou de ser acessível diretamente: todo o tráfego passou a entrar pela CDN e pelo WAF. O risco do IP fixo ficou automatizado, e se a CDN mudar seus IPs, o DNS e o firewall se atualizam sozinhos. O monitoramento dos servidores continuou funcionando depois do bloqueio.
O que eu levo disso
Segurança de borda não é uma regra de firewall, é uma mudança coordenada entre DNS, CDN, firewall e monitoramento. E tudo que depende de um IP que você não controla precisa ser automatizado, ou vira uma queda esperando a hora de acontecer.