Ilustração sobre ataque força bruta WordPress e bloqueio de tentativas de login

Ataque força bruta WordPress: blindar vários sites

Resposta rápida desse conteúdo

Ataque força bruta: o que fazer primeiro

8 minutos de leitura

Índice de conteúdo

O painel começa a responder devagar, a hospedagem manda um e-mail sobre uso de CPU e, quando você abre o log, encontra centenas de POST /wp-login.php em poucos minutos. Esse é o padrão mais comum de ataque força bruta WordPress: alguém testando usuário e senha sem parar, muitas vezes de vários IPs ao mesmo tempo. Trocar a senha do admin, nesse cenário, não resolve nada, porque o ataque não depende de uma senha específica. Ele depende de tentar milhares de combinações até uma funcionar.

O que este artigo entrega é diferente de hardening genérico. Aqui o foco é o ataque em si: como identificar o padrão no log, por que a receita comum de plugin de segurança falha em ataque distribuído e qual ordem de bloqueio funciona quando você administra vários sites ao mesmo tempo.

Como reconhecer um ataque força bruta WordPress no log

Antes de bloquear qualquer coisa, você precisa confirmar que é ataque e não tráfego normal. Os sinais costumam aparecer em três lugares: log de acesso do servidor, log do plugin de segurança e métricas de recursos da hospedagem.

No log de acesso, o padrão é rajada. Você vê linhas repetidas de POST /wp-login.php ou POST /xmlrpc.php em sequência, com o mesmo user-agent ou com user-agents vazios. Em ataque distribuído, os IPs mudam a cada poucas requisições, o que dificulta o bloqueio por lista. Em ataque simples, o mesmo IP insiste por horas.

Sinal O que indica Como confirmar
Rajada de POST em wp-login.php Tentativa direta de login Contar requisições por minuto no log
POST em xmlrpc.php Ataque via API, muitas vezes com system.multicall Verificar se xmlrpc está ativo e se aparece no log
Muitos IPs diferentes Ataque distribuído Listar IPs únicos por hora
Usuários testados em sequência Enumeração de logins Ver nomes como admin, teste, suporte no log
Uso de CPU e conexões ao banco subindo Sobrecarga por tentativas Comparar com linha de base da hospedagem

Se o log mostra POST em xmlrpc.php, o ataque pode estar usando a API para testar várias credenciais em uma única requisição. Isso multiplica o volume e explica por que o banco cai antes de você ver milhares de linhas no log.

Por que só trocar a senha não resolve

Trocar a senha do administrador é a primeira coisa que muita gente faz, e é uma reação compreensível. O problema é que o ataque não depende da senha atual. Ele testa combinações até acertar. Se o atacante ainda não acertou, trocar a senha apenas reinicia o relógio. Se ele já acertou, trocar a senha pode expulsá-lo, mas não fecha o caminho que ele usou.

Além disso, em muitos casos o ataque não busca entrar no painel. Ele busca consumir recursos. Um volume alto de tentativas derruba o banco de dados, aumenta o tempo de resposta e, em hospedagem compartilhada, pode levar à suspensão da conta. Nesse cenário, trocar a senha não reduz uma única requisição.

Por isso, a ordem correta é: primeiro bloquear a origem do ataque, depois revisar credenciais e usuários, e por fim endurecer o login. Se você inverter a ordem, o site continua caindo enquanto você mexe em senha.

Ordem de bloqueio que funciona em vários sites

Quando você administra vários sites, o bloqueio precisa ser replicável. A ordem abaixo funciona tanto para quem tem acesso a SSH quanto para quem só tem o painel da hospedagem.

  1. Confirme o vetor. É wp-login.php, xmlrpc.php ou os dois? Olhe o log antes de agir.
  2. Bloqueie no servidor, se possível. Regras no servidor web barram a requisição antes do PHP e do banco. Isso alivia a carga imediatamente.
  3. Desative xmlrpc se não for usado. Muitos sites não precisam da API. Desativar remove um vetor inteiro de ataque.
  4. Ative limite de tentativas no plugin. Funciona quando você não tem acesso ao servidor, mas depende do PHP estar de pé.
  5. Revise usuários e senhas. Só depois do bloqueio ativo.
  6. Monitore por 24 a 48 horas. Ataques distribuídos costumam voltar com outra origem.

Se você tem SSH, o caminho é editar a configuração do servidor web ou usar o firewall da hospedagem. Se só tem painel, o caminho é plugin de segurança com limite de tentativas e, quando disponível, o firewall da própria hospedagem. A diferença importa: regra no servidor bloqueia antes de o WordPress carregar; plugin bloqueia depois.

Limite de tentativas WordPress: servidor ou plugin?

A escolha entre bloquear no servidor e bloquear no plugin depende do que você tem disponível e do tipo de ataque. A tabela abaixo resume.

Camada Vantagem Limitação
Servidor web ou firewall da hospedagem Bloqueia antes do PHP e do banco Exige acesso a SSH ou painel da hospedagem
Plugin de segurança Funciona só com acesso ao painel Não protege se o banco já estiver sobrecarregado
Desativar xmlrpc Remove vetor inteiro Pode quebrar apps e integrações que usam a API
Autenticação em dois fatores Impede login mesmo com senha correta Não reduz o volume de tentativas

Na prática, a combinação mais eficaz é servidor mais plugin. O servidor segura o volume; o plugin cobre o que passar. Se você só pode escolher um, escolha o servidor, porque ele protege o banco.

Para entender como o limite de tentativas se encaixa em uma estratégia maior, vale revisar a segurança WordPress instalação: hardening em vários sites, que trata das camadas permanentes de defesa.

Quando o ataque já derrubou o banco

