Pages : 1
#1 Le 28/01/2019, à 09:30
- skynet.v01
[Résolu] fail2ban : problème de filtre pour monit
Bonjour la communauté
J'utilise monit en https via le port 2812 pour monitorer un serveur dont je souhaiterais pouvoir filtrer l'accès via fail2ban (version 0.9.0). Il y a bien un filtre par défaut mais il ne colle pas avec le log de monit (testé avec fail2ban-regex). J'ai tenté également avec d'autres filtres (fournis dans d'autres versions de fail2ban et autres tutos).
N'y connaissant rien en expressions régulières, j'en appelle à vos connaissances pour tenter de faire correspondre le filtre avec le log.
Le filtre fail2ban d'origine 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+\]\s*error\s*:\s*Warning:\s+Client '<HOST>' supplied (?:unknown user '[^']+'|wrong password for user '[^']*') accessing monit httpd$
^%(__prefix_line)s\w+: access denied -- client <HOST>: (?: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 <HOST>: (?:unknown user '')
ignoreregex =
Le log de monit 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
Mon fichier de configuration fail2ban jail-debian.local :
[monit]
enabled = true
port = 2812
logpath = /var/log/monit*.log
Merci pour votre aide
Hors ligne
#2 Le 28/01/2019, à 10:40
- bruno
Re : [Résolu] fail2ban : problème de filtre pour monit
Bonjour,
fail2ban n'est pas un outil pour filtrer les accès. C'est un outil qui permet de bloquer les IP qui font un certain nombre de tentatives infructueuses pour accéder à certains services.
Pour tester ton filtre fail2ban avec les logs de monit (à adapter suivant l'emplacement des fichiers) :
fail2ban-regex /var/log/monit.log /etc/fail2ban/filter.d/monit.conf
Si tu veux empêcher les attaques par force brute sur la page de connexion de monit, le mieux est d’utiliser les contrôles d'accès au niveau du serveur web en restreignant l'accès à une ou plusieurs IP autorisées. Pour Apache voir https://httpd.apache.org/docs/2.4/fr/howto/access.html
Tu peux aussi utiliser des règles iptables qui n'autorisent que certaines IP à se connecter sur le port 2812.
Quoiqu'il en soit les attaques par force brute ont pour seul inconvénient de remplir les logs si tu as des mots de passes suffisamment solides. Pense aussi à utiliser du HTTPS pour éviter la transmission des identifiants en clair.
Dernière modification par bruno (Le 28/01/2019, à 10:42)
#3 Le 28/01/2019, à 11:12
- skynet.v01
Re : [Résolu] fail2ban : problème de filtre pour monit
Je me suis mal exprimé, en effet le but est bien de bloquer et non filtrer.
Le problème étant que plusieurs utilisateurs doivent y avoir accès en lecture seule via des adresses IP non fixes, et l'accès est bien en HTTPS.
Hors ligne
#4 Le 28/01/2019, à 12:19
- bruno
Re : [Résolu] fail2ban : problème de filtre pour monit
Ok. Que donne la commande que j'ai indiquée ?
Dernière modification par bruno (Le 28/01/2019, à 12:20)
#5 Le 28/01/2019, à 12:48
- skynet.v01
Re : [Résolu] fail2ban : problème de filtre pour monit
Running tests
=============
Use failregex filter file : monit, basedir: /etc/fail2ban
Use log file : /var/log/monit.log
Use encoding : UTF-8
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [258] (?:DAY )?MON Day 24hour:Minute:Second(?:\.Microseconds)?(?: Year)?
`-
Lines: 260 lines, 0 ignored, 0 matched, 260 missed
[processed in 0.11 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 260 lines
Hors ligne
#6 Le 28/01/2019, à 13:38
- bruno
Re : [Résolu] fail2ban : problème de filtre pour monit
Effectivement la forme des logs de monit ne correspond pas à ce qui est attendu par fail2ban essaie avec ceci dans ton filtre monit.conf :
failregex = ^\[[A-Z]+\s+\]\s*error\s*:\s*Warning:\s+Client '<HOST>' supplied (?:unknown user '[^']+'|wrong password for user '[^']*') accessing monit httpd$
^.*: access denied -- client \[<HOST>\]: (?:unknown user '[^']+'|wrong password for user '[^']*'|empty password)$
La seconde ligne a été modifiée pour être plus générique et prendre en compte le fait que l'adresse IP est entre crochets.
Dernière modification par bruno (Le 28/01/2019, à 13:39)
#7 Le 28/01/2019, à 14:20
- skynet.v01
Re : [Résolu] fail2ban : problème de filtre pour monit
Effectivement c'est déjà mieux, fail2ban bloque désormais les tentatives avec un "user" erroné mais non vide (1e ligne du log ci-dessous).
Idéalement il pourrait bloquer les 2 autres (user vide et "missing or invalid Authorization header").
[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
Mais déjà merci beaucoup pour ce coup de pouce
Dernière modification par skynet.v01 (Le 28/01/2019, à 14:50)
Hors ligne
#8 Le 28/01/2019, à 15:16
- bruno
Re : [Résolu] fail2ban : problème de filtre pour monit
Dans ce cas tu peux être encore plus générique :
^.*: access denied -- client \[<HOST>\]: (?:unknown user .*|wrong password for user .*|empty password|missing or invalid Authorization header)$
Là cela devrait correspondre pour tes trois lignes de log.
#9 Le 28/01/2019, à 15:45
- skynet.v01
Re : [Résolu] fail2ban : problème de filtre pour monit
Super ça marche.
Merci infiniment pour ton aide, tu me fais économiser des heures de recherche et apprentissage (mais je compte bien me plonger à l'occasion dans les expressions régulières).
Hors ligne
Pages : 1