Eu finalmente encontrei uma solução (vou ver se funciona em alguns dias): fail2ban.
Vamos colocar isso em /etc/fail2ban/jail.conf
:
#
# HTTP servers
#
[apache-wp-login]
enabled = true
port = http,https
filter = apache-wp-login
logpath = /var/log/apache2/other*.log
maxretry = 6
findtime = 36000
bantime = 36000
Em seguida, isso em /etc/fail2ban/filter.d/apache-wp-login.conf
:
[Definition]
failregex = .*:(80|443) <HOST> .*/wp-login.php.*
ignoreregex =
Então vamos começar o serviço e ver as proibições:
service fail2ban start
tail -f /var/log/fail2ban.log
Muito útil: isso pode ajudar a depurar a regex de filtragem e ver se funciona ou não:
fail2ban-regex /var/log/apache2/other_vhosts_access.log /etc/fail2ban/filter.d/apache-wp-login.conf