# Limitar tentativas de login WordPress: Guia técnico

<strong>Limitar tentativas de login WordPress</strong> bloqueia o IP após poucas falhas e neutraliza o ataque de força bruta ao wp-login.PHP. Segundo a <a href="https://wpscan.com/statistics/" rel="noopener" target="_blank">WPScan (2025)</a>, o login é o vetor de acesso não autorizado mais explorado. Um limite de 3 a 5 tentativas com lockout de 20 minutos corta quase todo tráfego automatizado. Configure isso antes de qualquer outra defesa de acesso.

Limitar tentativas de login WordPress é a prática de bloquear temporariamente um endereço IP depois de um número fixo de senhas erradas, fechando a porta que bots de força bruta usam para adivinhar credenciais. O WordPress não traz esse limite de fábrica: por padrão, o wp-login.PHP aceita tentativas infinitas, e é por isso que ele é o alvo mais batido em qualquer site. Aqui você vai configurar o bloqueio passo a passo, entender por que ele cega bots sem travar o admin legítimo, e ver onde ele não basta. Para o panorama completo de proteção, consulte os <a href="https://full.services/seguranca-wordpress/">guias de segurança WordPress da FULL</a>.

---

## Primeiros passos: Como o limite de login funciona

Limitar login funciona registrando cada falha de autenticação por IP e bloqueando esse IP por alguns minutos quando ele passa do teto, em geral 3 a 5 tentativas. Um bot que dispara 10 mil senhas por hora trava na quinta tentativa e perde 20 minutos por ciclo, o que torna o ataque inviável na prática.

Na base de 150 mil sites monitorados pela FULL, a gente vê no suporte que ativar esse limite derruba a maioria dos alertas de login suspeito logo no primeiro dia. A tabela abaixo resume as três peças que você vai ajustar.

<table id="config-limite-login-wordpress">
  <caption>Limitar login WordPress: parâmetros, valor recomendado e efeito</caption>
  <thead>
    <tr>
      <th scope="col">Parâmetro</th>
      <th scope="col">Valor recomendado</th>
      <th scope="col">Efeito na defesa</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Tentativas permitidas</th>
      <td>3 a 5 por IP</td>
      <td>Corta o ataque automatizado sem punir erro humano de digitação</td>
    </tr>
    <tr>
      <th scope="row">Tempo de lockout</th>
      <td>20 minutos</td>
      <td>Torna a força bruta lenta demais para valer a pena</td>
    </tr>
    <tr>
      <th scope="row">Lockouts até bloqueio longo</th>
      <td>4 lockouts em 24h igual a 24 horas</td>
      <td>Bane reincidentes sem esforço manual do admin</td>
    </tr>
  </tbody>
</table>

Esses três números resolvem o caso comum. O que muda entre os plugins é onde o bloqueio acontece e se ele enxerga o IP real do visitante, ponto que detalhamos adiante.

<p class="wp-caption-text">Legenda: o teto de tentativas e o tempo de lockout são os dois campos que definem a força do bloqueio.</p>

## Pré-requisitos: O que checar antes de configurar

Antes de limitar o login, confirme três coisas para não se trancar para fora do próprio site. Garanta acesso ao painel por uma conta administrador ativa, anote o IP fixo do seu escritório e tenha um <a href="https://full.services/backup-wordpress-automatico/">backup automático do site</a> recente, porque qualquer mexida em autenticação merece ponto de retorno.

A terceira checagem é a mais esquecida: saiba como o seu site recebe tráfego. Se ele está atrás de um CDN como o Cloudflare, o WordPress pode enxergar o IP do CDN em vez do visitante real, e aí o bloqueio por IP erra o alvo. Em <time datetime="2026-01">janeiro</time> de 2026 esse foi o motivo mais comum de lockout falho que chegou ao suporte. Resolver o IP real exige que o plugin leia o cabeçalho correto, opção que plugins sérios oferecem de forma explícita e que é obrigatória em qualquer site por trás de proxy.

## Passo a passo: Configurar o limit login attempts reloaded

O Limit Login Attempts Reloaded é o caminho mais direto: instalação em menos de 2 minutos e teto de tentativas já ativo no padrão. Ele é o plugin de limite de login mais instalado do repositório oficial e mantém o foco em uma função só, o que reduz a superfície de ataque.

Os três passos abaixo cobrem do zero ao bloqueio ativo, com o ajuste de IP real que a maioria dos tutoriais ignora. Cada passo leva menos de um minuto em um site WordPress padrão na versão 6.x.

### Passo 1: Instale e ative o plugin

Vá em Plugins, Adicionar novo, busque por "Limit Login Attempts Reloaded" e clique em instalar e ativar. O plugin começa a contar falhas de login imediatamente, sem configuração extra, usando 4 tentativas e 20 minutos de lockout como padrão. Confirme na lista de plugins ativos que a versão instalada é a 2.25.27 ou superior, faixa que já corrige as falhas históricas do plugin discutidas mais adiante.

