![Fail2ban: regex usado em failregex não funciona (colchetes] problema?!)](https://rvso.com/image/777952/Fail2ban%3A%20regex%20usado%20em%20failregex%20n%C3%A3o%20funciona%20(colchetes%5D%20problema%3F!).png)
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.