Protegendo seu WordPress com Cloudflare, a segurança do WordPress é uma preocupação constante para donos de sites e administradores. Ataques DDoS, invasões por força bruta e bots maliciosos são ameaças comuns que podem comprometer o desempenho e a integridade do seu site. Felizmente, o Cloudflare oferece uma solução robusta para proteger e otimizar seu WordPress. Neste artigo, exploraremos como essa ferramenta pode blindar seu site e melhorar sua performance.
O que é o Cloudflare?
O Cloudflare é uma CDN (Content Delivery Network) e um serviço de segurança na nuvem que protege e acelera sites na internet. Ele atua como um intermediário entre os visitantes e o servidor de hospedagem, fornecendo camadas adicionais de segurança e otimizando o carregamento das páginas.
Benefícios do Cloudflare
- Proteção contra ataques DDoS: Bloqueia tráfego malicioso automaticamente.
- Firewall e regras personalizadas: Controle avançado sobre o acesso ao seu site.
- Certificado SSL gratuito: Garante a segurança das conexões com HTTPS.
- Proteção contra bots: Identifica e bloqueia atividades suspeitas.
Como Configurar o Cloudflare
Criar uma Conta no Cloudflare
- Acesse Cloudflare.com e clique em Inscreva -se.
- Insira seu email e crie uma senha segura.
- Clique em Adicione um site no plano gratuito.
Adicionar Seu Site
- No painel do Cloudflare, clique em Add.
- Digite o domínio do seu WordPress (exemplo: meuwebsite.com).
- Escolha o plano gratuito para começar.
Alterar os Nameservers no Registro do Domínio
- O Cloudflare fornecerá novos nameservers.
- Acesse o painel do seu provedor de domínio (ex: GoDaddy, Namecheap, Hostgator, Hostinger).
- Substitua os nameservers antigos pelos novos fornecidos pelo Cloudflare.
Agora vamos adicionar o seu servidor no DNS da Cloudflare
- Acesse DNS no Menu Esquerdo
- Acesse Records
- Crie os Registros necessários
Deixe o Proxy Status como DNS Only nesse primeiro momento! E em sua hospedagem gere um certificado Digital para seu domínio.
Após o certificado gerado! Habilite o Proxy Status para Proxied.
Quando você habilita o status “Proxied” no Cloudflare, o tráfego para o seu domínio passa a ser roteado através da infraestrutura do Cloudflare, trazendo diversas vantagens e melhorando a segurança do WordPress:
- Proteção contra Ataques DDoS: O Cloudflare filtra o tráfego antes que ele chegue ao seu servidor, protegendo contra ataques de negação de serviço (DDoS).
- Esconde o IP real do servidor: Em vez de expor diretamente o IP do seu servidor de hospedagem, o Cloudflare atua como intermediário, dificultando ataques diretos.
- CDN e Cache Automático: O Cloudflare armazena e distribui conteúdos estáticos do seu site (como imagens, CSS, JavaScript) em servidores globais, melhorando o tempo de carregamento.
- HTTPS e Certificado SSL do Cloudflare: Se ativado, o tráfego pode ser criptografado usando um SSL gerenciado pelo Cloudflare, sem a necessidade de configurar um SSL no seu servidor.
- Firewall e Regras de Segurança: Você pode definir regras no Firewall do Cloudflare para bloquear acessos maliciosos, bots, países específicos, entre outras configurações avançadas.
- Modo “Under Attack”: Se ativado, o Cloudflare pode exibir uma página de verificação antes de permitir o acesso ao site, útil em situações de tráfego malicioso.
Cuidados
- Configuração DNS errada pode causar indisponibilidade: Se houver erro na configuração, pode resultar em problemas de acesso ao site.
- Alterações no servidor podem levar tempo para propagar: Como o Cloudflare faz cache de conteúdos, mudanças no site podem demorar a aparecer sem limpar o cache manualmente.
- Serviços que dependem do IP real podem falhar: Se você usa serviços que exigem o IP real do visitante, pode ser necessário configurar as opções de logs para recuperar esse dado.
Agora iremos Configurar a Parte de SSL/TLS e habilitar o SSL Full (Strict)
No canto esquerdo SSL/TLS
O Cloudflare oferece diferentes modos de criptografia SSL/TLS, cada um com um nível específico de segurança e requisitos no servidor de origem. Aqui está uma explicação detalhada de cada modo:
Off (Not Secure)
- O tráfego entre o navegador do visitante e o Cloudflare NÃO é criptografado.
- O tráfego entre o Cloudflare e o servidor de origem também NÃO é criptografado.
- Os visitantes verão um aviso de site inseguro nos navegadores, podendo gerar desconfiança e perda de acessos.
- Esse modo NÃO é recomendado, pois expõe o tráfego a ataques de interceptação (MITM – Man-in-the-Middle).
Flexible (Padrão em algumas contas Cloudflare)
- O tráfego entre o navegador do visitante e o Cloudflare é criptografado com HTTPS.
- O tráfego entre o Cloudflare e o servidor de origem NÃO é criptografado (HTTP).
- O visitante vê um cadeado verde no navegador, mas a conexão entre Cloudflare e o servidor de origem NÃO é segura.
- Se o site já suporta HTTPS, NÃO USE ESSE MODO!
- Problemas: Pode gerar redirecionamentos infinitos se o servidor de origem tentar forçar HTTPS.
Full
- O tráfego entre o navegador do visitante e o Cloudflare é criptografado (HTTPS).
- O tráfego entre o Cloudflare e o servidor de origem também é criptografado (HTTPS).
- O servidor pode ter qualquer certificado SSL, mesmo autoassinado.
- O Cloudflare NÃO valida se o certificado do servidor é confiável.
- O uso de certificados autoassinados pode permitir conexões HTTPS inseguras.
Full (Strict)
- O tráfego entre o navegador do visitante e o Cloudflare é criptografado (HTTPS).
- O tráfego entre o Cloudflare e o servidor de origem também é criptografado (HTTPS).
- O Cloudflare SOMENTE aceita certificado SSL válido, como Let’s Encrypt ou um certificado de uma autoridade certificadora confiável no servidor de origem.
- Certificados autoassinados não são aceitos!
- Se você gerou e instalou um Cloudflare Origin CA Certificate no servidor de origem.
Strict SSL (SSL-Only Origin Pull)
- O tráfego entre o navegador do visitante e o Cloudflare é criptografado (HTTPS).
- O tráfego entre o Cloudflare e o servidor de origem é criptografado e obrigatório.
- O servidor de origem só aceita conexões do Cloudflare!
- Requer um certificado válido (público ou do Cloudflare Origin CA) instalado no servidor de origem.

