Fail2ban: regex usado em failregex não funciona (colchetes] problema?!)

Fail2ban: regex usado em failregex não funciona (colchetes] problema?!)

Com o fail2ban, quero banir IPs com base no conteúdo do arquivo apache_access.log.

Este é um exemplo de linha que desejo corresponder às regras de regex:

197.221.254.56 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"

Então, este é meu arquivo de filtro personalizado fail2ban:

[Definition]

failregex = ^<ADDR> - - \[\S+ \S+\] "GET \/ HTTP\/1.0" 400 \S "-" "-"$
ignoreregex =

O regex funciona perfeitamente em sites como 'https://regex101.com/'

Mas quando eu uso as ferramentas fail2ban-regex como esta:

sudo fail2ban-regex /var/log/site1_access.log /etc/fail2ban/filter.d/les400enhttp1-0.conf

Eu combino com qualquer coisa.

Eu tentei com esta regra regex mais simples: ^<ADDR> - - \[\S+ \S+ E funciona!

Results
=======

Failregex: 10 total
|-  #) [# of hits] regular expression
|   1) [10] ^<ADDR> - - \[\S+ \S+
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [10] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 10 lines, 0 ignored, 10 matched, 0 missed
[processed in 0.03 sec]

Mas quando tento com o regex: ^<ADDR> - - \[\S+ \S+\](sracket quadrado esquerdo]adicionado à direita)) o comando 'fail2ban-regex'return me:

Lines: 10 lines, 0 ignored, 0 matched, 10 missed
[processed in 0.03 sec]

|- Missed line(s):
|  36.170.59.167 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  183.228.2.12 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  183.228.2.12 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  126.131.138.146 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  197.221.254.56 - - [13/Jun/2022:22:59:59 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  110.11.157.122 - - [13/Jun/2022:23:00:00 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  220.135.236.27 - - [13/Jun/2022:23:00:00 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  61.231.224.176 - - [13/Jun/2022:23:00:00 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  106.165.107.215 - - [13/Jun/2022:23:00:00 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
|  61.231.224.176 - - [13/Jun/2022:23:00:00 +0200] "GET / HTTP/1.0" 400 0 "-" "-"
`-

10 perdidos! nenhuma das minhas linhas de exemplo corresponde ao regex quando adiciono o colchete esquerdo ( ] )

Não entendo onde foi meu erro... obrigado por qualquer ajuda :)

Responder1

Seria melhor pegar o que você deseja da maneira clássica, por exemplo:

\[.*\]

A parte do padrão de data (que cria o problema que você notou) é aparentemente tratada de maneira especial pelo fail2ban.

Se você tentar o seguinte padrão:

\[\]

Você verá que também corresponde, ironicamente, o que significa que o padrão de data entre colchetes foi removido. Então não leve isso em consideração.

Você poderia usar algo assim:

^<ADDR> -.*\"(GET|POST|HEAD).*HTTP.*\"$

PS. Seu failregex está realmente comentado dentro de seu arquivo de filtro, certifique-se de descomentá-lo ao fazer suas alterações.

informação relacionada