Qualquer instalação WordPress exposta publicamente recebe tentativas de login automáticas. Bots varrem a Internet à procura de wp-admin e wp-login.php, testando combinações de credenciais em massa. A maioria destas tentativas é facilmente bloqueada — mas requer configuração activa. Este guia cobre as medidas mais eficazes, da mais simples à mais robusta.
Porque wp-admin é um alvo constante
O WordPress alimenta mais de 40% da web. A localização padrão do painel de administração (/wp-admin e /wp-login.php) é conhecida por todos os atacantes. Scripts automatizados testam milhares de combinações de username e password por hora sem intervenção humana.
O objectivo não é necessariamente roubar dados — muitas vezes é instalar malware para enviar spam, injectar conteúdo para SEO black hat, ou usar o servidor como ponto de ataque para outros sistemas. Mesmo sem sucesso, ataques brute force intensos consomem recursos do servidor e podem degradar a performance do site.
Medida 1: Limitar tentativas de login (essencial)
Por defeito, o WordPress permite tentativas de login ilimitadas. Limitar a 3–5 tentativas antes de bloquear o IP por X minutos elimina a maioria dos ataques automatizados.
Plugins recomendados:
- Limit Login Attempts Reloaded — gratuito, leve, sem dependências. Define tentativas máximas e duração do bloqueio. Para a maioria dos sites, é suficiente.
- Wordfence Security — inclui limitação de logins com regras mais avançadas (bloqueio por país, lista branca de IPs) como parte do pacote de segurança completo.
Medida 2: Autenticação de dois fatores (muito eficaz)
O 2FA elimina praticamente os ataques brute force — mesmo que o atacante descubra a password correcta, não consegue aceder sem o segundo factor. É a medida com melhor relação eficácia/esforço de implementação.
Para detalhes de implementação em contexto de agência, ver o artigo sobre WordPress 2FA em sites de clientes.
Medida 3: Bloquear wp-login.php por IP no .htaccess
Se apenas a agência precisa de aceder ao wp-admin, bloquear o acesso a todos os IPs excepto os da equipa é uma medida muito eficaz. Adicionar ao .htaccess:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 203.0.113.1
Allow from 203.0.113.2
</Files>
Substituir os IPs pelos IPs fixos da equipa. Atenção: se a equipa usa IPs dinâmicos (maioria dos acessos residenciais), este método requer gestão activa ou uma VPN com IP fixo.
Medida 4: Alterar o URL de login
Mover o login para um URL não-padrão (/acesso-equipa em vez de /wp-login.php) elimina os ataques automatizados que dependem do URL padrão. Não é uma medida de segurança robusta por si só — é security through obscurity — mas reduz o volume de tentativas e logs.
Plugin: WPS Hide Login — leve, gratuito, sem conflitos conhecidos com plugins de segurança.
Atenção crítica: registar o novo URL antes de activar o plugin. Se o URL for esquecido, o acesso ao painel fica bloqueado e a recuperação requer acesso directo à base de dados.
Medida 5: Protecção HTTP Authentication no wp-admin
Adicionar uma camada de autenticação HTTP (password de servidor) antes do formulário de login do WordPress cria uma dupla barreira. Um atacante precisaria de ultrapassar a autenticação HTTP e depois a autenticação WordPress.
Configurar via cPanel (Protecção de Directórios com Password) ou via .htaccess com htpasswd. Esta medida pode causar problemas com o WP Cron e algumas APIs — testar em staging antes de aplicar em produção.
Medida 6: Cloudflare com regras de rate limiting
O Cloudflare gratuito não inclui rate limiting avançado, mas o plano Pro permite criar regras que bloqueiam automaticamente IPs que façam mais de X pedidos a /wp-login.php por minuto. Para sites com mais tráfego, o Cloudflare é uma das defesas mais eficazes a nível de infraestrutura.
A combinação recomendada para sites de clientes
Para a maioria dos sites de clientes, a combinação ideal é:
- Limit Login Attempts Reloaded (ou Wordfence) — impede brute force básico
- 2FA para utilizadores admin — elimina o risco mesmo em caso de password comprometida
- WPS Hide Login — reduz volume de tentativas nos logs
- Username não óbvio — evitar "admin", "administrator", ou o nome do site
Estas medidas eliminam mais de 99% dos vectores de ataque brute force sem impacto na experiência do cliente. Para um conjunto completo de medidas de hardening WordPress, ver o artigo sobre 10 medidas de hardening para sites de clientes.
Quer que auditemos a segurança dos sites dos seus clientes?
O nosso serviço de suporte WordPress inclui auditorias de segurança e implementação de medidas preventivas como as descritas neste artigo.
Auditar segurança WordPress