Configurando Edge Certificates para Maior Segurança
Habilitar Always Use HTTPS
- No painel do Cloudflare, vá para SSL/TLS > Edge Certificates.
- Encontre a opção Always Use HTTPS e ative-a.
- Isso garante que todas as conexões com seu site sejam redirecionadas automaticamente para HTTPS, melhorando a segurança e evitando ataques man-in-the-middle.
Habilitar HTTP Strict Transport Security (HSTS)
- Ainda em SSL/TLS > Edge Certificates, localize HTTP Strict Transport Security (HSTS).
- Clique em Enable HSTS (Atenção: certifique-se de que seu site já está funcionando corretamente com HTTPS antes de ativar).
Configure as opções:
- Max Age: 6 meses (pode ser aumentado para 1 ano posteriormente).
- Include Subdomains: Ativado.
- Preload: Ativado.
- No-Sniff Header: Ativado
Definir a Versão Mínima do TLS para 1.2 ou Superior
- Ainda em SSL/TLS > Edge Certificates, localize Minimum TLS Version
- Isso garante que conexões inseguras usando versões antigas do TLS não sejam aceitas.
Se o WordPress ainda não estiver instalado, este é o momento ideal para fazê-lo antes de continuar com as configurações.
Criando Regras no WAF para Proteger seu WordPress
Agora que o WordPress está instalado e com o Cloudflare configurado, podemos reforçar a segurança criando regras no WAF (Web Application Firewall). Embora nenhuma ação de segurança seja 100% eficaz, podemos aumentar significativamente a dificuldade para invasores, reduzindo as superfícies de ataque e mitigando ameaças antes que alcancem o servidor.
Criando Regras Essenciais no WAF
- No painel do Cloudflare, acesse Security > WAF
- Clique em Custom rules -> +Create Rule para adicionar novas regras personalizadas.
Regra BlockAdmAccess
Essa regra bloqueia acessos não autorizados a áreas sensíveis do WordPress, permitindo apenas o acesso do IP autorizado (“Seu_IP”). Se outro IP tentar acessar, será bloqueado automaticamente.
Expression
(http.request.uri.path contains "/wp-json" and ip.src ne Seu_IP)
or (http.request.uri.path contains "/wp-login.php" and ip.src ne Seu_IP)
or (http.request.uri.path contains "/wp-admin/" and http.request.uri.path ne "/wp-admin/admin-ajax.php" and http.request.uri.path ne "/wp-admin/theme-editor.php" and ip.src ne Seu_IP)
or (http.request.uri.path contains "/wp-cron.php" and ip.src ne Seu_IP)
/wp-json
- Bloqueia acessos externos à API REST do WordPress, que pode expor informações sensíveis.
- Plugins e funcionalidades legítimas podem depender dessa API, então é importante testar antes de ativar.
/wp-login.php
- Bloqueia a página de login para qualquer IP que não seja o permitido.
- Reduz drasticamente ataques de força bruta contra o painel administrativo.
/wp-admin
- Bloqueia qualquer tentativa de acesso ao diretório administrativo.
- Exceções para
/wp-admin/admin-ajax.php
e/wp-admin/theme-editor.php
- Plugins e funcionalidades que usam AJAX continuem funcionando.
- O editor de temas permaneça acessível, caso necessário.
/wp-cron.php
- Bloqueia acessos não autorizados ao sistema de agendamento do WordPress, evitando abuso por bots.
Personalizando a Regra
- Substitua
"Seu_IP"
pelo IP que terá permissão para acessar o painel. - Para descobrir seu IP, acesse WhatIsMyIP e copie o endereço exibido.
Copie a expressão e cole no Edit expression
Não se esqueça de habilitar a regra
Vamos criar uma nova regra para proteger seu WordPress
Regra LockWPFiles
Essa regra tem o objetivo de proteger arquivos sensíveis do WordPress contra ataques, exploração e execução maliciosa de scripts.
Expression
(http.request.uri contains "/xmlrpc.php" and ip.src ne Seu_IP) or (http.request.uri.path contains "/wp-content/" and not http.referer contains "lluciox.space" and http.request.uri.path contains ".php") or (http.request.uri.path contains "/wp-includes/" and not http.referer contains "lluciox.space" and http.request.uri.path contains ".php") or (http.request.uri.path contains "/wp-content/uploads/" and http.request.uri.path contains ".php")
xmlrpc.php (Prevenção de Ataques Remotos)
- Bloqueia acessos ao
xmlrpc.php
, que é frequentemente usado em ataques de força bruta e DDoS amplificados. - Apenas o IP autorizado (
Seu_IP
) pode acessá-lo, caso seja necessário para serviços como Jetpack ou aplicativos móveis.
/wp-content
- Impede a execução direta de arquivos PHP dentro do diretório
/wp-content/
, evitando que invasores executem códigos maliciosos. - Permite apenas requisições feitas pelo próprio site (
lluciox.space
).”Coloque seu Site no lugar delluciox.space
“ - Protege contra ataques que tentam acessar arquivos PHP dentro de plugins e temas.
/wp-includes
- Impede a execução direta de arquivos PHP dentro do diretório
/wp-includes/
, que contém arquivos essenciais do WordPress. - Evita exploração de vulnerabilidades em arquivos internos do WordPress.
/wp-content/uploads/
- Bloqueia a execução de arquivos PHP dentro da pasta de uploads, prevenindo que um invasor faça upload de um shell malicioso e o execute no servidor.
- Essa é uma proteção fundamental contra backdoors e web shells.
Vamos criar uma nova regra para proteger seu WordPress
GEO & VPN BLOCK – Restrição de Acesso por Continente e País
Bloquear acessos por geolocalização (GEO BLOCK) é uma estratégia eficaz para reduzir riscos de ataques, especialmente quando sabemos que um site ou sistema não precisa ser acessado globalmente.
- Muitas redes de bots e ataques de força bruta vêm de certas regiões conhecidas por tráfego malicioso.
- Regiões com alto índice de ataques podem ser bloqueadas para evitar exploração de falhas em WordPress, APIs e sistemas web.
- Alguns ataques como carding, scraping e bruteforce são frequentes em determinados países.
Expression
(ip.geoip.continent in {"AS" "AF"}) or (ip.geoip.country in {"IE" "TR"}) or (ip.geoip.asnum in {9009 20473 16509 16276 62785}) or (cf.client.bot) or (cf.threat_score gt 10)
Caso você queira, podemos dar uma melhorada na regra liberando os bot’s de indexação
Lembrando essas regras devem ser otimizadas conforme sua necessidade!
(ip.geoip.continent in {"AF" "AS" "T1"} and not ip.src.country in {"US"}) or (cf.client.bot and not http.user_agent contains "ChatGPT-User" and not http.user_agent contains "OAI-SearchBot" and not http.user_agent contains "Googlebot" and not http.user_agent contains "bingbot" and not http.user_agent contains "DuckDuckBot" and not http.user_agent contains "Yahoo! Slurp" and not http.user_agent contains "YandexBot" and not http.user_agent contains "BaiduSpider" and not http.user_agent contains "FacebookExternalHit" and not http.user_agent contains "Twitterbot" and not http.user_agent contains "LinkedInBot" and not http.user_agent contains "Slackbot" and not http.user_agent contains "TelegramBot" and not http.user_agent contains "AhrefsBot" and not http.user_agent contains "SemrushBot" and not http.user_agent contains "MJ12bot" and not http.user_agent contains "Google-PageSpeed" and not http.user_agent contains "Archive.org_bot" and not http.user_agent contains "Google Favicon" and not http.user_agent contains "UptimeRobot" and not http.user_agent contains "PingdomBot" and not http.user_agent contains "PerplexityBot" and not http.user_agent contains "Applebot" and not http.user_agent contains "meta-externalagent" and not http.user_agent contains "Chrome-Lighthouse" and not http.user_agent contains "Google-InspectionTool" and not http.user_agent contains "GPTBot" and not http.user_agent contains "GoogleOther" and not http.user_agent contains "wpbot" and not http.user_agent contains "Instagram") or (ip.src.country in {"IE" "RU"})
Bloqueios de Geolocalização
- Bloqueia tráfego de África (AF) e Ásia (AS).
- Impede acessos da Irlanda (IE) e Turquia (TR).
- Bloqueia ASN conhecidos por tráfego de VPNs e serviços de anonimato.
- Bloqueia bots conhecidos do Cloudflare.
- Impede acessos de IPs que o Cloudflare considera potencialmente maliciosos.
ASN | Provedor | Motivo de Bloqueio |
9009 | M247 Ltd | Usado por VPNs, proxies e ataques de bots |
20473 | Choopa LLC (Vultr) | VPS usadas para ataques DDoS |
16509 | Amazon AWS | Máquinas virtuais utilizadas para scrapers e ataques |
16276 | OVH SAS | Hospeda muitos serviços de VPN e ataques de brute force |
62785 | DigitalOcean | Fornece servidores para scanners e pentesters |
Vamos criar uma nova regra para proteger seu WordPress
User-agents Block
Essa regra bloqueia requisições HTTP com User-Agents amplamente utilizados por ferramentas de pentest, varredura, ataques e automação de requisições. Ao filtrar User-Agents conhecidos, reduzimos a superfície de ataque e dificultamos a ação de scanners automatizados. Além disso, bloqueia acessos à rota /cdn-cgi/trace
, que pode ser explorada para coletar informações sobre o servidor Cloudflare.
Embora um atacante possa modificar o User-Agent para algo legítimo (ex: "Mozilla/5.0"
), essa regra continua sendo útil por vários motivos:
- Bloqueia Ferramentas Automáticas: Muitos scanners e bots maliciosos rodam com seus User-Agents padrão. Essa regra impede a execução de ataques automatizados de usuários inexperientes ou bots sem personalização.
- Redução de Ruído nos Logs: Com essa filtragem, reduzimos o número de requisições suspeitas nos logs, facilitando a identificação de ataques mais sofisticados.
- Dificulta Testes Rápidos: Atacantes iniciantes podem não perceber imediatamente que estão sendo bloqueados, o que os força a adotar métodos manuais, tornando o ataque mais demorado e perceptível.
Expression
(http.user_agent contains "wpscan")
or (http.user_agent contains "python")
or (http.user_agent contains "perl")
or (http.user_agent contains "nmap")
or (http.user_agent contains "sqlmap")
or (http.user_agent contains "fuzzer")
or (http.user_agent contains "crawler")
or (http.user_agent contains "scraper")
or (http.user_agent contains "masscan")
or (http.user_agent contains "nikto")
or (http.user_agent contains "acunetix")
or (http.user_agent contains "metasploit")
or (http.user_agent contains "curl")
or (http.user_agent contains "wget")
or (http.user_agent contains "hydra")
or (http.user_agent contains "go-http-client")
or (http.user_agent contains "java")
or (http.user_agent contains "ruby")
or (http.request.uri.path contains "/cdn-cgi/trace")
Lembre-se: Nenhuma regra de segurança é infalível, mas quanto mais camadas de proteção aplicamos, mais difícil se torna para um atacante explorar vulnerabilidades e você vai proteger seu WordPress.
Gostou do conteúdo? Então compartilhe com outros profissionais e ajude a disseminar boas práticas de segurança! Tem alguma sugestão ou dúvida? Entre em contato. Vamos juntos tornar a web mais segura!
Leandro Lucio
Especialista em Cyber Security & Digital Forensics, com mais de 15 anos de experiência. Certificado CEH, Pentester, Forense Digital. Atuo em testes de intrusão, análise forense, investigação de ameaças, resposta a incidentes e gestão de vulnerabilidades, ajudando a fortalecer a segurança e mitigar riscos cibernéticos. Compartilho conhecimento no meu blog:
🔗 peritolucio.com.br 🔗 Leandro Lucio | LinkedIn