Quelqu'un parmi vous parle le regex ? ( fail2ban )

Bonjour,

Je suis après fail2ban et je suis en train de le configurer. Seulement, dans mes tests, j’ai des regex qui ne match pas…

Jail.conf (je ne colle que la partie qui m’intéresse):

[pam-generic]
101 
102 enabled = true
103 # pam-generic filter can be customized to monitor specific subset of 'tty's
104 filter  = pam-generic
105 # port actually must be irrelevant but lets leave it all for some possible uses
106 port = all
107 banaction = iptables-allports
108 port     = anyport
109 logpath  = /var/log/auth.log
110 maxretry = 3

le pam-generic.conf :

[code]

Fail2Ban configuration file for generic PAM authentication errors

Author: Yaroslav Halchenko

$Revision: $

[Definition]

if you want to catch only login erros from specific daemons, use smth like

#_ttys_re=(?:ssh|pure-ftpd|ftp)

To catch all failed logins

_ttys_re=\S*

Shortcuts for easier comprehension of the failregex

__pid_re=(?:[\d+])
__pam_re=(?pam_unix(?:(\S+))?)?:?
__pam_combs_re=(?:%(__pid_re)s?:\s+%(__pam_re)s|%(__pam_re)s%(__pid_re)s?:slight_smile:

Option: failregex

Notes.: regex to match the password failures messages in the logfile.

Values: TEXT

failregex = \s\S+ \S+%(__pam_combs_re)s\s+authentication failure; logname=\S* uid=\S* euid=\S* tty=%(_ttys_re)s ruser=\S* rhost=(?:\s+user=.)?\s$

Option: ignoreregex

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

Values: TEXT

ignoreregex = [/code]

la ptite vérification qui va bien :

# fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/pam-generic.conf 
/usr/share/fail2ban/server/filter.py:442: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5

Running tests
=============

Use regex file : /etc/fail2ban/filter.d/pam-generic.conf
Use log file   : /var/log/auth.log


Results
=======

Failregex
|- Regular expressions:
|  [1] \s\S+ \S+(?:(?:\[\d+\])?:\s+\(?pam_unix(?:\(\S+\))?\)?:?|\(?pam_unix(?:\(\S+\))?\)?:?(?:\[\d+\])?:)\s+authentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
|
`- Number of matches:
   [1] 0 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Sorry, no match

Look at the above section 'Running tests' which could contain important
information.

Et pour finir, le log de test sur lequel ça devrait matcher :

Jul 11 17:52:37 tonton worker: pam_unix(common-auth:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=root

Ce que j’aimerais, c’est en regex qui prenne en compte les parties en rouge, les parties que je colorie en verte sont celles qui peuvent varier.

D’avance merci !

Si entre parenthèses il y a un développeur qui passe par ici, ce serait pas mal de développer un programme en Français/Anglais qui fasse un regex pour fail2ban via une petite interface toute con, que l’on puisse créer nos propres filtres, en utilisant le principe de surlignage en plusieurs couleurs pour les parties constantes, variables, et facultatives… ça ferait gagner du temps ce genre de machin !

Jul 11 17:52:37 tonton worker: pam_unix(common-auth:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=root

Donc :

failregex = (?i)worker: pam_unix\(common-auth:auth\): authentication failure; logname=([A-Za-z0-9_-]*)? uid=([0-9]*)? euid=([A-Za-z0-9_-]*)? tty=([A-Za-z0-9_-]*)? ruser=([A-Za-z0-9_-]*)? rhost=([A-Za-z0-9_-]*)? user=([A-Za-z0-9_-]*)?$

Merci beaucoup, mais ça ne fonctionne pas, voici le message d’erreur lorsque je fais le test :

Unable to compile regular expression '(?i)worker: pam_unix\(common-auth:auth\): authentication failure; logname=([A-Za-z0-9_-]*)? uid=([0-9]*)? euid=([A-Za-z0-9_-]*)? tty=([A-Za-z0-9_-]*)? ruser=([A-Za-z0-9_-]*)? rhost=([A-Za-z0-9_-]*)? user=([A-Za-z0-9_-]*)?$'
Cannot remove regular expression. Index 0 is not valid

Ptit up au cas ou quelqu’un ait la réponse !