Fail2ban

Est-il possible d’utiliser Fail2ban pour l’authentification Dolibarr afin de prevenir les attaques par force brute?
Actuellement l’authentification est gerée par Dolibarr et on ne peut pas banir les IP qui essayent de se connecter par brute force.
Je desire conserver le module d’authentification de dolibarr et pas celui de HTTP sur lesquel on peut utiliser Fail2ban sans problèmes.

Peut-être.
Il faut que tu actives le module syslog dans Dolibarr (Accueil/Configuration/Modules -> Modules complémentaires).

Le gros problème, c’est qu’apparemment (je dis apparemment, car j’utilise une version locale sous Windows avec un fichier log et pas syslog) il faut une verbosité max, LOG_DEBUG, pour avoir les infos de connexion. Ça écrit beaucoup beaucoup donc ce n’est pas terrible et il faut bien penser au logrotate (comme toujours ceci dit).
Et si je dis « peut-être », c’est parce que j’ignore si Dolibarr renvoie l’IP du serveur ou celle du client (j’ai toujours localhost de mon côté puisque je fais tout en local).

Si c’est ok, il te reste à créer ta règle Fail2ban.
Comme la ligne du log est de cette forme

2012-03-23 11:36:06 DEBUG 127.0.0.1       nologin  index functions_dolibarr::check_user_password_dolibarr Authentification ko user not found for 'dfg'

tu crées une règle /etc/fail2ban/filter.d/dolibarr du genre (surement faux mais pour avoir une idée) :
failregex = DEBUG <HOST>.*Authentification ko (user|bad password)
et ensuite tu actives dans jail.conf :

[dolibarr] enabled = true filter = dolibarr action = iptables[name=dolibarr,port=80,protocol=tcp] logpath = /var/log/apache2/syslog maxretry = 5

1 « J'aime »

Merci !

Voici ma config :
-> /etc/fail2ban/filter.d/dolibarr.conf
[Definition]
failregex=INFO <HOST>.*Authentification ko
ignoreregex=

-> Le Jail.conf identique!

Logrotate
-> /etc/logrotate.d/dolibarr
/var/lib/dolibarr/documents/dolibarr.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
}

Déterrage de topic, mais oh combien intéressant.

En ce qui me concerne, impossible de faire fonctionne la regex :

J’ai des lignes de ce style :

Avec la regex :

ça devrait pourtant matcher, mais non, niet. Une idée ?

Voilà ce que j’ai mis en place sur Ubuntu 18.04:
/etc/logrotate.d/dolibarr

/home/$mydomain/public_html/dolibarr/documents/dolibarr.log {
        weekly
        rotate 26
        compress
        nomissingok
        size 10M
}

/etc/fail2ban/filter.d/dolibarr.conf

# Fail2Ban configuration file
#
# Bans bruteforce on Dolibarr
#
# Author: Romain Lapoux
#

[INCLUDES]

before = common.conf

[Definition]

failregex = ^.* <HOST> .*Authentification ko.*$

ignoreregex =

# DEV Notes:
#
# pattern :     functions_dolibarr::check_user_password_dolibarr Authentification ko user not found for 'myuser'

/etc/fail2ban/jail.local

[dolibarr]
enabled  = true
port     = http,https
filter   = dolibarr
maxretry = 5
logpath  = /home/$mydomain/public_html/dolibarr/documents/dolibarr.log