Esta semana hemos tenido bastantes problemas con que los logs de Fail2Ban llenaban todo el espacio en disco de VPS con Debian (9 o 10; indiferente) con Plesk, dando igual cuanto espacio en disco hubiese disponible.
Esto al final hace que el servidor deje de funcionar correctamente.
¿Cuánto tiempo retiene Fail2Ban los logs?
Normalmente que se llene el disco no debería de pasar porque en el archivo fail2ban.conf la retención de los logs está puesta por defecto en 1 día (configuración establecida en /etc/fail2ban/fail2ban.conf):
# Options: dbpurgeage # Notes.: Sets age at which bans should be purged from the database # Values: [ SECONDS ] Default: 86400 (24hours) dbpurgeage = 1d
¿Cómo eliminar logs de Fail2Ban por SSH?
El espacio ocupado en disco lo podéis comprobar de la siguiente forma:
df -h
Y ahí os dirá que el disco está el 100%.
Filesystem Size Used Avail Use% Mounted on /dev/sda1 40G 40G 0G 100% /
Luego vais a la carpeta con los logs de Fail2Ban para comprobar su tamaño:
cd /var/lib/fail2ban
Veréis que hay un archivo fail2ban.sqlite y muchos otros archivos de más o menos 1GB de tamaño. Por ejemplo:
root@xxx:/var/lib/fail2ban# ls -l total 12180992 936693760 May 19 02:19 fail2ban.sqlite3 936693760 May 19 02:19 fail2ban.sqlite3.20210519-001920 936693760 May 19 02:20 fail2ban.sqlite3.20210519-001956 936693760 May 19 02:20 fail2ban.sqlite3.20210519-002035 936693760 May 19 02:21 fail2ban.sqlite3.20210519-002111 936693760 May 19 02:22 fail2ban.sqlite3.20210519-002145 936693760 May 19 02:22 fail2ban.sqlite3.20210519-002217 936693760 May 19 02:23 fail2ban.sqlite3.20210519-002248 936693760 May 19 02:23 fail2ban.sqlite3.20210519-002327 936693760 May 19 02:24 fail2ban.sqlite3.20210519-002408 936693760 May 19 02:25 fail2ban.sqlite3.20210519-002445 936693760 May 19 02:25 fail2ban.sqlite3.20210519-002537 936693760 May 19 02:26 fail2ban.sqlite3.20210519-002617 296116224 May 19 02:27 fail2ban.sqlite3.20210519-002701
Los logs se pueden eliminar a lo bestia de la siguiente forma:
sudo /etc/init.d/fail2ban stop sudo rm -rf /var/lib/fail2ban sudo /etc/init.d/fail2ban start sudo reboot
Nosotros solemos dejar el archivo actual: fail2ban.sqlite y usamos este comando:
sudo /etc/init.d/fail2ban stop sudo rm -rf /var/lib/fail2ban/fail2ban.sqlite3.20* sudo /etc/init.d/fail2ban start sudo reboot
OJO: Eliminar los archivos de log así solamente lo recomendamos en el caso de que el 100% del disco esté lleno. Sino se pueden usar los comandos de Fail2Ban para vaciar la caché (pero no funcionan si no hay espacio en disco):
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "select count(*) from bans" sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "delete from bans where timeofban < strftime('%s', 'now', '-12 hours')" sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "vacuum"
Espero como siempre que le sirva a alguien.