*Como configurar Fail2ban no WordPress para proteger o login

Meta descrição: Aprenda a configurar Fail2ban no WordPress para proteger o login e bloquear ataques de força bruta. Passo a passo com filtros, jails e dicas.

Ataques ao /wp-login.php e ao /xmlrpc.php consomem recursos e podem derrubar sites. Neste guia, você vai instalar, criar filtros, configurar a jail e validar o bloqueio de IPs abusivos no servidor.

Importante: Fail2ban age no nível do sistema (iptables/nftables) e complementa boas práticas como senhas fortes, 2FA, atualização de plugins/tema e limitação de tentativas.*

Uma imagem sobre Configurar Fail2ban no WordPress: proteja o login

Fail2ban observa logs do servidor (Nginx/Apache, SSH etc.), identifica padrões abusivos e bane IPs por um período quando a regra dispara. No WordPress, focamos em POSTs repetidos no wp-login.php (e, se fizer sentido, no xmlrpc.php), cortando força bruta antes de o PHP/WordPress processar as requisições.

Pré-requisitos:

  • Acesso root/sudo à VPS/servidor.
  • Logs do webserver com IP real do visitante.
  • Se usar Cloudflare ou proxy, garantir que o IP real apareça nos logs (caso contrário, você pode banir o IP do proxy).

Por que usar Fail2ban para proteger o login do WordPress?

Fail2ban atua antes do WordPress, reduzindo carga e bloqueando IPs insistentes.

Benefícios:
1) Segurança: bloqueio automático de força bruta após X tentativas.
2) Performance: menos requisições chegam ao PHP/WordPress.
3) Camada extra além de plugins: se um plugin falha, o Fail2ban segue ativo no sistema.

Limitações:

  • Não substitui WAF nem corrige vulnerabilidades.
  • Tem menos efeito em ataques distribuídos por muitos IPs.

Ainda assim, para o cenário comum de bots martelando o login, a eficácia é alta.

🤖 Automatize alertas e rotinas com n8n (Formação Agentes de IA)

Depois de configurar o Fail2ban, um próximo passo natural é criar alertas quando houver bans, auditar logs e automatizar tarefas (backup, uptime, notificações em WhatsApp/Telegram).

A Formação Agentes de IA (n8n) da Hora de Codar ensina, na prática, a construir automações sem precisar ser programador, com 11+ cursos, 221+ aulas, 20h+ e 21+ projetos, além de comunidade com 8100+ alunos.

Conheça: https://app.horadecodar.com.br/lp/formacao-agentes-de-ia-n8n?utm_source=blog

Fail2ban reduz tentativas; automações mantêm você informado e no controle.

Treinamento completo em n8n do básico ao avançado

Instalação e preparação do Fail2ban

1) Instalar Fail2ban
Debian/Ubuntu:
sudo apt update
sudo apt install fail2ban -y

CentOS/RHEL/Alma/Rocky:
sudo dnf install fail2ban -y

Habilitar e iniciar:
sudo systemctl enable –now fail2ban
sudo systemctl status fail2ban

