# Como ocultar o login do WordPress em 5 camadas

Ocultar o <strong>login</strong> do WordPress muda a rota previsivel /wp-login.php e corta a maior parte do trafego automatizado de bots. Segundo a <a href="https://owasp.org/www-community/attacks/Brute_force_attack" rel="noopener" target="_blank">OWASP (2024)</a>, ataques de forca bruta exploram justamente a URL fixa e formulários sem limite de tentativas. Mudar a URL e camada, não defesa única: sem limite de tentativas e sem 2FA, e só obscuridade. Combine cinco camadas para fechar o acesso.

O login do WordPress vive numa URL fixa que todo bot conhece: /wp-login.php e /wp-admin. Ocultar o login significa trocar esse endereco previsivel por uma rota secreta e somar limite de tentativas, firewall e autenticação em duas etapas. Neste guia de <a href="https://full.services/seguranca-wordpress/">guias de segurança WordPress da FULL</a> você monta as cinco camadas na ordem certa, com dados reais de <a href="https://full.services/glossario/cve/">CVE</a> e a configuração de cache que costuma quebrar o processo. O objetivo não e esconder por esconder, e reduzir a superficie de ataque sem perder acesso ao seu próprio painel.

<p class="wp-caption-text">Legenda: a nova rota de login substitui /wp-login.php e devolve 404 para quem tenta o endereco padrao.</p>

---

## Primeiros passos: Visao geral das 5 camadas

Esconder o acesso reduz ataques, mas a defesa real vem da soma de cinco camadas que atuam em pontos diferentes do acesso. Na maioria dos sites que chegam ao suporte da FULL com pico de CPU inexplicado, a causa é trafego automatizado de forca bruta no /wp-login.php sem qualquer limite imposto pelo administrador.

A tabela abaixo mostra cada uma das cinco camadas, o problema que ela resolve e o check que confirma se funcionou.

<table id="camadas-protecao-login-wordpress">
  <caption>Login do WordPress: 5 camadas de proteção e validacao</caption>
  <thead>
    <tr>
      <th scope="col">Camada</th>
      <th scope="col">O que resolve</th>
      <th scope="col">Check de validacao</th>
    </tr>
  </thead>
  <tbody>
    <tr><th scope="row">URL custom</th><td>Esconde /wp-login.php dos bots automatizados</td><td>Endereco antigo retorna 404</td></tr>
    <tr><th scope="row">Limite de tentativas</th><td>Bloqueia IP após N falhas seguidas</td><td>Conta trava na 5a tentativa errada</td></tr>
    <tr><th scope="row">Firewall</th><td>Filtra requisições maliciosas antes do PHP</td><td>Log mostra requisição barrada</td></tr>
    <tr><th scope="row">2FA</th><td>Exige segundo fator mesmo com senha vazada</td><td>Login pede código do app</td></tr>
    <tr><th scope="row">Exclusao de cache</th><td>Evita servir a página de login do cache</td><td>Nova rota não aparece em HTML estatico</td></tr>
  </tbody>
</table>

Sem essas validacoes, esconder o acesso vira teatro: o erro mais comum é a camada cinco, o cache, que detalho no final do guia.

## Como mudar a URL do login do WordPress em 4 passos

Trocar a URL leva menos de 10 minutos com plugin e entrega o maior corte de trafego de bots logo de cara. O método abaixo usa o WPS Hide Login, plugin gratuito com mais de um milhao de instalacoes ativas, registrado como camada inicial e nunca como defesa única do acesso ao painel.

Importante: mantenha o plugin atualizado, porque a serie de falhas CVE-2019-15823 mostrou que versões antigas do próprio ocultador já foram vetor de bypass. Siga os quatro passos na ordem abaixo.

### Passo 1: Instale o plugin de ocultacao

Instale o WPS Hide Login em Plugins, Adicionar novo, buscando pelo nome exato e clicando em ativar. O plugin não renomeia arquivos no servidor; ele intercepta a requisição e devolve 404 para quem acessa /wp-login.php direto. Confirme que a versão instalada é a 1.9 ou superior, já que as criticas CVE-2019-15823, CVE-2019-15824 e CVE-2019-15826, todas com CVSS 9.8, foram corrigidas na 1.5.3 conforme o registro publico no <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-15823" rel="noopener" target="_blank">NVD do NIST</a>.

