From f48b2f6c19ebeeadab64f762d135b5af3d05e5c1 Mon Sep 17 00:00:00 2001 From: Bruno Tatu Date: Fri, 9 Dec 2022 17:04:23 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20partie=20pour=20p?= =?UTF-8?q?urger=20la=20base=20sqlite=20de=20fail2ban?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoFail2Ban.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/HowtoFail2Ban.md b/HowtoFail2Ban.md index e7de995b..4e670f47 100644 --- a/HowtoFail2Ban.md +++ b/HowtoFail2Ban.md @@ -806,18 +806,17 @@ la raison est que Fail2Ban utilise le nom de la jail pour ajouter une chaîne IP ### Taille de la base de données SQLite et durée de conservation des bans -[Un bug](https://github.com/fail2ban/fail2ban/issues/1267#issuecomment-323336619) affecte les versions antérieures à 0.11 (Debian Bullseye). +[Un bug](https://github.com/fail2ban/fail2ban/issues/1267#issuecomment-323336619) affecte les versions antérieures à 0.11 (Debian Bullseye) dont la base `/var/lib/fail2ban/fail2ban.sqlite3` n'est pas purgée. -La base de données `/var/lib/fail2ban/fail2ban.sqlite3` n'est jamais purgée, malgré l'option `dbpurgeage` dans `/etc/fail2ban/fail2ban.conf` (par défaut à un jour). - -Pour les versions 0.10, il faut mettre en place un cron `/etc/cron.daily/fail2ban_dbpurge` ou `/etc/cron.hourly/fail2ban_dbpurge` : +Le contournement est de mettre en place un cron `/etc/cron.daily/fail2ban_dbpurge` : ~~~ #!/bin/sh -sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "DELETE FROM bans WHERE date('now', '-$days day') > datetime(timeofban, 'unixepoch'); VACUUM;" +sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "DELETE FROM bans WHERE datetime('now', '-86400 second') > datetime(timeofban, 'unixepoch'); VACUUM;" ~~~ -On remplacera la variable `$days` par la durée maximale définie dans l'option `bantime` (l'unité par défaut est la seconde) : +Notons que la commande `VACUUM` va copier la base en supprimant les espaces inutilisés dans la nouvelle base. +Par défaut, la durée maximale est définie par l'option `bantime` dont l'unité est à la seconde : ~~~ grep -R -E "bantime[[:blank:]]*=[[:blank:]]*[0-9]+" /etc/fail2ban/ @@ -839,4 +838,3 @@ sqlite > DELETE FROM bans WHERE date('now', '-$days day') > datetime(timeofban, sqlite > VACUUM; # systemctl start fail2ban ~~~ -