Para proteger a página de login do WordPress, combine sete proteções nesta ordem: senhas longas e únicas, autenticação em dois fatores para as contas que publicam ou administram, um limite de tentativas de login, um endereço de login que não seja mais wp-login.php, XML-RPC desativado, nomes de usuário impossíveis de adivinhar e, por fim, um registro de logins. Cada uma bloqueia um ataque diferente; nenhuma basta sozinha. Este guia mostra a ordem de prioridade, as configurações para cada tipo de site e como evitar ficar trancado do lado de fora.
Já dedicamos um artigo a cada medida. Este é a visão geral: por onde começar, o que combinar e o que ignorar conforme o seu site.
Por que o login é a porta mais atacada
O formulário de login é idêntico em todos os sites WordPress, no mesmo endereço, e o WordPress não limita o número de tentativas por padrão. Um robô de força bruta não precisa pesquisar nada: ele envia pares de usuário e senha tirados de dicionários ou de vazamentos de dados, milhares de vezes por dia. Ele não mira o seu site em particular, mira todos os sites.
O login não tem uma porta só. Estas são as entradas que os robôs tentam e a defesa que fecha cada uma:
| Entrada | O que o robô tenta | Defesa principal |
|---|---|---|
wp-login.php | Tentativas de senha em série | Limite de tentativas, 2FA, endereço alterado |
xmlrpc.php | Centenas de tentativas por requisição (system.multicall) | Fechar o XML-RPC |
/?author=1, /wp-json/wp/v2/users | Coletar os nomes de usuário | Ocultar os autores |
| Senha esquecida | Inundar de e-mails, testar endereços | Limite, endereço alterado |
| Senhas de aplicativo | Contornar a 2FA pela API | Desativá-las se não forem usadas |
As sete medidas, por ordem de prioridade
A ordem segue a relação entre o esforço e o risco evitado. As duas primeiras protegem até contra um atacante que conhece o seu endereço de login e o seu nome de usuário; as seguintes reduzem o volume de ataques e o que os robôs descobrem sobre o seu site.
| Medida | Bloqueia | Esforço | Prioridade |
|---|---|---|---|
| Senhas longas e únicas | Dicionários, vazamentos | Baixo | 1 |
| Autenticação em dois fatores | Senha roubada ou adivinhada | Médio | 1 |
| Limite de tentativas | Força bruta repetida | Baixo | 2 |
| Endereço de login alterado | Robôs genéricos, ruído | Baixo | 2 |
| XML-RPC fechado | Tentativas agrupadas | Baixo | 2 |
| Nomes de usuário ocultos | Identificação das contas | Baixo | 3 |
| Registro de logins | Ataques que passam despercebidos | Baixo | 3 |