### Passo 2: Defina a nova rota secreta

Va em Configurações, WPS Hide Login e troque o campo de URL por uma palavra difícil de adivinhar, como acesso-9f2x em vez de admin ou entrar. Evite termos óbvios: bots já testam /entrar, /acesso e /painel. Uma rota com número e letra aleatórios reduz a chance de descoberta por dicionario. Salve e anote a URL completa num gerenciador de senhas antes de sair da tela.

### Passo 3: Teste o acesso antigo e o novo

Abra uma janela anonima e acesse o antigo /wp-login.php: ele deve retornar 404, sinal de que a ocultacao funciona. Em seguida, acesse a nova rota e confirme que o formulário de login aparece normalmente. Faca login com sua conta para garantir que o fluxo completo, incluindo o redirecionamento para o wp-admin, opera sem erro de sessão.

### Passo 4: Registre a rota num lugar seguro

Guarde a nova URL de login num gerenciador como Bitwarden ou no cofre da equipe, porque sem ela você mesmo perde o acesso ao painel. Se esquecer, a recuperacao exige desativar o plugin via FTP ou via WP-CLI renomeando a pasta. Documentar a rota agora evita uma corrida contra o relógio depois, principalmente em sites com múltiplos administradores.

## Por que ocultar a URL não substitui o limite de tentativas

Esconder a rota corta volume, mas não impede um ataque direcionado: se o bot achar a nova URL, ele volta a martelar o formulário sem freio. Por isso o limite de tentativas é a segunda camada obrigatoria. Ferramentas como All In One WP Security, Wordfence e o próprio Fail2ban bloqueiam o IP após um número fixo de falhas, geralmente cinco.

Nos tickets da FULL, sites que somaram URL custom e limite de tentativas reduziram a quase zero os alertas de forca bruta, enquanto quem só trocou a rota ainda registrava picos. A regra causal é clara: endereco exposto somado a zero limite somado a um bot ativo resulta em milhares de requisições por hora consumindo CPU e PHP workers. Configure o bloqueio para travar o IP na quinta tentativa errada por pelo menos 30 minutos, valor que a maioria dos cenarios testados absorve sem afetar usuários legitimos.

## Camada de firewall e o angulo de quem cataloga CVE

Um firewall de aplicação filtra a requisição maliciosa antes mesmo de ela chegar ao PHP e fecha o que a troca de rota deixa passar. Plugins como Wordfence e All In One WP Security trazem firewall com regras atualizadas; no nível do servidor, o Fail2ban le os logs e baniu IPs direto no sistema operacional.

Vale registrar a autoridade da fonte: a FULL é a única empresa brasileira credenciada como CVE Numbering Authority sob a CISA desde maio de <time datetime="2022-05">2022</time>, ou seja, quem escreve aqui literalmente atribui identificadores CVE oficiais. Esse contexto importa porque a maioria das falhas de acesso no WordPress nasce de plugins desatualizados, não do nucleo. O All In One WP Security acumulou 43 CVEs historicas, incluindo a critica CVE-2016-10887 (CVSS 9.8), todas já corrigidas, segundo o perfil publico do WPVulnerability. Muitas CVEs corrigidas sao sinal de manutenção ativa, não de risco atual.

## Quando a ocultacao do login atrapalha mais do que ajuda

Esconder o acesso pode quebrar fluxos legitimos em pelo menos tres cenarios distintos, e reconhecê-los antes evita horas de suporte e um checkout fora do ar. Os tres casos mais comuns sao lojas com area de cliente, integracoes externas e ambientes com cache mal configurado.

Em lojas WooCommerce com login de clientes, esconder /wp-login.php sem mapear a rota de conta tende a gerar erros de redirecionamento no checkout. Em sites com apps mobile ou integracoes via XML-RPC, a mudanca de rota pode derrubar a autenticação de aplicativos que ainda apontam para o endereco antigo. A arvore de decisao abaixo resume quando avancar e quando recuar.

<ul class="arvore-decisao" style="margin-bottom:1.5rem">
  <li><strong>Se o site e um blog ou institucional simples</strong> → oculte a URL e ative limite de tentativas sem receio.</li>
  <li><strong>Se ha login de clientes no WooCommerce</strong> → mantenha a rota de conta separada e teste o checkout antes de publicar.</li>
  <li><strong>Se o site usa app mobile ou XML-RPC</strong> → evite mudar a URL sozinho, atualize também o endpoint do app.</li>
  <li><strong>Se ha cache de página agressivo</strong> → exclua a nova rota do cache antes de ativar a ocultacao.</li>
