[Résolu] Paramétrage monit dans fail2ban

Bonjour la communauté

Je ne suis pas expert en linux loin de là, mais jusqu’ici je m’en sortais assez bien pour faire évoluer un petit serveur (emby entre autres) sur un Rpi 3b+ sous Raspbian. Mais je sèche sur la configuration de fail2ban, notamment sur la surveillance de monit, j’en appelle donc à votre grande générosité et surtout à vos connaissances.

Pour vous résumer : j’utilise fail2ban pour filtrer les accès et monit pour superviser mon Rpi.
Hors je souhaiterais que fail2ban filtre l’accès à l’interface de monit, mais le filtre fourni avec fail2ban 0.9.0 ne fonctionne pas. Ci-dessous vous trouverez le filtre par défaut de fail2ban (monit.conf) et un extrait de log de monit (les lignes que fail2ban doit prendre en compte). Le « jail » de fail2ban est bien configuré (avec le bon port).

Pour info monit est configuré en https.
Pourriez-vous m’aider à faire coller mon log monit avec le filtre de fail2ban ? Car je n’ai pas trouvé de filtre fonctionnel (j’ai cherché dans d’autres versions de fail2ban et autres tutos sans résultat).

Merci infiniment pour votre aide.

monit.conf

Fail2Ban filter for monit.conf, looks for failed access attempts

[INCLUDES]

Read common prefixes. If any customizations available – read them from

common.local

before = common.conf

[Definition]

_daemon = monit

Regexp for previous (accessing monit httpd) and new (access denied) versions

failregex = ^[[A-Z]+\s+]\serror\s:\sWarning:\s+Client ‹  › supplied (?:unknown user ‹ [^ ›]+’|wrong password for user ‹ [^ ›]’) accessing monit httpd$
^%(__prefix_line)s\w+: access denied – client : (?:unknown user ‹ [^ ›]+’|wrong password for user ‹ [^ ›]*’|empty password)$

Ignore login with empty user (first connect, no user specified)

ignoreregex = %(__prefix_line)s\w+: access denied – client : (?:unknown user ‹  ›)

ignoreregex =

monit.log
[CET Jan 25 16:41:39] error : HttpRequest: access denied – client [37.169.237.227]: unknown user ‹ xxyy ›
[CET Jan 25 16:42:37] error : HttpRequest: access denied – client [37.169.237.227]: unknown user ‹  ›
[CET Jan 25 16:42:41] error : HttpRequest: access denied – client [37.169.237.227]: missing or invalid Authorization header

Bonjour,

Je crois comprendre que c’est un problème d’expression régulière. Et je t’avouerais que c’est pas ma tasse de thé, j’y comprends à peu près pas grand chose voir presque rien.

Mais je vais te laisser quelques conseils que j’ai utilisé lorsque j’en ai eu besoin.

1 - Consulter les règles d’expressions régulières, par exemple ici

https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/918834-memento-des-expressions-regulieres

2 - Chercher sur le web un site qui te convienne à partir de la recherche « test expression régulière », pour y injecter tes tests.

3 - Simplifier l’expression régulière au maximum, afin qu’elle fonctionne, puis la complexifier pour filtrer petit à petit jusqu’au bon résultat.

4 - Réaliser des tests fail2ban avec la commande

fail2ban-regex /var/log/monit.log /etc/fail2ban/filter.d/monit.conf

Dans ce cas, il peut être judicieux de créer un autre fichier que monit.log avec toutes les erreurs qui nous intéressent en le nommant monit-test.log et en l’appelant avec fail2ban-regex.

Au hasard, un site qui m’a paru intéressant

Avec ceci, et un peu de temps, tu devrait arriver à un résultat qui devrait te convenir, et si tu es meilleur que moi, tu pourras même créer tes propres règles complètes.

Bonne bidouilles

A+

Pour les tests je connaissais la commande, mais rien ne match.
J’ai également tenté ton 2e lien, mais même en modifiant je n’ai pas réussi à trouver l’expression qui va bien.

Ce matin je suis tombé sur ce lien qui m’a l’air pas mal non plus :

Va falloir que je travaille tout ça, le tout est de trouver un peu de temps pour appréhender les expressions régulières.

En tout cas merci pour ta réponse

J’ai finalement eu une aide sur un autre forum, donc je mets ici les modifications apportées au fichier monit.conf de fail2ban :

Original
failregex = ^[[A-Z]+\s+]\serror\s:\sWarning:\s+Client ‘’ supplied (?:unknown user ‘[^’]+’|wrong password for user ‘[^’]’) accessing monit httpd$
^%(__prefix_line)s\w+: access denied – client : (?:unknown user ‘[^’]+’|wrong password for user ‘[^’]*’|empty password)$

Fichier modifié
failregex = ^[[A-Z]+\s+]\serror\s:\sWarning:\s+Client ‹  › supplied (?:unknown user ‹ [^ ›]+’|wrong password for user ‹ [^ ›]’) accessing monit httpd$
^.: access denied – client []: (?:unknown user .|wrong password for user .*|empty password|missing or invalid Authorization header)$

Merci de passer l’info. En effet ça ne s’invente pas !
Peux-tu passer le titre en [Résolu] Merci.

A+

Fait pour le titre.

Oui j’aurais peut-être fini par trouver, mais j’y aurais sûrement passé pas mal d’heures. Mais du coup ça m’incite à me lancer dans l’apprentissage et la compréhension des expressions régulières.