Advertencia: Fail2Ban puede ocupar mucho espacio en tu servidor (Así lo solucioné)

En mi personal cruzada por reducir y optimizar el espacio ocupado en mi servidor, descubrí que Fail2Ban ocupaba ¡3.8GB! Aquí te cuento mi proceso para reducirlo paso a paso.

Una de las mejores meneras de localicar problemas de espacio es usando ncdu. Si todavía no lo tienes ya lo puedes ir instalando apt install ncdu

ncdu /

Mientras navegaba por los directorios, algo en /var/lib llamó mi atención. Al entrar, vi esto:

ncdu fail2ban

¿De verdad? ¿Esa herramienta que supuestamente solo guarda unos cuantos logs? ¿3.8 gigabytes?

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT COUNT(*) FROM bans;"

Resultado: más de 2 millones de registros. ¡Dos millones de baneos! Y cuando verifiqué la antigüedad:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT DATE(MIN(timeofban), 'unixepoch') FROM bans;"

Descubrí registros desde 2022. Tres años de ataques, intrusiones fallidas e intentos de brute force acumulándose sin control.

Después de leer documentación y varios intentos fallidos, llegué a la solución elegante:

sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 \
"DELETE FROM bans WHERE DATE(timeofban, 'unixepoch') < '2025-06-01'; VACUUM;"

Traducción: «Elimina todos los baneos anteriores al 1 de junio de 2025 y luego compacta la base de datos.»

Ejecuté el comando y… funcionó. Los resultados fueron casi inmediatos

¡De 3.8GB a 3.9MB! Había recuperado el 99.9% del espacio ocupado.

Ahora tengo en mi /etc/fail2ban/jail.local:

[DEFAULT]
dbpurgeage = 30d

Lo que permite purgar la base de datos cada 30 días de manera automática.

¡Arreglado! y a seguir con otras cosas.