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:

¿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.


