Solusi 1:
Ada dbpurgeage
parameter di fail2ban.conf
, yang memberitahukan berapa hari data disimpan dalam database. Standarnya adalah satu hari (1d
), jadi coba kurangi menjadi beberapa jam:
dbpurgeage = 8h
Pengaturan ini digabungkan dengan findtime
:tidak masuk akal untuk memiliki findtime
lebih panjang dari dbpurgeage
.
Edit (2021) :Catatan di bawah ini benar pada saat penulisan. Namun saat ini lihat neingeist jawab sebagai gantinya.
Catatan usang :Dengan melihat fail2ban saya sendiri basis data, dbpurgeage
pengaturan sepertinya tidak berfungsi. Oleh karena itu satu-satunya solusi adalah menghapus entri secara manual. Misalnya, untuk menghapus entri tahun lalu jalankan:
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 \
"DELETE FROM bans WHERE DATE(timeofban, 'unixepoch') < '2020-01-01'; VACUUM;"
(file sqlite3 dapat dieksekusi biasanya dalam paket homonim).
Sepertinya tidak ada cara untuk melakukan VACUUM
database tanpasqlite melakukan salinan database di direktori yang sama. Namun Anda dapat menyalin file ke sistem file lain sebelum melakukan operasi dan kemudian menyalin kembali database yang lebih kecil.
Solusi 2:
Anda dapat mengupdate ke 0.11.x (yang berisi kode untuk melakukan pembersihan) dan kemudian menghapus database yang sangat besar diikuti dengan restart fail2ban. Ini akan membuat ulang database. Ini adalah solusi termudah tanpa kekurangan bagi kebanyakan orang.
Meskipun fail2ban 0.11.x sebenarnya berisi kode untuk membersihkan entri lama (versi lama tidak!), tidak ada VACUUM
. Jadi opsi lainnya adalah menunggu fail2ban untuk membersihkan entri lama (terjadi setiap jam) dan melakukan sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "VACUUM;"
manual . Tanpa VACUUM
file database akan tetap pada ukurannya.