Hardening Cloudflare com Python: automatizando o básico que não pode ficar manual
04/06/2026 - ⧖ 3 minTL;DR: Configurei um script em Python para aplicar uma linha de base de segurança em uma zona Cloudflare: Always Use HTTPS, TLS mínimo 1.2, Cloudflare Managed Ruleset e regras customizadas simples no WAF.
Automação de segurança não precisa começar grande. Às vezes, o melhor ganho é tirar do painel aquilo que sempre deveria estar ligado e transformar em algo revisável, repetível e versionado.
Foi essa a motivação do script scripts/cloudflare_hardening.py: aplicar controles básicos de Cloudflare de forma idempotente, usando variáveis de ambiente e a API oficial.
O problema
Configuração manual funciona até deixar de funcionar.
Na prática, eu olharia para três riscos comuns em sites pequenos ou projetos pessoais:
- HTTPS não forçado: o site aceita HTTP quando deveria redirecionar tudo para HTTPS.
- TLS antigo: versões como TLS 1.0 continuam habilitadas por inércia.
- WAF básico ausente: paths sensíveis e scanners comuns passam sem nenhum bloqueio ou challenge.
Esses pontos não resolvem todos os problemas, mas formam uma base mínima. Eles também conversam com o que discuti no artigo sobre OWASP Top 10 2025, especialmente configuração incorreta de segurança e falhas de exposição.
O que o script faz
O script aplica quatro controles:
- ativa
Always Use HTTPS; - define
Minimum TLS Versioncomo1.2; - implanta o
Cloudflare Managed Rulesetdisponível no plano Free; - cria regras customizadas para paths sensíveis, scanners comuns e métodos HTTP inesperados.
O ponto importante é a idempotência: rodar uma segunda vez não deveria duplicar regras nem criar ruído operacional.
Regras customizadas
As regras foram pensadas para um site estático. O objetivo não é substituir análise de eventos, mas reduzir tráfego obviamente indesejado:
- bloquear caminhos como
.git,.env,wp-admin,xmlrpc.php,phpmyadmine backups; - aplicar managed challenge em user agents comuns de scanners;
- bloquear métodos HTTP que não fazem sentido para o site.
Para uma aplicação com API, login ou formulários complexos, eu revisaria essa lista antes de aplicar. Segurança boa não é copiar regra pronta; é adaptar regra ao comportamento esperado do sistema.
Como eu validaria
Um checklist mínimo seria:
- Rodar
--dry-runantes de aplicar. - Confirmar a zona Cloudflare correta.
- Aplicar com token de menor privilégio possível.
- Revisar eventos do WAF depois da mudança.
- Ajustar exceções se algum comportamento legítimo for afetado.
Esse tipo de automação se conecta diretamente com DevSecOps: controle de segurança bom precisa ser repetível, auditável e fácil de revisar.
Onde isso entra na estratégia
Minha leitura é simples: antes de comprar ferramenta complexa, vale automatizar o básico que reduz exposição imediata. Em um fluxo maduro, esse script poderia evoluir para:
- checagem periódica de drift;
- relatório de configuração de zona;
- integração com CI/CD;
- comparação entre configuração esperada e configuração real;
- alerta quando um controle crítico for desativado.
Isso também conversa com CTI aplicada à priorização: nem todo alerta tem o mesmo peso, mas controles básicos ausentes aumentam a superfície para scanners e ataques oportunistas.
Limites
Esse script não substitui revisão de arquitetura, threat modeling, monitoramento ou gestão de vulnerabilidades. Ele só automatiza uma base.
O valor está em transformar uma configuração manual em um artefato técnico que pode ser lido, discutido e melhorado.