Řešení 1:
Existuje dbpurgeage
parametr v fail2ban.conf
, který říká, kolik dní mají data uchovávat v databázi. Výchozí hodnota je jeden den (1d
), zkuste to zkrátit na několik hodin:
dbpurgeage = 8h
Toto nastavení je spojeno s findtime
:nemá smysl mít findtime
delší než dbpurgeage
.
Upravit (2021) :Níže uvedená poznámka byla pravdivá v době psaní. V dnešní době se však podívejte na neingeist místo toho odpovězte.
Zastaralá poznámka :Při pohledu na můj vlastní fail2ban databáze, dbpurgeage
nastavení zřejmě nefunguje. Jediným řešením je proto položky ručně smazat. Chcete-li například odstranit záznamy z minulého roku, spusťte:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 \
"DELETE FROM bans WHERE DATE(timeofban, 'unixepoch') < '2020-01-01'; VACUUM;"
(sqlite3 spustitelný soubor je obvykle v stejnojmenném balíčku).
Zdá se, že neexistuje způsob, jak provést VACUUM
databáze bezsqlite vytvoření kopie databáze ve stejném adresáři. Před provedením operace však můžete soubor zkopírovat do jiného souborového systému a poté zkopírovat zpět menší databázi.
Řešení 2:
Můžete aktualizovat na 0.11.x (který obsahuje kód pro provedení čištění) a poté smazat obrovskou databázi a poté restartovat fail2ban. Znovu vytvoří databázi. Toto je nejjednodušší řešení bez nevýhod pro většinu lidí.
Zatímco fail2ban 0.11.x ve skutečnosti obsahuje kód pro vymazání starých záznamů (starší verze ne!), neobsahuje žádný VACUUM
. Další možností je tedy počkat na fail2ban, aby vyčistil staré záznamy (probíhá každou hodinu) a provést ruční sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "VACUUM;"
. Bez VACUUM
soubor databáze zůstane ve své velikosti.