Wallabag v2 = mise à jour du filtre Fail2ban
Par Joël le dans Administration de serveurs. Marqué comme fail2ban, sécurité, tutoriel, wallabag avec 2 Commentaires
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 ^^).
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 :)
@+