### Passo 2: Ajuste o teto de tentativas e o lockout

Abra Configurações, Limit Login Attempts e reduza "tentativas permitidas" para 3 e "minutos de lockout" para 20. Defina 4 lockouts em 24 horas para acionar o bloqueio longo de um dia. Esses valores cortam força bruta sem punir o usuário que errou a senha duas vezes. Salve e teste digitando uma senha errada de propósito para ver o contador descer.

### Passo 3: Ative o IP real atrás de proxy

Na aba de configurações de confiança de IP, selecione a opção que lê o IP do visitante real quando o site está atrás de Cloudflare ou outro proxy reverso. Sem esse ajuste, todos os visitantes parecem vir do mesmo IP do CDN e um único bot bloqueado derruba o login para todo mundo. Essa é a causa número um de bloqueio em massa acidental que chega ao suporte da FULL.

## Erros comuns que travam o admin legítimo

O erro mais frequente é o lockout cego: sem ler o IP real atrás de um CDN, o plugin bloqueia o IP compartilhado do Cloudflare e tranca usuários legítimos junto com o bot. O segundo é confiar só no limite de login e esquecer que ele não cobre o XML-RPC nem a REST API, que aceitam autenticação por caminhos próprios.

O Limit Login Attempts Reloaded com proteção de IP desativada, em servidor atrás de Cloudflare, gera bloqueio de administradores reais sem mensagem de erro clara, o que costuma ser diagnosticado como "site fora do ar" por engano. A correção é dupla: ative a leitura de IP real e desabilite o XML-RPC se você não usa o app móvel. Vale ainda separar o bloqueio por aplicação, feito pelo plugin no PHP, do bloqueio no servidor, feito por ferramentas como o fail2ban lendo logs do Nginx, que para o ataque antes de o PHP carregar.

## Camada gerenciada: Limite de login sem manutenção manual

No plano PRO da FULL, por R$849 ao ano, o limite de tentativas de login vem dentro da camada de segurança gerenciada junto com o Wordfence e o All in One Security, sem você precisar instalar e calibrar plugin por plugin. Esse plano cobre 10 sites, o que dá R$85 por site ao ano para ter firewall, regras de login e monitoramento de CVE rodando de fábrica.

A gente vê no suporte que a maioria dos sites invadidos tinha o limite desativado ou mal configurado, e centralizar a defesa numa camada única elimina esse erro humano de configuração. O bloqueio de login já chega calibrado com leitura de IP real e bane reincidentes sem você tocar em nada. Conheça os planos em <a href="https://full.services/planos">FULL.services/planos</a> ou veja a página do <a href="https://full.services/all-in-one-security">All in One Security</a> incluído no bundle.

## Vulnerabilidades reais: O que os cves mostram

Os próprios plugins de segurança já tiveram falhas sérias, e por isso manter a versão atualizada importa tanto quanto ativar o limite. O caso mais grave foi o <a href="https://nvd.nist.gov/vuln/detail/CVE-2020-35590" rel="noopener" target="_blank">CVE-2020-35590</a>, com CVSS 9.8 (crítico), no Limit Login Attempts Reloaded: uma falha que permitia ignorar o próprio limite de tentativas, corrigida na versão 2.17.4.

<table id="cves-plugins-login-wordpress">
  <caption>CVEs reais em plugins de login: severidade, versão afetada e patch</caption>
  <thead>
    <tr>
      <th scope="col">CVE</th>
      <th scope="col">CVSS e tipo</th>
      <th scope="col">Versão afetada e patch</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">CVE-2020-35590</th>
      <td>9.8 crítico, bypass do limite de login</td>
      <td>Afeta abaixo da 2.17.4, corrigido na 2.17.4</td>
    </tr>
    <tr>
      <th scope="row">CVE-2023-6934</th>
      <td>5.4 médio, Cross-Site Scripting</td>
      <td>Afeta abaixo da 2.25.27, corrigido na 2.25.27</td>
    </tr>
  </tbody>
</table>

Mais recente, o <a href="https://nvd.nist.gov/vuln/detail/CVE-2023-6934" rel="noopener" target="_blank">CVE-2023-6934</a>, com CVSS 5.4, expunha o site a Cross-Site Scripting e foi fechado na 2.25.27. Segundo o perfil público do WPVulnerability, todas essas falhas já estão corrigidas: o risco hoje é zero para quem está atualizado, e o histórico longo de patches é sinal de manutenção ativa, não de plugin frágil. A FULL fala disso com autoridade por ser a única empresa brasileira credenciada como CNA, a CVE Numbering Authority sob a CISA desde <time datetime="2022-05">maio de 2022</time>, autorizada a atribuir IDs CVE oficiais. Para checar se algum plugin do seu site está vulnerável agora, use o <a href="https://security.full.services">FULL Scan</a> gratuito ou consulte o <a href="https://security.full.services/vulnerabilidades-no-wordpress">repositório de vulnerabilidades</a>.

