[fail2ban] regex qui ne "match" pas

Bonjour à tous,

Je suis en train de mettre en place tinyhoneypot sur mon serveur pour bannir ceux qui essayent de se connecter en ssh sur le port 22.

Les logs de tinyhoneypot sont dans :

 # cat /var/log/thpot/captures
 févr. 04 18:27:06 SID=58960EEA1DDBA.nullresp PID=6753 SRC=xxx.xxx.xxx.xxx SPT=45620 ET=00:00:25 BYTES=39
(...)

J’ai créé un nouveau filtre fail2ban :

# cat /etc/fail2ban/filter.d/thpot.local
  # Fail2Ban configuration file for Tiny Honeypot
  [Definition]
  failregex   = .* SRC=<HOST> .*
  #failregex = SRC=<HOST>
  ignoreregex =

J’ai essayé avec les deux “failregex” ci dessous mais ça ne fonctionne pas.

# fail2ban-regex /var/log/thpot/captures /etc/fail2ban/filter.d/thpot.local 
Running tests
=============

Use   failregex file : /etc/fail2ban/filter.d/thpot.local
Use         log file : /var/log/thpot/captures


Results
=======

Failregex: 0 total

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [8] MONTH Day Hour:Minute:Second
`-

Lines: 8 lines, 0 ignored, 0 matched, 8 missed
|- Missed line(s):
|  févr. 04 18:28:09 SID=58960F299ED7E.nullresp PID=6764 SRC=51.254.114.186 SPT=45621  ET=00:00:21
|  (...) 

Auriez-vous une piste pour moi?

Merci d’avance

[edit: J’oubliais de dire que je me base sur ce tutoriel et que j’ai déjà réussis à faire tout fonctionner sur un autre serveur.

[edit2: Il y avait un problème d’affichage pour le fichier thpot.local (pas bien indenté donc n’apparait pas comme un bout de code.)

Petit up, il y avait une erreur dans mon post précédent.

Bonjour,

Pas sûr de mon coup mais, tu as tenté d’échapper le signe éqal (=) ?

Au moins, il faut échapper les espaces.

A+

Bonjour jelopo,

J’ai essayé ces deux là, sans plus de succès. :frowning:

failregex = .* SRC\=<HOST> .*
failregex = SRC\=<HOST>

Et ce qui me perturbe le plus, c’est que j’ai déjà installé tinyhoneypot avec fail2ban et que ça avait bien marché. J’ai repris ce que j’avais écrit à l’époque pour le réinstaller et c’est le seul point bloquant.

Bonjour,

J’ai copié le fichier de conf initial et le fichier de log sur ma machine (en ajoutant une adresse IP en 123.123.123.123)
Je viens de faire le test avec # fail2ban-regex /tmp/captures thpot.local ça match
mais il est pas content du format de la date.

# fail2ban-regex /tmp/captures thpot.local

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

Use regex file : thpot.local
Use log file   : /tmp/captures

Found a match for 'fé SID=58960EEA1DDBA.nullresp PID=6753 SRC=123.123.123.123 SPT=45620 ET=00:00:25 BYTES=3
' but no valid date/time found for 'vr. 04 18:27:06'. Please contact the author in order to get support for this format
Found a match for 'fé SID=58960EEA1DDBA.nullresp PID=6753 SRC=123.123.123.124 SPT=45620 ET=00:00:25 BYTES=3
' but no valid date/time found for 'vr. 05 18:27:07'. Please contact the author in order to get support for this format
Found a match for 'fé SID=58960EEA1DDBA.nullresp PID=6753 SRC=123.123.123.125 SPT=45620 ET=00:00:25 BYTES=3
' but no valid date/time found for 'vr. 06 18:27:08'. Please contact the author in order to get support for this format

Results
=======

Failregex
|- Regular expressions:
|  [1] SRC=<HOST>
|
`- 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.

Si je supprime févr. 04 de la ligne ça match. Sur l’autre système, la date est-elle aussi au même format ?

Si on n’a pas les même résultat, on ne doit pas avoir la même version de fail2ban. Je suis en 0.8.6-3.

Peux-tu poser ton fichier de log sur l’autre système et y lancer un fail2ban-regex ?

A+

Bonjour jelopo,
Merci de tes réponses qui m’ont permises de trouver la solution! :slight_smile:

Sur le serveur où ça fonctionne, voici les informations :

# fail2ban-client status thp-ssh 
Status for the jail: thp-ssh
|- filter
|  |- File list:	/var/log/thpot/captures 
|  |- Currently failed:	0
|  `- Total failed:	1423
`- action
   |- Currently banned:	24
   |  `- IP list:	110.77.246.248 119.193.140.151 100.35.168.11 103.243.107.239 177.213.206.84 149.56.98.61 185.110.132.202 93.46.201.17 113.106.72.58 182.71.196.52 114.27.186.6 5.39.103.120 112.85.42.99 180.97.81.71 123.31.34.44 50.185.237.194 92.222.69.109 116.31.116.18 183.189.178.76 79.1.203.61 61.158.207.153 190.193.48.250 120.25.221.227 218.65.30.122 
   `- Total banned:	1393

# fail2ban-client --version
Fail2Ban v0.8.13

# cat /var/log/thpot/captures
Feb 01 07:41:08 SID=589183041E7D.nullresp PID=8944 SRC=213.203.137.222 SPT=43273 ET=00:00:10 BYTES=23
Feb 01 09:51:24 SID=5891A18CC756.nullresp PID=9490 SRC=159.226.34.63 SPT=34602 ET=00:00:09
Feb 01 09:55:07 SID=5891A26BD2ED2.nullresp PID=9518 SRC=59.63.188.3 SPT=49121 ET=00:00:10 BYTES=74
(...)

# cat /etc/fail2ban/filter.d/thpot.local 
# Fail2Ban configuration file for Tiny Honeypot
[Definition]
failregex   = .* SRC=<HOST> .*
ignoreregex =

La différence avec le nouveau serveur, ce serait le format de date!! J’ai regardé au niveau des “locales”. Sur le vieux serveur :

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Sur le nouveau :

locale

LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

J’ai reconfiguré les locales avec ‘‘dpkg-reconfigure locales’’ , ensuite j’ai redémarré. J’ai fait un test avec “ssh 127.0.0.1” depuis le serveur et voici le nouveau logs dans

# cat /var/log/thpot/captures 
Feb 10 15:05:01 SID=589DC88D447CB.nullresp PID=648 SRC=127.0.0.1 SPT=34436 ET=00:00:02 BYTES=39

Dans mon fichier de filtre fail2ban, j’ai remis la regex de départ :

failregex = .* SRC=<HOST> .*

Et ça roule!

Si mon problème est réglé, je ne comprends pas pourquoi le changement du format de date empêchait la regex fail2ban de fonctionner. Après tout, le “.*” aurait du aussi englober la date au format francophone ?

Bref, réglé mais je reste sur une incompréhension.

A priori fail2ban essai de lire la date aussi. Et il ne reconnaissait pas le mot “févr.” dans le formatage de la date.