Para poder bloquear los intentos recurrentes de inicio de sesión en WordPress mediante el uso de un Panel HestiaCP con Fail2ban deberemos crear primero el fichero de definición.
La ruta por defecto de "/etc/fail2ban/filter.d/" por lo que podemos usar un editor de texto desde consola para crear el fichero de la siguiente forma (Editor vi por ejemplo):
# vi /etc/fail2ban/filter.d/wordpress.conf
Deberemos incluir la siguiente definición:
[Definition]
failregex = ^<HOST> .* "POST .*wp-login.php
^<HOST> .* "POST .*xmlrpc.php
Una vez creado deberemos indicar al fichero que utiliza fail2ban para la configuración de la jail los parámetros para la nueva de WordPress. Modificaremos el fichero mediante un editor de texto:
# vi /etc/fail2ban/jail.conf
Y añadiremos al final de él los siguientes valores:
[wordpress]
enabled = true
filter = wordpress
port = http,https
action = iptables-multiport[name=wordpress, port="http,https", protocol=tcp]
logpath = /var/log/apache2/domains/*.log
maxretry = 10
findtime = 600
bantime = 7200
Como se puede observar, HestiaCP separa los logs de los dominios por lo que deberemos utilizar el * para indicar que revise todos los logs del directorio.
Otra manera de hacerlo sería crear individualmente jails para únicamente los dominios que deseamos usar.
Por último, deberemos recargar la configuración de fail2ban para que se haga efectiva la modificación mediante el siguiente comando:
# systemctl reload fail2ban.service
Para verificar que está funcionando correctamente realizamos el siguiente comando que muestra las jails que están activas:
# fail2ban-client status
Consultar IP baneadas por la jail de WordPress:
# fail2ban-client status wordpress
Desbanear una IP baneada por esta jail sería el siguiente comando:
# fail2ban-client set wordpress unbanip DIRECCIONIP