## Como validar que o bloqueio está funcionando

Validar o limite de login leva 2 minutos: erre a senha de propósito até passar do teto e confirme que a tela trava com a mensagem de bloqueio e o contador regressivo. Faça esse teste de uma rede diferente, como o 4G do celular, para não bloquear o IP do seu próprio escritório.

Em seguida, abra os logs do plugin e verifique se cada falha aparece com o IP correto, e não com o IP do CDN, sinal de que a leitura de IP real está ativa. Se o lockout disparar e o IP registrado for o real, a defesa está de pé. Para um diagnóstico mais amplo, vale combinar com o guia de <a href="https://full.services/wordpress-brute-force/">defesa contra força bruta no WordPress</a> e a <a href="https://full.services/two-factor-authentication-wordpress/">autenticação de dois fatores</a>.

Bloqueio por <a href="https://full.services/glossario/brute-force/">força bruta</a> bem configurado, somado a um <a href="https://full.services/glossario/firewall-wordpress/">firewall</a>, fecha o ciclo de proteção do acesso.

<h2 id="faq">Perguntas frequentes sobre limitar tentativas de login WordPress</h2>

<details>
  <summary>É possível limitar tentativas de login sem instalar plugin?</summary>
  <p>Sim. Você pode limitar tentativas de login sem plugin usando o fail2ban no servidor, que lê os logs do Nginx ou Apache e bane o IP no firewall após X falhas. Essa via para o ataque antes de o PHP carregar e suporta volumes maiores, mas exige acesso SSH e configuração manual de regras. Para a maioria dos sites em hospedagem compartilhada, um plugin como o Limit Login Attempts Reloaded é mais prático e igualmente eficaz.</p>
</details>

<details>
  <summary>Por que o WordPress não limita tentativas de login por padrão?</summary>
  <p>Porque o core do WordPress prioriza compatibilidade e não assume o papel de plugin de segurança. O wp-login.PHP aceita tentativas infinitas de fábrica desde sempre, deixando a defesa a cargo do administrador. É essa lacuna que torna o login o vetor de força bruta mais explorado, segundo a WPScan. Ativar um limite de 3 a 5 tentativas fecha a brecha em menos de 5 minutos.</p>
</details>

<details>
  <summary>Qual o número ideal de tentativas antes do bloqueio?</summary>
  <p>O intervalo de 3 a 5 tentativas é o equilíbrio recomendado. Abaixo de 3, um usuário legítimo que erra a senha duas vezes já fica trancado; acima de 5, o bot ganha margem para testar mais senhas por ciclo. Combine 3 tentativas com 20 minutos de lockout e bloqueio de 24 horas após 4 lockouts no dia para cortar reincidentes sem atrito humano.</p>
</details>

<details>
  <summary>Como o limite de login se comporta atrás do Cloudflare?</summary>
  <p>Atrás do Cloudflare, o WordPress vê o IP do CDN, não o do visitante, então o plugin precisa ler o IP real pelo cabeçalho correto. Sem esse ajuste, um único bot bloqueado derruba o login para todos os visitantes que passam pelo mesmo IP do CDN. Ative a opção de confiança de IP no Limit Login Attempts Reloaded e teste pelos logs se o IP registrado é o real.</p>
</details>

<details>
  <summary>O limite de login protege o XML-RPC e a REST API?</summary>
  <p>Não por padrão. O limite de login cobre o wp-login.PHP, mas o XML-RPC e a REST API têm caminhos de autenticação próprios que bots usam para contornar o bloqueio. Desabilite o XML-RPC se você não usa o app móvel do WordPress e combine o limite com um firewall como o Wordfence, que filtra esses endpoints. Essa camada dupla é o que cobre o acesso por inteiro.</p>
</details>

## Próximos passos para blindar o login do seu site

Limitar tentativas de login WordPress é a defesa de maior retorno por minuto investido: 5 minutos de configuração que neutralizam o ataque mais comum contra o seu site. Ative o teto de 3 a 5 tentativas, garanta a leitura do IP real atrás de CDN, mantenha o plugin atualizado para evitar falhas como o CVE-2020-35590 e combine o bloqueio com dois fatores e firewall. Para continuar aprendendo, o <a href="https://full.services/academy/">FULL Academy</a> reúne os tutoriais, guias e reviews de segurança em um só lugar, e o <a href="https://full.services/guias/guia-de-seguranca-para-wordpress">guia de segurança para WordPress</a> encadeia cada etapa na ordem certa.