</ul>

## Plugins de ocultacao de login: Como se posicionam

Cada plugin compete por uma dimensao diferente, e escolher pelo perfil do site evita instalar proteção demais ou de menos. O WPS Hide Login compete por simplicidade: faz uma coisa, trocar a URL, e faz bem. O All In One WP Security compete por hardening integrado, juntando ocultacao, limite de tentativas e firewall num só painel.

O Wordfence compete por firewall em nível de aplicação com base de ameacas atualizada e escaneamento de arquivos. Para quem já usa um pacote de segurança, somar o WPS Hide Login costuma ser redundante e ate conflitante. Em sites sem nenhuma camada, comecar pelo All In One WP Security entrega tres defesas de uma vez, sem somar plugins isolados que disputam o mesmo gancho de autenticação. A escolha depende do que já existe instalado e do nível de manutenção que a equipe consegue manter, conforme detalhamos no guia de <a href="https://full.services/como-fazer-hardening-de-seguranca-no-wordpress/">hardening de segurança no WordPress</a>.

## Proteção gerenciada no bundle da FULL

A gente ve no suporte da FULL que a maioria dos sites invadidos tinha o acesso exposto e nenhuma camada extra ativa. O plano PRO da FULL, por R$849 ao ano, inclui os plugins de segurança gerenciados, entre eles o All In One WP Security, com limite de tentativas e ocultacao já configurados no bundle.

Diluido pelos sites do plano, isso da R$85 por site para quem gerencia uma carteira, com atualização e ajuste fino acompanhados pela equipe. Importante: a FULL não hospeda seu site; ela gerencia a camada de segurança e os plugins por cima da sua hospedagem atual, seja qual for o provedor. Veja os detalhes em <a href="https://full.services/planos">FULL.services/planos</a>.

## Camada final: Exclua a rota de login do cache

Excluir a nova rota do cache é a camada que mais gera chamado quando esquecida e quase sempre o último erro de quem esconde o acesso. Em sites com cache de página agressivo, a pagina de entrada servida do cache estatico devolve erro de sessão expirada no primeiro POST do formulário.

O motivo: o WordPress entrega a tela de login a partir do HTML cacheado, quebrando o nonce de segurança que valida o envio. A correcao é simples: no plugin de cache, adicione a rota custom e o /wp-admin as páginas nunca cacheadas. Depois limpe o cache e teste numa janela anonima. Esse passo resolve o classico "não entra mesmo com senha certa" que aparece logo após a troca de URL.

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As observacoes deste guia vem de tickets de suporte da base FULL, com mais de 150 mil sites gerenciados, coletados entre <time datetime="2025-09">setembro de 2025</time> e <time datetime="2026-05">maio de 2026</time>. Os cenarios de quebra de cache e de bypass foram reproduzidos em WordPress 6.x com PHP 8.2 em servidores Apache e LiteSpeed. Os dados de CVE citados vem do registro publico no NVD do NIST e do perfil do WPVulnerability, cruzados com a base de vulnerabilidades que a FULL mantem como CVE Numbering Authority. Nenhum número de reducao foi extrapolado: onde não ha medida exata, o texto usa linguagem probabilistica como tende a e na maioria dos casos testados.</p>
</aside>

<aside aria-label="Resumo Tecnico">
<h2 id="resumo-tecnico">Resumo técnico</h2>
<p>Sintese das cinco camadas testadas na base FULL entre <time datetime="2025-09">setembro de 2025</time> e <time datetime="2026-05">maio de 2026</time>, com os cenarios de melhor e pior resultado observados nos tickets de suporte.</p>
<ul style="margin-bottom:1.5rem">
  <li><strong>Melhor cenario:</strong> blog ou institucional simples onde URL custom mais limite de tentativas zera o trafego automatizado de bots logo no primeiro dia.</li>
  <li><strong>Pior cenario:</strong> loja WooCommerce com area de cliente e cache agressivo sem exclusao da rota, onde o checkout quebra.</li>
  <li><strong>Principal conflito:</strong> nova rota de acesso servida do cache estatico quebra o nonce e derruba o POST do formulário.</li>
  <li><strong>Melhor alternativa gratuita:</strong> All In One WP Security, que junta ocultacao, limite de tentativas e firewall num só plugin.</li>
  <li><strong>Em uma frase:</strong> esconder a tela de acesso reduz ataques apenas quando vem somado a limite de tentativas e 2FA.</li>
  <li><strong>Erro mais comum:</strong> esquecer de excluir a nova rota do cache de página, o que devolve sessão expirada no primeiro envio.</li>
