O WordPress estabelece uma série de configurações padrões que acabam sendo comuns/iguais para diversas instalações. Invasores sempre testam as plataformas usadas pelas vítimas e assim acabam conhecendo toda a estrutura padrão do site que pretendem atacar. Levando isso em consideração, qualquer invasor ou até mesmo usuário sabe que o endereço padrão para a página de login do WordPress que é a site.com.br/wp-admin. Também é possível fazer o acesso utilizando site.com.br/wp-login.php.
Recentemente tivermos relátos de vários clientes com problemas de performance em seus ambientes de hospedagem. Em nossa análise inicial, identificamos que se tratava de um ataque de brute force, também conhecido como força bruta. Este ataque faz milhares de tentativas na página de login do seu WordPress com objetivo de descobrir o padrão de sua senha, comprometendo toda sua plataforma. A falha já começa justamente pela página de login, que por padrão não possui nenhuma proteção de limite de tentativas ou qualquer captcha que valide o usuário real. O outro problema é que este ataque acaba por indisponibilizar o seu serviço, principalmente se for uma hospedagem compartilhada. O tempo que sua plataforma se manterá online vai depender da quantidade de recursos disponíveis para responder as requisições de login solicitadas pelo ataque.
Nós passamos uma semana toda buscando plugins, alternativas e soluções para acabar com este problema. Alguns plugins que mudam a URL de login do WordPress pareciam resolver no começo, porem rapidamente o ataque era direcionado a nova URL. Nós chegamos a conclusão que precisaríamos utilizar uma camada antes que o ataque chegasse ao servidor, devido a quantidade de requisições recebida, independente da solução, o serviço continuaria a ficar indisponível.
A solução basicamente é a utilização de uma CDN + Firewall + Captcha. Este conjunto garante que seu WordPress estará totalmente protegido contra os bots de brute force. Eu sei que pode parecer complicado resolver este problema, mas não é! E eu vou te mostrar agora como fazer.
O primeiro passo é adicionar o seu site no CloudFlare.
Neste ponto, precisamos que seu site esteja configurado no CloudFlare e totalmente propagado, caso contrário a solução não irá funcionar. Acesse sua conta no CloudFlare e clique no menu Firewall:
Nesta nova tela, clique no submenu Firewall Rules e em seguida Create a Firewall rule:
Configure a regra da seguinte forma e clique em Deploy para finalizar:
A regra basicamente irá verificar se a URI contem WP-ADMIN ou se a URI contem WP-LOGIN.PHP, se HOUVER ele irá solicitar o CHALLENGE que nada mais é do que um captcha avançado do CloudFlare.
Como a solicitação do captcha vem da CDN (CloudFlare) os recursos do seu ambiente de hospedagem serão poupados, e só chegará até ao wp-admin os usuários que passagem pelo captcha, ou seja, o ataque não irá conseguir passar.
Espero que este rápido artigo lhe poupe dias de dores de cabeça e problemas, além da perca de dinheiro com sua plataforma fora do ar! Se isso lhe ajudou, compartilhe com a comunidade para que mais devs saibam como é simples resolver este problema.