Filtre customisé fail2ban

Bonjour,

Debian 8.2 …

Je souhaite créer un filtre fail2ban sur mesure:

Voici un exemple d’une chaine type, parmi d’autres, qui se trouvent dans mon fichier de log …

Je souhaite bannier l’adresse ip quand le texte “mysql-denied” (sans les guillemets) apparaît en fin de chaine …

Mon fichier /etc/fail2ban/filter.d/phpmyadmin_access.log contient la règle:

hors en testent cette règle avec

j’ai obtient ce message d’erreur:

[code]root@debian:/etc/fail2ban/filter.d# fail2ban-regex /var/log/apache2/phpmyadmin_access.log /etc/fail2ban/filter.d/apache-phpmyadmin.conf

Running tests

Use failregex file : /etc/fail2ban/filter.d/apache-phpmyadmin.conf
Traceback (most recent call last):
File “/usr/bin/fail2ban-regex”, line 430, in
fail2banRegex.readRegex(cmd_regex, ‘fail’) or sys.exit(-1)
File “/usr/bin/fail2ban-regex”, line 227, in readRegex
’add%sRegex’ % regextype.title())(regex.getFailRegex())
File “/usr/share/fail2ban/server/filter.py”, line 95, in addFailRegex
raise e
server.failregex.RegexException: Unable to compile regular expression '[(?:::f{4,6}:)?(?P[\w-.^_]*\w)] mysql-denied$'
root@debian:/etc/fail2ban/filter.d#[/code]

Quelqu’un pourrait t-il m’aider pour formuler correctement la règle “failregex” pour bannir l’adresse ip “90.120.xxx.yyy” comme dans mon exemple voire tout autre adresse ip qui enfreint la règle (d’authentification phpmyadmin) ?

Merci d’avance. :wink:

Ps. Pour information

[code]root@debian:/etc/fail2ban/filter.d# fail2ban-client --v
Fail2Ban v0.8.13

Copyright © 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Written by Cyril Jaquier cyril.jaquier@fail2ban.org.
Many contributions by Yaroslav O. Halchenko debian@onerussian.com.
root@debian:/etc/fail2ban/filter.d#[/code]

Bonjour,

J’ai expérimente sur le site web http://pythex.org/ et le failregex suivant fonctionne:

Remarque: comme le site pythex.org ne sait pas gérer la variable HOST il faut la remplacer par une adresse ip …

Exemple:

Your regular expression:

Your test string:

Pour ceux qui s’intéressent, voici le filtre pour surveiller / limiter les tentatives de logins de phpmyadmin avec fail2ban (version Debian 8.x):

vim /etc/fail2ban/filter.d/apache-phpmyadmin.conf

[code]# Fail2Ban configuration file

Bans bots scanning for non-existing phpMyAdmin installations on your webhost.

Author: Gina Haeussge

src http://linuxaria.com/howto/how-to-protect-apache-with-fail2ban?lang=en

[Definition]

docroot = /var/www
badadmin = PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|phpmyadmin2

Option: failregex

Notes.: Regexp to match often probed and not available phpmyadmin paths.

Values: TEXT

#failregex = [[]client []] File does not exist: %(docroot)s/(?:%(badadmin)s)

source :: http://www.zapoyok.info/2010/07/30/supprimer-les-tentatives-dacces-a-phpmyadmin-en-utilisant-fail2ban/

#failregex = [[]client []] File does not exist: .(PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|myadmin2)
failregex = ^().
\s(mysql-denied)$

Option: ignoreregex

Notes.: regex to ignore. If this regex matches, the line is ignored.

Values: TEXT

ignoreregex =[/code]

vim /etc/fail2ban/jail.conf

Dans la rubrique [apache] ajoutez

[code][apache-phpmyadmin]

enabled = true
port = http,https
filter = apache-phpmyadmin
logpath = /var/log/apache*/*phpmyadmin_access.log
maxretry = 3[/code]

Relancez fail2ban

et pour que le filtre puisse y fonctionner vous devez ajouter dans votre (vos) fichier(s) de configuration “VirtualHost” d’Apache2 ses deux lignes - voire dans le répertoire /etc/apache2/sites-enabled

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined CustomLog /var/log/apache2/phpmyadmin_access.log pma_combined

Puis relancez apache2