大容量Fail2banデータベース、正常ですか?

大容量Fail2banデータベース、正常ですか?

私のサーバーのFail2banデータベースは非常に大きいです(420MB)。

Fail2banログは非常に使用量が多いですが(2秒ごとに1つの「フィルタ」エントリ)、iptables禁止されているアドレスはいくつか表示されます。

dbpurgeageは86400秒(24時間)です。

このサイズは活動と一致していますか、それとも何が起こっていますか?

データベースを停止/削除/開始すると、合理的なサイズに戻ると仮定していますが、これによりアクティブな禁止は永久に適用されませんか?

答え1

私は私のサーバーでこの問題を見つけました。私のものもdbpurgeageデフォルト24時間に設定されていますが、fail2ban.sqlite3サイズが400MBに増え、過去2年間で800,000回ブロックされました。

それは明らかですv0.11以前は、fall2banには実際にデータベースを消去するコードはありませんでした。。それに追加されます今回提出してください。それまで、dburgeageは何もしません。


データベースにいくつかの禁止事項があることを確認してください。

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select count(*) from bans"

最も古いデータベースエントリの期間を確認するには、次の手順を実行します。

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select datetime(min(timeofban), 'unixepoch') from bans"

たとえば、先週のデータのみを保持するなど、データベースをクリーンアップするには、次のようにします。

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "delete from bans where timeofban < strftime('%s', 'now', '-7 days')"
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "vacuum"

削除には数分かかることがありますが、その間にデータベースにアクセスしようとするとFail2banがブロックされます。おそらく、小さなバッチ(最初は2年より古いもの、その後は1年など)で削除して、Fail2banを途中で実行して最後にクリーンアップする機会を提供できます。

関連情報