Lo primero que necesitamos saber para crear una regla de fail2ban es dónde se registran esos intentos fallidos. En este caso, es el propio apache quien se encarga de registrarlos, así que tenemos la mitad del trabajo hecho.
Primero creamos el jail:
/etc/fail2ban/jail.local
[apache-phpmyadmin] enabled = true filter = apache-phpmyadmin port = http,https logpath = /var/log/apache*/*error.log action = iptables-multiport[name=apache-phpmyadmin, port="http,https", protocol=tcp] maxretry = 3 bantime = 84600
Ahora crearemos el filtro en filter.d:
/etc/fail2ban/filter.d/apache-phpmyadmin.conf
# Fail2Ban configuration file # # Author: Hackeando el Genoma # # $Revision$ # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = common.conf [Definition] docroot = /var/www # Aquí el docroot de apache badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2 failregex = [[]client <HOST>[]] File does not exist: %(docroot)s/(?:%(badadmin)s) ignoreregex =
Tip: Antes de reiniciar y/o activar fail2ban con la nueva regla, podemos comprobar que el filtro funciona con el siguiente comando:
$ fail2ban-regex /var/log/apache2/error.log /etc/fail2ban/filter.d/phpmyadmin.conf
Una vez reiniciado fail2ban comenzará a bloquear las ips que intenten acceder 3 veces a alguno de los directorios indicados en la variable badadmin (que de hecho no existen en tu instalación)
$ service fail2ban restart