解決策 1:
dbpurgeage
があります fail2ban.conf
のパラメータ 、データベースに保持するデータの日数を示します。デフォルトは 1 日 (1d
) です。 )、数時間に短縮してみてください:
dbpurgeage = 8h
この設定は findtime
と連動しています :findtime
は意味がありません dbpurgeage
より長い .
編集 (2021) :以下の注意事項は、執筆時点のものです。ただし、最近は neingeist をチェックしてください 代わりに答えてください。
時代遅れのメモ :自分の fail2ban を見て データベース、dbpurgeage
設定が機能していないようです。したがって、唯一の解決策は、エントリを手動で削除することです。たとえば、昨年のエントリを削除するには、次のコマンドを実行します:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 \
"DELETE FROM bans WHERE DATE(timeofban, 'unixepoch') < '2020-01-01'; VACUUM;"
(sqlite3 実行可能ファイルは通常、同名のパッケージにあります)。
VACUUM
を実行する方法がないようです sqlite なしのデータベースの 同じディレクトリでデータベースのコピーを実行します。ただし、操作を実行する前にファイルを別のファイルシステムにコピーして、小さいデータベースをコピーして戻すことはできます。
解決策 2:
0.11.x (パージを実行するコードを含む) に更新してから、巨大なデータベースを削除してから、fail2ban を再起動できます。データベースを再作成します。これは、ほとんどの人にとって欠点のない最も簡単な解決策です。
fail2ban 0.11.x には実際には古いエントリを削除するコードが含まれていますが (古いバージョンにはありませんでした!)、VACUUM
は実行されません。 .したがって、別のオプションは、fail2ban が古いエントリをパージするのを待ち (1 時間ごとに発生)、手動で sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "VACUUM;"
を実行することです。 . VACUUM
なし データベース ファイルはそのサイズのままになります。