Wallabag v2 = mise à jour du filtre Fail2ban

Par le dans . Marqué comme , , , avec 2 Commentaires

Wallabag v2 = mise à jour du filtre Fail2ban

J’ai publié sur le blog, il y a un moment de cela, un tutoriel permettant de sécuriser une instance auto-hébergée de Wallabag (en version 1.X.Y).

Plus d’informations par ici : Fail2ban Sécuriser une instance Wallabag

Mais il se trouve qu’après avoir migré sur la version 2 de Wallabag, qui est sortie le 03/04/2016, un changement a été réalisé sur la gestion et le format des logs générés par cette application.

Résultat :
Fail2ban ne sait plus analyser les logs Apache générés par Wallabag et ne « scrute » donc plus les vilains pirates qui tenteraient de « brute forcer » la page d’authentification de ce service …

Après avoir modifié un peu le filtre que j’avais mis en place pour Wallabag v1 à l’époque, je partage avec vous la mise à jour de celui-ci, afin que vous puissiez en profiter et protéger un peu plus vos données personnelles :)

Vérification du format de logs :

Voici un aperçu des logs à la mode Wallabag v2 :

[01/Oct/2016:20:08:12 +0200] "GET /login HTTP/1.1" 200 2020 "https://mon-uri-wallabag.fr/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
[01/Oct/2016:20:08:15 +0200] "POST /login_check HTTP/1.1" 302 671 "https://mon-uri-wallabag.fr/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"

Alors qu’avant ils étaient de la forme :

[Sun Jun 28 20:30:25 2015] [error] [client 1XX.144.XX.41] user Leonard authentication failure, referer: https://mon-uri-wallabag.fr/

On comprend mieux pourquoi Fail2ban n’est plus capable de « parser » les logs correctement :)

Mise à jour du filtre Fail2ban :

Pour mettre à jour le filtre permettant à Fail2ban de surveiller nos logs correctement, il suffit d’éditer (ou d’ajouter pour les nouveaux lecteurs), le filtre suivant :

vim /etc/fail2ban/filter.d/apache-wallabag.conf

Et d’y ajouter les lignes suivantes :

# Définition d'un filtre permettant de surveiller les tentatives d'authentification à Wallabag
[Definition]
failregex =  .*"POST /login_check HTTP/.*" 302.*
ignoreregex =

Ce sera tout pour le filtre de Fail2ban !

Mise à jour de la configuration des « prisons » Fail2ban :

Une petite mise à jour de la configuration des « jails » de Fail2ban est nécessaire.

L’explication est simple, avant Wallabag écrivait les erreurs d’authentification dans le fichier /var/log/apache2/mon-super-vhost-error.log alors que maintenant tout est dans le fichier /var/log/apache2/mon-super-vhost-access.log.

Attention, ces fichiers dépendent de votre configuration d’Apache. C’est à vous de voir comment vos vhosts sont gérés et d’éventuellement corriger la configuration des jails de Fail2ban en fonction de vos modifications.

Pour mettre à jour notre jail :

vim /etc/fail2ban/jail.conf

Puis rechercher les lignes concernant Wallabag pour en modifier le chemin vers les logs Apache à analyser par Fail2ban :

# Filtre pour l'instance Wallabag v2
[apache-wallabag]
enabled = true
port    = http,https
filter  = apache-wallabag
logpath = /var/log/apache2/mon.vhost.fr-access.log # <= c'est ici qu'il faut modifier error par access !
maxretry = 3

Bien entendu, pensez à sauvegarder vos modifications :)

Redémarrage de Fail2ban et vérification de la configuration :

Une fois les modifications réalisées, pensez à redémarrer le service Fail2ban :

service fail2ban stop
service fail2ban status
service fail2ban start

Pour contrôler que le filtre soit bien actif, 2 solutions s’offrent à vous :

Mode barbare :

* Afficher les logs Fail2ban :

tail -f /var/log/fail2ban.log

* S’authentifier à Wallabag plusieurs fois avec un utilisateur et/ou un mot de passe foireux et attendre de voir passer son adresse IP dans les logs
* Si c’est le cas, votre configuration fonctionne et vous n’avez maintenant plus accès à Wallabag ^^
* Pour vous « débannir » de Fail2ban, n’hésitez pas à consulter mon tutoriel précédent !

Mode « je sais ce que je fais » :

* On génère une ou deux mauvaises connexions dans les logs, pas plus sinon on va se faire attraper par Fail2ban
* Et on joue avec la commande suivante : fail2ban-regex

Ce programme, permet de contrôler l’efficacité des filtres Fail2ban, en les exécutant sur des fichiers de logs, qu’il est possible de renseigner en paramètres de la ligne de commande. Ici, je précise que je vais analyser le fichier de logs mon-uri-wallabag.fr-access.log avec le filtre /etc/fail2ban/filter.d/apache-wallabag.conf

fail2ban-regex /var/log/apache2/mon-uri-wallabag.fr-access.log /etc/fail2ban/filter.d/apache-wallabag.conf

Si le filtre est fonctionnel, vous obtiendrez un retour de la forme :

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

Use regex file : /etc/fail2ban/filter.d/apache-wallabag.conf
Use log file   : /var/log/apache2/mon-uri-wallabag.fr-access.log


Results
=======

Failregex
|- Regular expressions:
|  [1] .*"POST /login_check HTTP/.*" 302.*
|
`- Number of matches:
   [1] 27 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    92.124.19.51 (Sat Oct 01 20:06:28 2016)
    92.124.19.51 (Sat Oct 01 20:06:46 2016)
    92.124.19.51 (Sat Oct 01 20:08:15 2016)
    92.124.19.51 (Sat Oct 01 20:08:17 2016)
    [...]
    92.124.19.51 (Sat Oct 01 20:12:20 2016)
Date template hits:
0 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
[...]
109 hit(s): Day/MONTH/Year:Hour:Minute:Second
[...]
0 hit(s): 

Success, the total number of match is 27

However, look at the above section 'Running tests' which could contain important
information.

Voilà, votre instance Wallabag v2 est maintenant protégée comme il se doit par Fail2ban. Vous pouvez retourner lire les articles que vous n’avez pas encore pris le temps de lire aujourd’hui :)

Source utilisée pour la rédaction de l’article :
– Mes maigres connaissances des expressions régulières et de Fail2ban

Sources des images utilisées en illustrations :
– Illustration principale du billet : l’image a été générée grâce au Générateur de Geektionnerd chez Framalab (j’adore cet outil ^^).

2 Commentaires


  1. Sur la dernière version de fail2ban, le filtre doit contenir un tag.

    Le nouveau filtre est :
    failregex = .*"POST /login_check HTTP/.*" 302.*

    • Hello,
      Je ne vois pas de différence entre ton filtre et celui qui est indiqué dans l’article.
      Je sais que la nouvelle version de Fail2ban amène quelques changements dans les filtres, mais je n’ai pas encore eu le temps d’étudier tout cela en détail :)
      @+

N'hésitez pas, laissez un commentaire — DoFollow activé sur ce site —


« »