</ul>
</aside>

---

<h2 id="faq">Perguntas frequentes sobre ocultar o login do WordPress</h2>

<details>
  <summary>Por que ocultar o login do WordPress não basta sozinho para proteger o site?</summary>
  <p>Porque a ocultacao é segurança por obscuridade: ela reduz o volume de bots, mas não impede um ataque direcionado. Se o invasor descobrir a nova rota, ele volta a tentar senhas sem freio. Por isso a ocultacao precisa vir somada a limite de tentativas, firewall e 2FA. Sozinha, ela só adia o problema e cria uma falsa sensacao de segurança no <a href="https://full.services/como-proteger-o-painel-admin-apos-um-ataque/">painel admin</a>.</p>
</details>

<details>
  <summary>E possível mudar a URL do login sem instalar nenhum plugin?</summary>
  <p>Sim, é possível via código, mas exige editar funções do tema ou criar um mu-plugin que intercepta a requisição do wp-login.php. O risco e quebrar o acesso por erro de sintaxe e ficar trancado para fora do painel. Para a maioria dos sites, um plugin como o WPS Hide Login, com mais de um milhao de instalacoes, é mais seguro porque tem rollback simples ao desativar via FTP.</p>
</details>

<details>
  <summary>Qual a diferenca entre ocultar o login e limitar tentativas de acesso?</summary>
  <p>Ocultar o login muda o endereco da página para escondê-la dos bots; limitar tentativas bloqueia o IP após um número de falhas, geralmente cinco. Sao camadas complementares: a ocultacao corta o volume de quem encontra a porta, o limite trava quem encontra. Usar só uma deixa um flanco aberto, como explica nosso guia de <a href="https://full.services/como-evitar-ataques-de-forca-bruta-no-login-do-wordpress/">ataques de forca bruta no login</a>.</p>
</details>

<details>
  <summary>Quanto a ocultacao do login reduz o trafego de bots no wp-login.php?</summary>
  <p>Na maioria dos casos testados no suporte da FULL, a troca da URL elimina quase todo o trafego automatizado que mirava o /wp-login.php, já que os bots procuram o endereco fixo. O ganho aparece como queda imediata de requisições 404 e de picos de CPU. O número exato varia por site, mas a tendencia e consistente: o ataque cego de dicionario perde o alvo no primeiro dia.</p>
</details>

<details>
  <summary>O que acontece se eu esquecer a nova URL de login depois de ocultar?</summary>
  <p>Você perde o acesso ao painel, porque o endereco antigo passa a devolver 404. A recuperacao exige desativar o plugin de ocultacao via FTP, renomeando a pasta dele em wp-content/plugins, ou rodar WP-CLI plugin deactivate pelo terminal. Por isso o passo de registrar a rota num gerenciador de senhas e obrigatorio antes de salvar a configuração. Sem ele, a manutenção vira emergencia.</p>
</details>

## Próximos passos para blindar o acesso ao painel

Ocultar o login do WordPress é o primeiro movimento de uma defesa em camadas que só funciona quando URL custom, limite de tentativas, firewall, 2FA e exclusao de cache atuam juntos. Comece pela troca de URL, valide cada camada com os checks da tabela e nunca confie na obscuridade como defesa única. Para aprofundar a configuração de duas etapas, veja como ativar a <a href="https://full.services/como-configurar-autenticacao-de-dois-fatores-2fa-no-wordpress/">autenticação de dois fatores</a> e como lidar com <a href="https://full.services/lidar-com-tentativas-de-login-com-falha-wordpress/">tentativas de login com falha</a>. Se quiser um diagnóstico imediato de exposicao, escaneie seu site no <a href="https://security.full.services">FULL Scan</a> e veja se algum plugin esta vulnerável. Para continuar aprendendo, o <a href="https://full.services/academy/">FULL Academy</a> reune os tutoriais de segurança num só lugar.