2) Onde configurar

  • Não edite /etc/fail2ban/jail.conf.
  • Use /etc/fail2ban/jail.local e/ou /etc/fail2ban/jail.d/*.conf.
  • Filtros ficam em /etc/fail2ban/filter.d/*.conf.

Organização sugerida:

  • Filtro: /etc/fail2ban/filter.d/wordpress-login.conf
  • Jail: /etc/fail2ban/jail.d/wp-login.conf

3) Logs do webserver

  • Nginx: /var/log/nginx/access.log (ou por vhost)
  • Apache: /var/log/apache2/access.log ou /var/log/httpd/access_log

4) IP real com proxy/CDN
Se usar Cloudflare/proxy, configure o webserver para registrar o IP do visitante (por exemplo, realipheader e setrealip_from no Nginx). Confirme no access.log.

Vídeo recomendado: colocando apps rapidamente em uma VPS (referência prática)

Para complementar sua rotina de servidor (além do WordPress protegido), este vídeo mostra um passo a passo direto para subir uma aplicação web em VPS, útil para preparar monitoramentos e automações: https://www.youtube.com/watch?v=VCKzXFk_XjM

Dica: salve o vídeo para montar seu kit de servidor (WordPress + Fail2ban + automações básicas).

Criando o filtro do Fail2ban para WordPress (Nginx/Apache)

A ideia é marcar POSTs repetidos em /wp-login.php e, opcionalmente, em /xmlrpc.php.

Crie o arquivo do filtro:
sudo nano /etc/fail2ban/filter.d/wordpress-login.conf

Conteúdo de exemplo:
[Definition]
failregex = ^ .* “POST /wp-login.php(\?[^\”])? HTTP/.” (200|302) .$
^ .
“POST /xmlrpc.php HTTP/.” (200|403|405) .$
ignoreregex =

Notas:

  • Muitos logins falhos no wp-login.php retornam 200 ou 302.
  • xmlrpc.php é alvo comum de bots; se você usa Jetpack/app móvel, ajuste com cuidado.

Teste o filtro:
sudo fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wordpress-login.conf

Se o formato do seu log diferir, ajuste a regex com base em uma linha real do seu access.log.

Configurando a jail wp-login.conf

Crie a jail:
sudo nano /etc/fail2ban/jail.d/wp-login.conf

Exemplo inicial (conservador):
[wordpress-login]
enabled = true
filter = wordpress-login
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 10m
bantime = 1h
backend = auto

Dicas:

  • Aponte logpath para o log do domínio WordPress, se houver (por exemplo, /var/log/nginx/seusite.access.log).
  • Ajuste maxretry/findtime/bantime após observar o comportamento real.

Whitelist opcional (evitar se auto-bloquear):
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 SEUIPFIXO_AQUI

Reinicie e verifique:
sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status wordpress-login

💻 VPS recomendada para rodar WordPress + Fail2ban: Hostinger

Fail2ban é leve, mas funciona melhor em VPS estável, com logs e firewall sob seu controle. A VPS da Hostinger oferece bom custo-benefício, upgrades fáceis e liberdade para ajustar Nginx/Apache, real IP e regras do Fail2ban.

Veja planos: https://www.hostinger.com.br/horadecodar
Use o cupom HORADECODAR para desconto.

Comece com um plano equilibrado e ajuste recursos conforme o tráfego. Com VPS bem configurada + logs corretos + Fail2ban, o wp-login.php fica muito mais protegido.

Hostinger A melhor VPS para seu n8n

Testes, monitoramento e resolução de problemas

Testes:

  • Faça algumas tentativas de login com senha errada (sem exagerar) e acompanhe o log:
    sudo tail -f /var/log/fail2ban.log
  • Verifique a jail:
    sudo fail2ban-client status wordpress-login

Desbanir um IP (se necessário):
sudo fail2ban-client set wordpress-login unbanip SEU_IP

Problemas comuns:

  • Sem correspondências: logpath incorreto ou regex não bate com seu formato de log. Use fail2ban-regex com uma linha real.
  • Bloqueio do IP da CDN/proxy: corrija real_ip no webserver para registrar o IP do visitante.
  • Falsos positivos: reduza sensibilidade (aumente maxretry, ajuste findtime) e foque em POST /wp-login.php.

Boas práticas:

  • Comece com bantime moderado (ex.: 1h) e ajuste após alguns dias.
  • Combine com 2FA, limitação de tentativas e atualização constante do WordPress.

O que é o Fail2ban e como ele pode proteger o login do WordPress?

O Fail2ban é uma ferramenta de segurança que monitora logs do servidor em busca de tentativas maliciosas de login, como ataques de força bruta. Ao identificar múltiplas tentativas falhas de login no WordPress, ele bloqueia automaticamente os endereços IP suspeitos por um tempo determinado, dificultando o acesso indevido.

Como configurar um filtro personalizado do Fail2ban para o WordPress?

Para configurar um filtro específico para o WordPress, basta criar um arquivo de filtro em /etc/fail2ban/filter.d/, com regras para identificar tentativas de login malsucedidas nos logs. Depois, adicione uma nova ‘jail’ no arquivo jail.local, vinculando ao filtro criado e ao caminho correto do log de autenticação do seu WordPress.

O Fail2ban afeta usuários legítimos que errarem a senha no WordPress?

Sim, se um usuário legítimo errar a senha várias vezes consecutivas, o IP dele pode ser bloqueado temporariamente. Por isso, é importante ajustar os parâmetros como ‘maxretry’ e ‘bantime’ nas configurações do Fail2ban, para evitar bloquear usuários autênticos sem perder a eficiência contra ataques.

Conclusão

Configurar Fail2ban no WordPress adiciona uma barreira eficiente contra força bruta ainda no nível do servidor. O fluxo ideal é: garantir IP real nos logs, criar e validar o filtro (fail2ban-regex), habilitar a jail wp-login.conf com parâmetros conservadores, monitorar e ajustar. Assim, você reduz carga e risco, mantendo o WordPress mais estável e seguro.

Para ir além, combine com 2FA, limitação de tentativas, WAF quando fizer sentido e automações para alertas e auditoria. Com essas peças, o login do WordPress deixa de ser ponto frágil e passa a ser apenas mais um endpoint sob controle.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments