내 서버의 Fail2ban 데이터베이스는 매우 큽니다(420MB).
Fail2ban 로그는 매우 사용량이 많지만(2초마다 하나의 "필터" 항목) 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이 중간에 실행되고 마지막에 정리될 수 있는 기회를 제공할 수도 있습니다.