URL: https://linuxfr.org/users/jpec/journaux/de-l-exploitation-des-logs-de-fail2ban Title: De l'exploitation des logs de fail2ban... Authors: JPEC Date: 2017年09月04日T10:33:41+02:00 License: CC By-SA Tags: python3, fail2ban, visualisation et ssh Score: 32 Comme beaucoup d'entre vous, pour sécuriser l'accès SSH de mon serveur j'utilise fail2ban (en plus des règles habituelles de sécurité). Fail2ban permet d'envoyer un mail à chaque fois qu'il bannit une IP mais finalement personne ne prend le temps d'examiner ces mails car le format n'est pas exploitable. J'ai donc décidé d'exploiter les logs de fail2ban afin de générer un rapport quotidien. Pour cela, j'ai utilisé python et les excellentes bibliothèques pandas et matplotlib.  Principe de fonctionnement ========================== 1) fail2ban-getlog ------------------ Une tâche cron se déclenche toutes les heures et va alimenter un fichier de travail (log.csv) avec tous les nouvelles IP bannies depuis le dernier lancement. Paramètres de lancement : ```bash fail2ban-getlog log.csv ``` 2) fail2ban-report ------------------ Une autre tache cron va se déclencher quotidiennement et utiliser ce fichier de travail (log.csv) pour générer un rapport PDF (report.pdf). Afin de localiser les IP, j'utilise la bibliothèque geoip2 qui nécessite une base de données (GeoLite2-Country.mmdb). Il est possible de [télécharger une base de données gratuite](http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz) sur le site du projet. Paramètres de lancement : ```bash fail2ban-report log.csv GeoLite2-Country.mmdb report.pdf ``` Le rapport généré ([report.pdf](https://peclu.net/report.pdf)) contient pour l'instant 3 graphiques. Le premier permet de visualiser le nombre d'IP bannies par jour, le deuxième permet de visualiser le nombre d'IP bannies par pays et le dernier permet de visualiser le nombre de bans par IP. Ensuite en fonction des désirs de l'utilisateur on peut envoyer le rapport par mail ou le mettre à disposition à un emplacement particulier. Les [sources](https://github.com/jpec/fail2ban-report) sont disponibles sur github et les dépendances nécessaires sont : python3-pandas, python3-matplotlib, python3-geoip2. Futur ===== Pour l'instant, les 3 graphiques permettent de visualiser l'activité globale (depuis le début de la collecte des logs). J'envisage de rajouter des graphiques pour visualiser l'activité des dernières 24h.