Se o site está fora do ar e a hospedagem aponta uso excessivo de conexões, o ataque já passou da fase de tentativa e está consumindo recursos. Nesse caso, a ordem muda.

  1. Bloqueie primeiro, investigue depois. Enquanto o ataque corre, qualquer análise fica lenta e imprecisa.
  2. Ative modo de manutenção ou bloqueio total de login. Se possível, negue acesso a wp-login.php e xmlrpc.php para todos, exceto seu IP.
  3. Verifique se houve acesso bem-sucedido. Procure usuários novos, sessões ativas e alterações em plugins e temas.
  4. Restaure backup se houver sinal de invasão. Se o atacante entrou, limpar sem restaurar costuma deixar backdoor.
  5. Só então libere o acesso. Liberar antes de confirmar que a origem está bloqueada reinicia o ciclo.

Se houver sinal de acesso bem-sucedido, o passo seguinte é tratar como incidente. O artigo sobre WordPress invadido: como confirmar e agir detalha o que verificar antes de considerar o site limpo.

Quando a receita comum de plugin falha

Existe um cenário em que o plugin de segurança não resolve, e é importante reconhecê-lo: ataque distribuído que não aparece em lista de IP. Nesse caso, o plugin bloqueia um IP, e o ataque continua de outro. A lista de bloqueio cresce, o banco continua sobrecarregado e o administrador acha que o plugin não funciona.

O mesmo acontece quando a hospedagem não permite editar .htaccess ou não oferece firewall. Sem acesso à camada de servidor, o bloqueio fica dependente do PHP, que é justamente o que o ataque está derrubando.

Nesses casos, as saídas práticas são: ativar o firewall da hospedagem, se existir; migrar o site para um ambiente com mais controle; ou usar um proxy de borda que filtre antes de chegar ao servidor. Nenhuma delas é instantânea, e por isso o monitoramento contínuo importa mais do que a regra isolada.

Para ataques que miram a camada de banco, vale comparar com o padrão descrito em SQL injection WordPress: blindar vários sites de uma vez, porque a lógica de bloqueio na origem é parecida.

Erros comuns ao bloquear força bruta

  • Bloquear só o IP que aparece no topo do log e ignorar os demais.
  • Desativar xmlrpc sem verificar se algum app ou integração depende dele.
  • Confiar apenas no plugin e não monitorar o consumo de recursos.
  • Trocar a senha antes de bloquear a origem e achar que o problema acabou.
  • Não revisar usuários administradores depois do ataque.
  • Esquecer de checar se o ataque atingiu outros sites da mesma hospedagem.

O último item é o mais subestimado. Em hospedagem compartilhada, um ataque em um site pode consumir recursos de todos. Se você administra vários sites no mesmo servidor, trate o incidente como coletivo, não individual.

Prevenção contínua em vários sites

Depois de conter o ataque, o trabalho vira rotina. Três hábitos reduzem bastante a chance de repetir o problema: monitorar tentativas de login com alerta, manter limite de tentativas ativo em todos os sites e revisar usuários administradores periodicamente.

Quando o número de sites cresce, fazer isso site a site deixa de ser viável. É aí que faz sentido centralizar. O painel 100% WP reúne atualizações, backups, monitoramento e segurança em um só lugar, o que ajuda a perceber um ataque em um site antes que ele se espalhe para os outros.

Se o ataque já passou da fase de tentativa e deixou arquivos alterados, o caminho é outro. O artigo sobre site WordPress hackeado: diagnosticar e limpar em vários sites cobre essa etapa.

Por fim, se o volume for constante e a hospedagem não oferecer camada de bloqueio, pode ser hora de avaliar um serviço especializado. A segurança e remoção de malware trata casos em que o ataque já comprometeu arquivos ou banco.

O que fazer agora

Se você chegou até aqui com o site no ar, o próximo passo é abrir o log e confirmar o vetor. Se o site está fora do ar, bloqueie primeiro e investigue depois. Em ambos os casos, não trate o ataque como evento isolado: revise os outros sites, porque a mesma origem costuma testar todos.

Para se aprofundar na camada de identidade, vale revisar como auditar admins em vários sites e remover contas que não deveriam ter acesso. Um ataque força bruta WordPress só vira invasão quando encontra uma porta aberta. Fechar as portas é mais eficiente do que reagir a cada rajada.

Fonte: Documentação oficial do WordPress

Deixe uma resposta

Seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados como *

Leia também

Ilustração sobre formatar texto no WordPress com plugin ou estilo do tema
Plugins
100%WP

Formatar texto WordPress: plugin ou estilo do tema?

Formatar texto no WordPress é dividir entre conteúdo e estilo: listas, tabelas e blocos reutilizáveis podem vir de plugins, mas cores, fontes e espaçamentos pertencem ao tema. Plugin que ‘embeleza’ acumula CSS e quebra na troca de tema.

Ilustração sobre SEO para vídeo no WordPress e marcação de vídeo em páginas
Plugins
100%WP

SEO para vídeo no WordPress: o que o plugin resolve

Antes de instalar um plugin de SEO para vídeo no WordPress, verifique se o vídeo já está no YouTube ou Vimeo, se o tema já injeta schema e se o problema é indexação ou velocidade. O plugin só resolve marcação e thumbnail; não conserta vídeo mal hospedado nem tema pesado.

Ilustração sobre escrever para SEO e planejar conteúdo antes de publicar no WordPress
SEO
100%WP

Escrever para SEO: o que fazer antes de publicar

Antes de escrever para SEO, defina a intenção de busca em uma frase, pesquise no próprio site se o tema já tem artigo e decida se o texto será novo ou uma atualização. Só depois monte título, H2s e palavras-chave. Essa ordem evita canibalização e retrabalho.