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)
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
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.
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.
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)$
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.