O logpath do fail2ban pode usar regex (expressão regular)

3 min

language: ja bn en es hi pt ru zh-cn zh-tw

Olá, sou um incompetente.
Em cada OS tipo *nix, quando as configurações de rotação de log são diferentes, /var/log/auth.log pode ser arquivado rapidamente e não banir nada, então parece que você pode usar expressões regulares como as seguintes.

Como! 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

E, ao verificar com 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 os arquivos .bz também são alvo... mas será que ele os está lendo...? Pensei, mas normalmente, isso seria impossível (´・ω・`)
Ainda não verifiquei em detalhes, mas ficaria feliz se ele fosse inteligente o suficiente para ler binários compactados como o zgrep.

Pensando nisso, descompactei com ls auth.log.*.bz2 | xargs bunzip2 e reiniciei o fail2ban, mas o IP banido não mudou, então parece que ele está lendo os logs binários compactados.

Em softwares como este, usar expressões regulares descuidadamente, especialmente .* e similares, muitas vezes consome recursos desnecessários, então recomendo usar expressões regulares explícitas.

Máquina HeznerVPS Absurda

Assustador.

:/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...?
Sinto que obtive uma fonte de dados valiosa e estou feliz, Dos.