私のサーバーの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を途中で実行して最後にクリーンアップする機会を提供できます。