Como configurar o Fail2Ban para WordPress (wp-login, xmlrpc)

Resumindo, neste tutorial você encontrará as linhas de comando através das quais você pode instalar e configurar o Fail2Ban para WordImprensa. Garante a autenticação WordPress e consultas de força bruta de xmlrpc.php.

Blogs e sites desenvolvidos na plataforma WordPress são frequentemente alvos de ataques cibernéticos. A maioria dos ataques é de força bruta e tem como alvo a sessão de autenticação ou a exploração de XML-RPC (Chamada de Procedimento Remoto usando XML). Felizmente, o fail2ban é uma solução de segurança muito útil para essas situações. Se você deseja proteger um site WordPress com fail2ban, siga os passos de configuração neste tutorial.

Primeiro, certifique-se de ter acesso ao servidor web via conexão SSH e que o aplicativo fail2ban esteja instalado.

Configuração Fail2Ban para WordPress no Debian

1. Primeiro, você precisa ter certeza de que o aplicativo fail2ban está instalado e em execução no servidor. Execute a linha de comando abaixo:

systemctl status fail2ban

Na saída você deverá ver algo assim:

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
       Docs: man:fail2ban(1)
   Main PID: 917 (fail2ban-server)
      Tasks: 17 (limit: 76843)
     Memory: 33.2M
        CPU: 17min 1.752s
     CGroup: /system.slice/fail2ban.service
             └─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Se o fail2ban não estiver instalado no seu servidor, você precisará instalá-lo. Execute a linha de comando para instalar o fail2ban no Debian/Ubuntu:

sudo apt install fail2ban

2. O próximo passo é criar o filtro fail2ban para WordImprensa. Execute a linha de comando no terminal para criar e editar o filtro wordpress.conf.

sudo nano /etc/fail2ban/filter.d/wordpress.conf

no arquivo wordpress.conf define os filtros para autenticação WordPress e para o arquivo xmlrpc.php, da seguinte maneira:

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =

Isto significa que por qualquer método, GET ou POST, se os arquivos wp-login.php ou xmlrpc.php forem acessados, uma regra para fail2ban pode ser criada. A condição é que esses arquivos existam e possam ser acessados ​​pelo invasor. Ou seja, ele deve retornar o código 200 (ok) quando acessado.

Salvar o arquivo /etc/fail2ban/filter.d/wordpress.conf.

3. O próximo passo é configurar a “jail” para WordImprensa. É aqui que a maioria dos usuários fica confusa, porque as regras devem ser definidas de forma diferente dependendo do sistema de gerenciamento de hospedagem (se houver) ou da configuração do servidor web.

Se você usa HestiaCP, VestaCP ou MyVesta, crie e edite o arquivo /etc/fail2ban/jail.local.

nano /etc/fail2ban/jail.local

Adicione as linhas abaixo a este arquivo:

[wordpress]
enabled  = true
port     = http,https
filter   = wordpress
logpath  = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime  = 3600
action   = hestia[name=WEB] #hestacp action.

Ajuste os parâmetros acima de acordo com suas necessidades. Na configuração que passei, se num intervalo de 1800 minutos houver 5 tentativas repetidas do mesmo IP, ele será bloqueado por 3600 minutos usando a ação do HestiaCP para a web. (hestia[name=WEB]). Aqui você precisará de ajuda dependendo do sistema que você tem no servidor.

Também é muito importante "logpath". Destes logs, são extraídos os dados sobre os quais as ações serão tomadas. Certifique-se de que o local esteja correto.

Se você não tiver um sistema de gerenciamento instalado, será necessário bloquear IPs com fail2ban para WordPress a ser feito diretamente através de iptables. A linha de ação será a seguinte:

action   = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]

Entre parênteses, em vez de /etc/fail2ban/jail.local você também pode usar um arquivo separado para configuração, como: /etc/fail2ban/jail.d/wordpress.conf.

Depois de fazer os ajustes, aplique as alterações.

sudo systemctl restart fail2ban

4. Após reiniciar, verifique se fail2ban para WordPress funciona:

fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
|  |- Currently failed:	355
|  |- Total failed:	33873
|  `- File list: (log files per domain)
- Actions
   |- Currently banned:	127
   |- Total banned:	680
   `- Banned IP list:

Depois de encontrar IPs bloqueados nesta lista, certifique-se de que eles também estejam bloqueados em iptables. Eu me deparei com a situação em que devido a uma configuração incorreta, no fail2ban vi que um IP estava bloqueado, mas na realidade ele ainda conseguia acessar wp-login.php ou xmlrpc.php.

Para verificar se tudo está funcionando corretamente, escolha um IP bloqueado na lista do fail2ban e procure-o no iptables.

Execute a linha de comando:

iptables -L -v -n --line-numbers

Se o IP que aparece bloqueado pelo fail2ban também estiver nesta lista, significa que você configurou corretamente o fail2ban para ele. WordPressione.

Relacionado: Como redefinir a senha do usuário administrador em WordImprensa. Sem acesso ao e-mail.

Ao mesmo tempo, é altamente recomendável verificar o log com ações fail2ban:

sudo tail -f /var/log/fail2ban.log

Dito isso, se você tiver alguma dúvida ou precisar de ajuda, posso ajudar nos comentários.

Apaixonado por tecnologia, escrevo com prazer no StealthSettings.com desde 2006. Tenho uma ampla experiência em sistemas operacionais: macOS, Windows e Linux, assim como em linguagens de programação e plataformas de blogs (WordPress) e para lojas online (WooCommerce, Magento, PrestaShop).

Home » Sua fonte de tutoriais de TI, dicas úteis e notícias. » Como configurar o Fail2Ban para WordPress (wp-login, xmlrpc)
Deixe um comentário