Fail2ban

大型fail2ban數據庫,正常嗎?

  • July 15, 2020

我伺服器上的 fail2ban 數據庫非常大(420MB)。

fail2ban 日誌非常繁忙(每兩秒就有一個“過濾器”條目),但iptables只顯示了幾個被禁止的地址。

dbpurage 為 86400 秒(24 小時)

這個尺寸與活動一致還是發生了什麼?

我假設如果我停止/擦除數據庫/啟動,我會恢復到合理的大小,但這不會使活動禁令永久化嗎?

我剛剛在我自己的伺服器上發現了這個問題。我dbpurgeage的也設置為預設的 24 小時,但我的fail2ban.sqlite3增長到 400MB,並且在過去 2 年中有 800,000 條禁令。

事實證明fail2ban 實際上直到 v0.11 才具有清除數據庫的程式碼。它是在這個送出中添加的。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 有機會在兩者之間執行,並在最後進行清理。

引用自:https://unix.stackexchange.com/questions/550527