Se dice que el logpath de fail2ban puede usar regex (expresiones regulares)
Hola, soy un inútil.
En cada sistema operativo *nix, cuando la configuración de rotación de logs es diferente, /var/log/auth.log puede ser archivado rápidamente y no banear nada, por lo que parece que se pueden usar expresiones regulares como se muestra a continuación.
¡Cómo! ¡Usar!
:/etc/fail2ban# cat jail.local
[sshd]
ignoreip = 127.0.0.1/8 ::1
enabled = true
port = all
logpath = /var/log/auth.log*
bantime = 10w
findtime = 10d
maxretry = 2
Y, al mirar con fail2ban-client status sshd
:/usr/local/etc/fail2ban # fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log /var/log/auth.log.2.bz2 /var/log/auth.log.1.bz2 /var/log/auth.log.6.bz2 /var/log/auth.log.3.bz2 /var/log/auth.log.4.bz2 /var/log/auth.log.5.bz2 /var/log/auth.log.0.bz2
`- Actions
|- Currently banned: 158
|- Total banned: 158
Parece que los archivos .bz también están incluidos... ¿los estará mirando...? Pensé, pero si lo piensas normalmente, es imposible (´・ω・`)
Todavía no lo he mirado en detalle, pero si es lo suficientemente inteligente como para mirar binarios comprimidos como zgrep, me alegraría.
Pensando eso, descomprimí con ls auth.log.*.bz2 | xargs bunzip2 y reinicié fail2ban, y el IP baneado no cambió, así que parece que también está mirando los logs binarios comprimidos.
En este tipo de software, usar expresiones regulares descuidadamente, especialmente .*, a menudo consume recursos innecesarios, por lo que recomiendo usar expresiones regulares explícitas.
Increíble máquina HeznerVPS
Terrible.
:/etc/fail2ban# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 814
| |- Total failed: 132602
| `- File list: /var/log/auth.log.1 /var/log/auth.log
`- Actions
|- Currently banned: 2503
|- Total banned: 2503
¿2503 IPs...?
Me siento feliz de haber obtenido una fuente de datos deliciosa.