1. Senhas longas, únicas e nunca reutilizadas
O NIST, na recomendação SP 800-63B revisada em 2025, pede pelo menos 15 caracteres para uma senha usada sozinha, nenhuma regra de composição obrigatória e uma verificação contra listas de senhas já vazadas. O verdadeiro perigo é a reutilização: uma senha que vazou em outro lugar será testada no seu site, é o credential stuffing. Um gerenciador de senhas resolve o problema para toda a equipe. Desde o WordPress 6.8, as senhas são armazenadas com bcrypt, o que atrasa um atacante que roube o banco de dados, mas não protege uma senha fraca digitada no formulário.
2. Autenticação em dois fatores para as contas sensíveis
Com um código de uso único gerado por um aplicativo (TOTP), uma senha roubada não basta mais. O WordPress não traz esse recurso: você precisa de um plugin. Torne-a obrigatória para administradores e editores, gere códigos de backup e desconfie de códigos por SMS ou e-mail, mais fáceis de interceptar. Os métodos em detalhe, chaves de acesso incluídas, estão no nosso guia para escolher e implantar a autenticação em dois fatores.
3. Limitar as tentativas de login
Bloquear um endereço IP depois de algumas falhas deixa a força bruta lenta demais para dar certo. A configuração habitual: 5 falhas em 15 minutos, depois um bloqueio que aumenta em caso de reincidência. Duas armadilhas: atrás do Cloudflare ou de um proxy, o plugin precisa ler o endereço real do visitante, senão bloqueia todo mundo; e um bloqueio por nome de usuário em vez de por IP permite que qualquer pessoa trave a sua conta. Limites e falsos positivos estão explicados em como limitar as tentativas de login.
4. Mudar o endereço de login
Quando wp-login.php responde 404, os robôs genéricos passam para o próximo site: menos carga, logs legíveis. A medida não protege uma conta cuja senha vazou, ela reduz o volume. Para que funcione, /wp-admin/ não pode redirecionar visitantes anônimos para o novo endereço, e a página de login precisa ficar fora do cache. As armadilhas (WooCommerce, senha perdida, cache) estão em mudar o endereço do wp-login.php.
5. Fechar o XML-RPC e os acessos que você não usa
xmlrpc.php aceita centenas de tentativas de senha em uma única requisição. Se você não usa o Jetpack nem um aplicativo de publicação antigo, feche-o por completo (veja desativar o XML-RPC). Faça a mesma triagem com as senhas de aplicativo: elas abrem a API REST sem autenticação em dois fatores, úteis para uma integração, inúteis no resto dos casos.
6. Não entregar os nomes de usuário de bandeja
Por padrão, /?author=1 redireciona para um endereço que contém o nome de usuário do autor, a API REST lista os autores e a mensagem de erro do login informa se um nome de usuário existe. Um atacante que conhece o nome de usuário só precisa adivinhar a senha. Use um nome de usuário de login diferente do nome exibido e oculte os autores (veja impedir a enumeração de usuários).
7. Manter um registro dos logins
Um registro dos logins bem-sucedidos e com falha, com endereço IP e horário, aponta o que as outras medidas não barraram: um login de administrador às 3 da manhã a partir de um país desconhecido, uma conta criada sem motivo. Em um site pequeno, um alerta por e-mail a cada login de administrador é suficiente.
O caminho de uma tentativa de login
Cada camada detém um tipo de atacante diferente. A animação acompanha três visitantes: um robô genérico, um atacante que conhece o novo endereço e você.
Qual configuração para qual site?
Nem todas as medidas pesam igual em todos os sites. Comece pela linha que mais se parece com o seu:
| Tipo de site | Indispensável | Recomendado | Atenção a |
|---|---|---|---|
| Blog, um único administrador | Senha única, 2FA | Endereço alterado, XML-RPC fechado | Guardar os códigos de backup |
| Site de empresa, vários autores | 2FA obrigatória por função, limite | Registro de logins, autores ocultos | Contas de antigos prestadores de serviço |
| Loja WooCommerce | 2FA para a equipe, limite | Endereço de administração alterado | O login de clientes em “Minha conta” continua público |
| Agência, muitos sites | 2FA, limite, contas nominais | Mesma configuração exportada para todos os sites | Nenhum usuário compartilhado entre colegas |
Os erros que trancam você do lado de fora
- Esquecer o novo endereço: salve-o no seu gerenciador de senhas antes de ativá-lo e teste-o em uma janela anônima.
- Perder o celular da 2FA sem códigos de backup: imprima-os ou guarde-os no cofre de senhas da equipe.
- Bloquear a si mesmo com o limite de tentativas atrás de um proxy mal configurado: confira no registro se o endereço gravado é mesmo o seu.
- Colocar a página de login em cache: o token do formulário expira e ninguém mais consegue entrar. Exclua-a de qualquer regra de cache.
- Empilhar dois plugins que mudam o login ou limitam as tentativas: eles se contradizem. Um só por função.
Mantenha sempre uma porta de emergência: um acesso FTP ou SFTP ao wp-config.php. A maioria dos plugins de segurança oferece uma constante que os suspende enquanto você retoma o controle. Para ir além no servidor (proteger o wp-admin por endereço IP ou senha HTTP), veja proteger o wp-admin no nível do servidor.
O login com o WP Masquerade
O WP Masquerade cobre a maioria dessas medidas em uma única configuração, sem mexer nos arquivos do núcleo:
- Versão gratuita: endereço de login personalizado, testado antes da ativação;
wp-login.phpewp-admininvisíveis para visitantes não conectados; XML-RPC e pingbacks bloqueados; contagem dos robôs que procuram falhas. - Pro: limite de tentativas de login, autenticação em dois fatores por aplicativo com códigos de backup e obrigatoriedade por função, autores ocultos (
/?author=, API REST, sitemaps), registro de atividades dos administradores e alertas por e-mail. - Emergência: a linha
define('CMS_MASQUERADE_DISABLE', true);nowp-config.phpsuspende todas as transformações e devolve owp-login.php;define('CMP_DISABLE_2FA', true);suspende a autenticação em dois fatores do Pro.
O WP Masquerade não é um firewall, nem um antivírus, nem um backup: combine-o com uma cópia externa dos seus dados e, se necessário, com um firewall de aplicação web. O funcionamento da página oculta está descrito na página de login personalizada do WP Masquerade.
Para lembrar
- Senhas únicas e autenticação em dois fatores primeiro: são as únicas medidas que resistem a um atacante que conhece o seu endereço e o seu nome de usuário.
- Limite de tentativas, endereço alterado e XML-RPC fechado reduzem o volume de ataques e a carga do servidor.
- Não esconda o formulário de clientes de uma loja: limite-o.
- Um só plugin por função, página de login fora do cache, porta de emergência no
wp-config.php. - Um registro de logins revela o que as outras camadas não barraram.
Perguntas frequentes
Mudar o endereço de login basta para proteger o WordPress?
Não. Isso elimina a maioria dos robôs genéricos e alivia o servidor, mas um atacante que encontre o endereço ou tenha uma senha vazada entra do mesmo jeito. Combine a mudança com o limite de tentativas e a autenticação em dois fatores.
Quantas tentativas de login devo permitir?
Cinco falhas em quinze minutos, seguidas de um bloqueio do endereço IP que aumenta em caso de reincidência, servem para a maioria dos sites. Bloqueie por endereço IP, e não por nome de usuário, para que um desconhecido não consiga travar a sua conta.
Vale a pena colocar um CAPTCHA na página de login?
Ele freia robôs simples, mas incomoda os usuários e não barra nem uma senha roubada nem o XML-RPC. O limite de tentativas e a autenticação em dois fatores rendem mais com menos atrito; um CAPTCHA se justifica sobretudo em um formulário público muito visado.
A autenticação em dois fatores precisa ser obrigatória para todos os usuários?
Não necessariamente. Exija-a das funções que podem publicar, instalar plugins ou gerenciar contas (administrador, editor, gerente de loja). Para assinantes ou clientes, ofereça-a sem exigir.
O que fazer se eu ficar bloqueado fora do meu site?
Conecte-se por FTP ou SFTP e adicione no wp-config.php a constante de emergência do seu plugin, ou renomeie a pasta dele em wp-content/plugins. Com o WP Masquerade, define('CMS_MASQUERADE_DISABLE', true); devolve o wp-login.php. Remova a linha depois de resolver o problema.
Proteja sua página de login em poucos minutos
A versão gratuita muda o endereço de login, esconde wp-login.php e wp-admin e fecha o XML-RPC. O Pro adiciona o limite de tentativas, a autenticação em dois fatores por função, o registro de atividades e os alertas.
Fontes
- WordPress Developer Resources: Brute Force Attacks (link externo, abre em uma nova aba)
- WordPress Developer Resources: Hardening WordPress (link externo, abre em uma nova aba)
- OWASP: Authentication Cheat Sheet (link externo, abre em uma nova aba)
- NIST SP 800-63B: Authentication and Authenticator Management (link externo, abre em uma nova aba)


