Quando você possui ou administra um ou mais sites WordPress é comum se deparar com diferentes tipos de ataques e é sua função, como administrador do sistema, garantir a segurança dos websites que estão em seu servidor.
Dois tipos de ataques comuns são:
- Tentativas consecutivas de acesso ao site via wp-login.php;
- Consecutivas requisições POST ao arquivo xmlrpc.php.
Para resolver o problema usei o fail2ban que já estava instalado no meu servidor. Para ser mais específica, eu criei dois filtros no diretório /etc/fail2ban/filter.d para obter o endereço de ip de quem estivesse efetuando o ataque e em seguida atualizei o arquivo jail.conf para habilitar os dois filtros e configurar quantos acessos serão permitidos antes do ip ser banido e por quanto tempo o ip será banido. A seguir você encontratá um tutorial para que possa replicar este procedimento em seu próprio servidor:
1- Crie o arquivo wp-xmlrcp.conf dentro do diretório /etc/fail2ban/filter.d com a configuração indicada abaixo:
vim /etc/fail2ban/filter.d/wp-xmlrpc.conf
[Definition]
failregex = ^<HOST> .*POST /xmlrpc\.php.*
ignoreregex =
2- Crie também o arquivo wp-login.conf neste mesmo diretório com as seguintes configurações:
vim /etc/fail2ban/filter.d/wp-login.conf
[Definition]
failregex = ^<HOST> .*POST /wp-login\.php.*
ignoreregex =
3- Em seguida nós precisamos adicionar os nossos filtros ao arquivo /etc/fail2ban/jail.conf para que o fail2ban saiba como proceder. Esta configuração apresentada abaixo habilita os dois filtros criados anteriormente , configura o número máximo de acessos e por quanto tempo o ip permanecerá banido. Eu configurei de tal forma que após a sexta tentativa sem sucesso o IP seja banido por uma semana. Você pode alterar estes valores da forma como desejar:
vim /etc/fail2ban/jail.conf
[wp-xmlrpc]
enabled = true
port = http,https
filter = wp-xmlrpc
logpath = /var/log/nginx/*.access.log
action = iptables[name=wp-xmlrpc, port=http, protocol=tcp]
sendmail-whois[name=wp-xmlrpc, [email protected]]
maxretry = 6
bantime = 604800
[wp-login]
enabled = true
port = http,https
filter = wp-login
logpath = /var/log/nginx/*.access.log
action = iptables[name=wp-login, port=http, protocol=tcp]
sendmail-whois[name=wp-login, [email protected]]
maxretry = 6
bantime = 604800
4- Agora você vai precisar reiniciar o fail2ban. Após reiniciar você receberá dois e-mails confirmando que os filtros foram ativados.
service fail2ban restart
Pronto! Agora o fail2ban já está configurado para automaticamente mitigar atividades maliciosas em sua instalação WordPress. Se quiser ver estes filtros funcionando da prática, depois de algum tempo você pode conferir a sua iptables usando o seguinte comando:
iptables -nvL
Comentários